使用 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()
背景
我正在尝试使用以下 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()