背景
我正在尝试使用以下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
有人知道如何将字形复制到没有字形的代码点吗?
换句话说,有人知道如何填补这种字体的空白吗?

最佳答案

事实证明,您可以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()

关于unicode - 使用fontforge填写字体中缺少的字形,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31725115/

10-12 15:28