使用 fontforge 填充字体中缺失的字形

Filling in missing glyphs in fonts with fontforge

背景

我正在尝试使用以下 fontforge 脚本将 Google Noto Sans JP 字体从 .otf 转换为 .ttf

#!/usr/bin/env fontforge

Open()
CIDFlatten()
Generate(:r + ".ttf")
Close()

当我在 .otf 上调用 Open 时,我收到一大堆错误,说有很多缺失的字形:

No glyph with unicode U+07d22 in font
No glyph with unicode U+07d2f in font
No glyph with unicode U+07da0 in font
...

我的脚本将 .otf 转换为 .ttf,但是,果然,当我加载字体时,这些字符没有呈现(它们看起来像这样:[X])。

所以我想填补空白并将相同的字形复制到缺失的位置。

问题

所以我 运行 以下脚本尝试替换其中一个缺失的字形 (U+7d22) with an identical one (U+f96a):

#!/usr/bin/env fontforge

Open()
CIDFlatten()

Select(0uf96a)
Copy()
Select(0u7d22)
Paste()
SelectNone()

Generate(:r + ".ttf")
Close()

但是 fontforge 无法 select 不存在的字符 U+7d22:

Select: Character not found: U+7D22

有谁知道如何将字形复制到没有字形的代码点?

或者换句话说,有谁知道如何填补这种字体的空白吗?

原来可以"fill in the gaps"格式为ttf,所以我先转换字体,然后复制字形,像这样:

#!/usr/bin/env fontforge

Open()
CIDFlatten()
Generate(:r + ".ttf")
Close()

Open(:r + ".ttf")

Select(0uf96a)
Copy()
Select(0u7d22)
Paste()
SelectNone()

Generate(:r + ".ttf")
Close()