从包含多个字体的TTF文件中提取字体?

4
我有一个.ttf文件,当我在Windows中打开它时,右上角有一个选项可以选择字体的其中一种变体。如何将这些变体提取到自己单独的.ttf文件中?不同的变体都有不同的“字体名称”。查看图片描述
1个回答

6
那种字体不是字体集合,而是可变字体
可变字体不包含多个离散的字体(如字体集合),而是包含一个单一的字体,其中包括描述字形轮廓可以变化的方式以及设计空间的描述。例如,可变字体可能支持在设计空间中沿着权重从300到700(比如)作为一个轴,在第二个轴上沿着宽度从75到150(比如)进行变化。设计空间内的每个点都是一个“实例”。可变字体还可以具有一组命名实例,这些实例是字体设计师给出特定样式名称的设计空间内的实例。
在Windows字体预览器中,当它显示“OpenType Font Variations”时,上面的“Previous”和“Next”按钮将在字体中逐步浏览命名实例。
如果字体使用TrueType轮廓,那么字体数据包含'glyf'表中的轮廓数据,就像任何其他TrueType风格的字体一样,但也包含单独的'gvar'表中的delta数据。对于字形轮廓中的每个控制点,delta数据描述了给定控制点如何从设计空间中某些实例的默认位置移动。对于该实例和默认实例之间的其他实例,将使用线性插值来缩放这些增量。

因此,在显示文本时,会选择特定的实例,并且光栅化器会获取默认字形轮廓并使用'gvar'表中的增量数据按比例应用于这些轮廓的控制点,具体取决于所选实例。

(我仅提到了应用于字形轮廓的增量。字体中还可以应用于其他数据的增量,例如GPOS表中的字体或字形度量、定位数据等)

考虑到这一点,你要问的不是将集合中的单独字体提取出来的问题,而是如何导出可以通过选择特定实例然后应用该实例的所有缩放增量来派生的字体数据的问题。

Windows需要能够生成实例字体数据,以用于打印或生成PDF等场景。这是在内部完成的,没有公共API可以输出实例字体数据。
但是,有一些工具可以导出派生的实例字体数据。例如,FontTools中的instancer模块支持此功能。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接