Skip to content

Warcraft Font Merger,魔兽世界字体合并/补全工具。

License

Notifications You must be signed in to change notification settings

BeitDina/Warcraft-Font-Merger

 
 

Repository files navigation

魔兽世界字体合并/补全工具
(Warcraft Font Merger, aka “WFM”)

下载地址

下载最新版的字体合并补全工具并解压缩。

字体合并补全工具 Windows 和 macOS 各有 5 个版本,各个版本的自带字库不同。

  • WarFontMerger-SC1-版本号.7z:简体中文压缩字库(覆盖 GB18030,字体文件采用压缩技术,体积小但字形质量一般)。
  • WarFontMerger-SC2-版本号.7z:简体中文标准字库(覆盖 GB18030,字形质量较好,推荐)。
  • WarFontMerger-SC3-版本号.7z:简体中文大字库(覆盖中日韩各国字符,字形和标准字库一致,体积稍大)。
  • WarFontMerger-TC-版本号.7z:繁体中文大字库(覆盖中日韩各国字符,字形采用台湾标准,体积稍大)。
  • WarFontMerger-Classic-版本号.7z:传统字形大字库(覆盖中日韩各国字符,字形采用传统印刷体风格,体积稍大)。

快速入门(Windows)

合并两个字体并补全

打开字体合并补全工具文件夹,选中需要合并的两个字体,然后拖动英文字体合并补全.bat 上,等候片刻即可得到合并完成的字体 out.ttf

操作示意: 合并补全操作示意

合并补全之后的字体预览图,不论是西文部分还是汉字部分都不缺字。

注:

  1. 如果想要只合并两个字体不补全,选中需要合并的两个字体,然后拖动英文字体合并.bat 上即可。
  2. 字体补全工具默认使用 latin.ttf(西文)和 cjk.ttf(中日韩)来补全字体。上面的操作示意图中替换了这两个字体,以更好地匹配原来的字体风格。
  3. 先合并再补全,和一次性合并补全的效果不同。一次性合并补全时,优先级依次为:第一个字体、latin.ttf、第二个字体、cjk.ttf。先合并再补全时,优先级依次为:第一个字体、第二个字体、latin.ttfcjk.ttf

补全缺字的字体

打开字体合并补全工具文件夹,将需要补全的字体拖动到 补全.bat 上,等候片刻即可得到补全完成的字体 out.ttf

生成字体包

打开字体合并补全工具文件夹,把准备好的字体拖动到 打包.bat 上,然后将生成的 Fonts 文件夹移动到 World of Warcraft\_retail_\ 下面。

快速入门(macOS)

允许未经签名的 WFM 运行

在较新的 macOS 系统上,默认不允许运行未经签名的应用程序。如果遇到这种情况,可以先手动运行一次以下程序:

  • merge-otd
  • otfccdump
  • otfccbuild
  • 想要运行的 command 文件(补全.command合并补全.command合并.command打包.command)。

具体的方法是:按住 Control 键单击需要运行的程序,在弹出的菜单中选择 “打开”(这时程序会因为参数错误而运行失败,不必理会),然后关闭程序窗口。

参见 Open a Mac app from an unidentified developer

使用方法

macOS 下的使用方法和 Windows 稍有不同。

首先双击打开相应的 .command 文件,然后依次按照提示将字体文件拖动到命令窗口中,并按回车键确认。

等候片刻即可得到补全完成的字体 out.ttf

操作示意: macOS 操作示意

特性

  • 轻量级:三个可执行文件,总共只有 2 MB 多一点。自带字库的压缩包不超过 10 MB。
  • 多功能:既可以合并字体,也可以用来补全缺字的字体。
  • 速度快:中英文字体的合并补全只需要 20 秒。

限制

  • 不提供预编译的 32 位版本。WFM 不可避免地需要操纵汉字,而汉字是一个非常庞大的集合,读取并操作汉字需要巨大的内存,32 位程序极易因为超出内存上限而崩溃。

编译和运行

编译

用 GCC 或 Clang

g++ src/merge-otd.cpp src/merge-name.cpp src/iostream.cpp -Isrc/ -std=c++17 -O2 -o merge-otd

或者用 Visual C++

cl src\merge-otd.cpp src\merge-name.cpp src\iostream.cpp /Isrc\ /std:c++17 /EHsc /O2 /Fe:merge-otd.exe

运行(需要 otfcc

合并两个字体:

otfccdump 西文字体.ttf -o base.otd
otfccdump 中文字体.ttf -o cjk.otd
./merge-otd base.otd cjk.otd
otfccbuild base.otd -O2 -o 合并之后的字体.ttf
rm *.otd

补全缺字的字体:

otfccdump 需要补全的字体.ttf -o base.otd
otfccdump 收字很全的西文字体.ttf -o latin.otd
otfccdump 收字很全的中文字体.ttf -o cjk.otd
./merge-otd base.otd latin.otd cjk.otd
otfccbuild base.otd -O2 -o 补全之后的字体.ttf
rm *.otd

合并字体文件的数量原则上只受底层限制(命令行参数、内存、OpenType 字符数量等):

otfccdump 基本拉丁字母.ttf -o base.otd
otfccdump 扩展拉丁字母.ttf -o 1.otd
otfccdump 希腊字母.ttf     -o 2.otd
otfccdump 西里尔字母.ttf   -o 3.otd
otfccdump 假名.ttf         -o 4.otd
otfccdump 基本汉字.ttf     -o 5.otd
otfccdump 扩展汉字.ttf     -o 6.otd
otfccdump 谚文.ttf         -o 7.otd
otfccdump 其他CJK符号.ttf  -o 8.otd
./merge-otd base.otd 1.otd 2.otd 3.otd 4.otd 5.otd 6.otd 7.otd 8.otd
otfccbuild base.otd -O2 -o 合并之后的字体.ttf
rm *.otd

感谢

Belleve Invis李阿玲编写的 otfcc 用于解析和生成 OpenType 字体文件。

Niels Lohmannjson 库提供了非常漂亮的 C++ JSON 接口。本工具使用了修改版的 json.hpp,容许非标准编码的字符。

TrueType 和 PostScript 曲线相互转换的算法来自 AFDKOFontello。这两个算法有配合 otfcc 使用的独立版本,可用于 OpenType/TT 和 OpenType/CFF 字体的相互转换。

Google 提供了大量的开源字体,Adobe 提供了高质量的思源黑体

About

Warcraft Font Merger,魔兽世界字体合并/补全工具。

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C++ 96.1%
  • Python 2.2%
  • Shell 1.5%
  • Other 0.2%