【发布时间】:2015-10-21 21:21:34
【问题描述】:
背景
我正在尝试使用以下 fontforge 脚本将 Google Noto Sans JP 字体从 .otf 转换为 .ttf:
#!/usr/bin/env fontforge
Open($1)
CIDFlatten()
Generate($1: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+f96a) 替换缺失的字形之一 (U+7d22):
#!/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
有谁知道如何将字形复制到没有字形的代码点?
或者换句话说,有谁知道如何填补这个字体的空白?
【问题讨论】:
-
等一下,备份。 为什么您要从
otf转换为ttf? (字体会变大,所有字形轮廓都会有损地从三次贝塞尔曲线转换为二次贝塞尔曲线) -
仅仅因为我想在其中使用字体的程序支持
ttf而不是otf- 我真的不介意在退回到不太高级的格式时所涉及的损失。跨度> -
这就留下了“哪个程序?”的问题。因为 ttf 和 otf 都是 OpenType 字体,所以支持具有 ttf 扩展名但不具有 otf 扩展名的 OpenType 字体的程序值得作为“这就是我需要它的”问题陈述的一部分进行解释。
-
@Mike'Pomax'Kamermans 如果没有这样的上下文,这是一个有用的问题。我需要为 Magento 2 回答这样一个问题:Magento 2.3 支持的 PHP Zend_Pdf 没有实现日语、韩语或中文字符集,这意味着需要这种字体技巧,因为好的免费 .ttf 亚洲字符集很薄弱
-
不,你不知道:PDF,adobe 的格式,非常支持 otf,Adobe 的首选格式。事实上,它支持所有 OpenType 风格,因为 ttf 和 otf 都只是 opentype 字体。还有很多不错的免费 opentpye CJK 字体。
标签: unicode fonts truetype opentype fontforge