OpenType 字体中有数项设置都与垂直方向的行距相关。本教程解释如何设置兼容的垂直度量。
在设计字体的某个阶段(最好在早期),您可能会遇到字符上方和下方空间有限的问题。例如,添加对越南语的支持可能具有挑战性,因为它有许多带有两个变音符号的大写字母。使用特殊的堆叠组合标记会有所帮助,但仍然重要的是在字体中设置正确的间距度量。
文字处理器、页面布局软件、电子阅读器、游戏引擎、网络浏览器、PDF 生成器和打印机驱动程序不使用相同的机制来确定行距。本教程提供信息和示例,展示哪些字体度量最适合您的字体。我们还讨论了使用 FontCreator 定义这些值是多么容易,但本教程中的建议也适用于其他字体编辑器。
多年来,OpenType 规范和与这些度量相关的建议都发生了变化,因此互联网上关于此主题有很多过时和不正确的信息。
在 OpenType 出现之前,有仅用于 Windows 的 TrueType 字体和用于 Macintosh 的 Postscript 字体。OpenType 被发明为通用(跨平台)基于矢量的字体格式,但它带有具有平台特定行为的兼容性/遗留度量。这就是为什么在 OpenType 字体资源中有三组间距度量:排版、Windows 和 Macintosh。
为了克服这些兼容性问题,OpenType 规范中引入了一个新标志。如果字体启用了"使用 typo 度量进行行距",我们强烈建议这样做,所有应用程序都应该使用这些跨平台值来确定默认行距。
如果字体设置了此标志"使用 typo 度量进行行距",则 Microsoft Word 使用排版值。否则,它使用 WinAscent 和 WinDescent 以及 LineGap 作为默认行距。
在 Windows 上,文本将在这些使用的上升器和下降器值上方被剪裁,因此确保所有字形轮廓都在视觉(非剪裁)区域内。
越来越多的应用程序使用排版间距度量值,但主要是遗留软件仍然使用 Windows 或 Macintosh 特定度量。为了获得一致的行距而不剪裁,我们建议采用以下方法。
Typo Ascender 和 Typo Descender 应该至少总和为"每 em 单位"(upem)。从覆盖字体支持的主要语言的所有字形中获取最大和最小垂直轮廓位置。通常扩展拉丁字符集,例如 Unicode 块基本拉丁语以及拉丁语-1 补充,就可以了。然后按比例增加值,使它们总计 upem。
将 Typo Line Gap 值设置为 upem 的 7% 到 25% 之间,以便所有三个排版值的总和构成良好的默认行距。
WinAscent 和 WinDescent 应该容纳所有字形的最大和最小垂直轮廓位置。按比例增加值,使 WinAscent - WinDecent 至少等于 TypoAscender - TypoDescender + TypoLineGap。
这些值代表字体创建者的设计意图,而不是任何计算值,单个字形可能会超过它们代表的限制。某些应用程序(主要是基于 Mac 的)使用或曾经使用这些度量。
只需将这些设置为匹配相应的排版间距度量值。
既然您更好地了解了如何设置垂直间距值,手动计算所有这些值仍然不容易。幸运的是,FontCreator 有一个按钮可以为您完成所有魔法:
根据您的喜好调整行距值,并确保您同意计算值。在 Windows、Macintosh、网络浏览器以及 Microsoft Word 和 Adobe InDesign 等应用程序上测试字体。
为样式链接的字体(例如常规、斜体、粗体和粗斜体字体)使用相同的值,以便在更改字体样式时文档布局不会重新流动。
某些字体(用于复杂脚本)可能包含基础字符和组合标记,当一起使用时可能会超过计算的限制。在这种情况下,您应该考虑增加间距度量。
其他要求适用于打算用于垂直布局的 CJK(中文、日文和韩文)字体。
您可能会发现不可能在不同应用程序之间获得一致布局和美观间距之间的良好平衡。如果轮廓太小或太大,您应该考虑增加或减少字形轮廓的大小。如果 CapHeight 小于 ½ upem,我们认为轮廓太小,如果超过 ¾ upem,则太大。
欢迎您提供反馈、改进建议以及与本教程和其他教程相关的问题;请将它们发布到 High-Logic 字体论坛。
2022 年 12 月 3 日更新 - 更新了文本和屏幕截图以反映 FontCreator 当前版本的更改