合并两种字体

PHP*_*Pst 49 fonts

如何自动组合两种字体,以便在第一种字体中不可用但在第二种字体中可用的字形可以合并到第一种字体中?

dse*_*t0x 52

这对于fontforge 来说是一项简单的任务。

来自评论的附录:在合并之前,首先在两种字体中单击 Element > Font info... 以查看 em size 等值是否匹配。否则,更新任一字体以匹配其他字体的值。这可以防止不同字符大小等问题。此信息可能应该添加到答案中。– 克里斯坦

首先,您要打开缺少字形的字体并选择Element -> Merge Fonts。在此示例中,缺少E和的字形F元素->合并字体

选择要从中提取字形的字体。系统会询问您是否要保留现有字距调整;您很可能想在No此处选择,但如果您得到奇怪的结果,请关闭 fontforge 并使用Yes.字距调整对话框

稍后应添加缺失的字形:结果在主 fontforge 窗口

最后,File -> Generate Fonts将您的字体导出到所需位置。

  • 在合并之前,首先在两种字体中单击元素 > 字体信息...,以查看 em size 等值是否匹配。否则,更新任一字体以匹配其他字体的值。这可以防止不同字符大小等问题。此信息可能应该添加到答案中。 (4认同)
  • 这似乎只有在字体具有相似的 em 高度时才有效,否则字形变得很时髦。 (2认同)

not*_*bit 9

还可以查看 Google 的Google Noto 字体项目及其Noto Tools merge_fonts.py脚本。

merge.py从FontTools项目。


Faw*_*med 5

  1. 安装FontForge
  2. 它通常安装在C:\Program Files (x86)\FontForgeBuilds\bin,因此将其添加到您的路径环境变量中(仅适用于 Windows 用户)。
  3. 将以下代码粘贴到名为的文件中 mergefonts.ff
#!/usr/local/bin/fontforge
Open($1)
SelectAll()
ScaleToEm(Strtol($3))
Generate("1.ttf")
Close()
Open($2)
SelectAll()
ScaleToEm(Strtol($3))
Generate("2.ttf")
Close()
Open("1.ttf")
MergeFonts("2.ttf")
Generate($4)
Close()
Run Code Online (Sandbox Code Playgroud)
  1. mergefonts.ff 脚本用法:
fontforge -lang=ff -script mergefonts.ff <font1> <font2> <font_size_in_em> <output_merged_font>
Run Code Online (Sandbox Code Playgroud)

例子:

fontforge -lang=ff -script mergefonts.ff font1.ttf font2.ttf 1000 mergedfont.ttf
Run Code Online (Sandbox Code Playgroud)

参考资料:
Link1
Link2
Link3