如何使用Fontforge脚本将.otf转换为.ttf(使用Postscript大纲)?

时间:2015-09-26 10:34:46

标签: fonts fontforge

我尝试使用Fontforge脚本将.otf字体转换为.ttf字体(使用Postscript大纲)。

默认选项转换为带有Truetype轮廓的.ttf。

如果有人能给出一些指示,我将不胜感激。

1 个答案:

答案 0 :(得分:4)

OpenType如何工作的快速教训:OpenType有两种:OpenType-with-CFF-Data和OpenType-with-Truetype-Outlines

  1. 带有CFF块的OpenType字体使用Type2“charstring”轮廓定义,允许进行三次曲线建模。它们类似于Postscript,但在技术上并不是Postscript。人们只是因为历史原因而一直称呼它。
  2. 带有TrueType表的OpenType字体使用TrueType轮廓定义,仅允许二次曲线建模。

    2018编辑:现在还有两种类型:OpenType-with-SVG-Outlines,与“SVG字体”相同)和OpenType -with-CFF2-Outlines,这是对CFF的一次改革,专门用于OpenType而不是嵌入式不可知轮廓语言)

  3. 这两个轮廓模型是互斥的,因此您可以选择自己喜欢的模型,但不能同时选择两者。

    现在,按照惯例,CFF-OT(和CFF2-OT)字体使用.otf扩展名,而TTF-OT(和SVG-OT)使用.ttf扩展名,但它们都是只是OpenType字体,只在CFF / TFF(/ CFF2 / SVG)数据块中有所不同。因此,当我们谈论otf字体时,我们的意思是“Postscript opentype字体”(这是一个误称,因为CFF使用的是Type2语言,而不是PostScript语言),当我们谈论ttf字体时,我们的意思是“TrueType opentype字体”。但是,要实现的一件重要事情是扩展名不以任何方式定义字体;只有它的内容。我们可以将字体重命名为.gif扩展名,它仍然是内容指定的字体。因此,对于字体引擎,扩展名无关紧要,就像图像预览器很乐意打开.jpg文件一样,即使它具有.png扩展名。

    要求将otf转换成ttf按惯例是一个“postscript”字体(但不是真的,它是Type2),按照惯例,它是一种“truetype”字体,因此不能包含“postscript”(但仍然是真正的Type2),添加了ttf应该包含“postscript轮廓”的请求,没有任何意义:它就像是要求如何转换软铅笔成为一支坚硬的铅笔,但是领导柔和:你已经完成了,你问的是如何创造你开始的东西。

    带有“postscript”轮廓的Opentype字体为otf

    当然,你可以将CFF字体转换为TrueType字体,但这是一个有损转换:在数学上不可能将三次贝塞尔曲线(在Type2中使用)完美转换为二次贝塞尔曲线(用于TrueType),所以你最终会得到一个与原始字体近似的字体。

    所以我的建议是:不要打扰。任何支持OpenType字体的引擎都支持CFF和TrueType,并且转换为.ttf不会做任何有意义的事情,同时要么炸毁字体大小(用于感知上完美的转换),要么因为有损的轮廓而使字体与原始字体不正确转换。