使用fontforge

时间:2015-07-30 13:26:30

标签: unicode fonts true-type-fonts opentype fontforge

背景

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

#!/usr/bin/env fontforge

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

当我在Open上拨打.otf时,我收到大量错误,说明有很多字形缺失:

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)替换其中一个缺少的字形(U+f96a):

#!/usr/bin/env fontforge

Open($1)
CIDFlatten()

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

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

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

Select: Character not found: U+7D22

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

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

1 个答案:

答案 0 :(得分:2)

事实证明,你可以填补空白"以ttf格式,所以我首先转换字体,然后复制字形,如下所示:

#!/usr/bin/env fontforge

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

Open($1:r + ".ttf")

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

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