OpenType 字体系统的工作原理

每个人都知道字体是什么,但您知道它们是如何工作的吗?了解数字排版的基础知识。
637 位读者喜欢这个。
Open source fonts

Jason Baker 为 Opensource.com 制作。CC-BY-SA 4.0。

数字排版是我们每天都在使用的东西,但我们很少有人了解数字字体是如何工作的。本文对 OpenType 进行了基础、快速、粗略、过度简化(但希望有用)的介绍——它是什么,以及如何使用免费、自由和开源软件 (FLOSS) 来利用其功能。这里提到的所有字体也都是 FLOSS。

什么是 OpenType?

在最基本的层面上,数字字体是不同字形的“容器”,以及有关如何使用它们的额外信息。每个字形都由一系列点和连接这些点的规则表示。我不会深入研究定义这些“连接”的不同方法,也不会深入研究我们是如何走到这一步的(软件开发的历史可能很混乱),但基本上有两种规则:抛物线段(二次 贝塞尔曲线)或三次函数(三次贝塞尔曲线)。

TTF 文件格式,通常称为 TrueType 字体,只能使用二次贝塞尔曲线,而 OTF 文件格式,称为 OpenType 字体,则同时支持两者。

这里我们需要注意我们所讨论的内容:“OpenType”一词不仅指文件格式,还指字体作为一个整体的高级属性(即,前面提到的“额外信息”)。

事实上,除了 OpenType 文件格式之外,还有替换表,例如,告诉使用该字体的软件用相应的印刷连字替换两个字符;字符的形状需要根据其周围的字符(其“上下文替代”)进行更改;或者当您用希腊语书写时,单词末尾的 σ 必须替换为 ς。这就是“智能字体”一词的含义。

而且,更令人困惑的是,在 TrueType 字体中包含 OpenType 表格是可能的 例如 Junicode 上发生的情况。

一个快速示例

让我们看一个智能字体应用的快速示例。这是一个启用(顶部)和禁用(底部)OpenType 功能的 Cormorant 示例

Example of OpenType features

opensource.com

每个 OpenType 属性都有其自己的“标签”,用于激活这些“特殊功能”。其中一些标签默认启用(例如用于普通连字的 liga 或用于上下文连字的 clig),而其他标签必须手动启用。

Dario Taraborelli 的 在 LaTeX 中访问 OpenType 字体功能 中可以找到 OpenType 标签和名称的部分列表。

查询字体

找出 OpenType 字体的特性很简单。您只需要 otfinfo 命令,该命令包含在 lcdf typetools 包中(在我的 openSUSE 系统上,它安装为 texlive-lcdftypetools)。使用它非常简单:在命令行中,发出类似这样的命令

otfinfo [option] /path/to/the/font

选项 -s 提供字体支持的语言,而 -f 告诉我们哪些 OpenType 选项可用。字体许可证信息通过 -i 选项显示。

如果字体路径包含空格,请使用反斜杠“转义”该空格。例如,要了解安装在 ~/.fonts/s/ 文件夹中的 Sukhumala Regular.otf 提供了什么,只需在终端中写入

otfinfo -f ~/.fonts/s/Sukhumala\ Regular.otf

在 LibreOffice Writer 中使用 OpenType 表格

LibreOffice 5.3 版本对 OpenType 提供了良好的支持。它不是完全“用户友好”的,但也不是那么难以理解,并且它提供了如此强大的排版功能,以至于不应被忽视。

要在 Vollkorn 上同时激活“风格集”1 和 11(请参见下面的屏幕截图),请在字体名称框中写入

Vollkorn:ss01&ss11

冒号在扩展字体名称上启动“标签部分”,而 & 符号允许我们使用多个标签。

但这还不是全部。您还可以禁用任何默认选项。例如,Sukhumala 字体有一些奇怪的上下文连字,它们将 aa 变为 ā,ii 变为 ī,uu 变为 ū。要禁用 Sukhumala 上的上下文连字,请在相应的 OpenType 标签 clig 前面添加破折号

Sukhumala:-clig

就是这样。正如我之前所说,它不是完全用户友好的,特别是考虑到字体名称框相当小,但它确实有效!

并且不要忘记在样式中使用所有这些:直接格式化 是良好格式化的敌人。我的意思是,除非您正在为一篇关于排版的短文准备快速屏幕截图。在这种情况下,可以。但仅在这种情况下。

Using OpenType on LibreOffice Writer

opensource.com

还有更多

一个有趣的 OpenType 标签是“size”,遗憾的是,在 LibreOffice 上尚无法使用。“size”功能可以自动选择 光学尺寸,这是一种字体系列,为不同的磅值大小提供不同的设计。很少有字体提供此选项(一些 GUST 字体,例如 Latin ModernAntykwa Półtawskiego;一个处于开发初始阶段的有趣项目,名为 Coelacanth;或者,在较小程度上,EB Garamond),但它们都很棒。目前,享受此属性的唯一方法是通过更高级的布局系统,例如 XeTeX。在 XeTeX 上使用 OpenType 是一个非常大的主题;fontspec 手册(处理 XeTeX 和 LuaTeX 上的字体选择和配置的软件包)超过 120 页,所以…今天不行。

是的,Scribus 1.5.3 版本增加了对 OpenType 的支持(除了脚注和其他内容),但这仍然是我需要探索的东西。

RGB-es, aka the Tolkian Penguin
在网络上,我被称为 RGB、RGB-es 或 el pingüino tolkiano(托尔金企鹅)。我主要用西班牙语写作,但也用英语和意大利语写作,内容关于自由软件、文本处理和排版。

10 条评论

Scribus 最棒的地方在于它可以自动检测这些 OTF 功能。您很快就会发现并非所有 OTF 字体都具有这些功能,并且它们所具有的功能因字体而异。
在新的“文本属性”调色板中,有一个“字体功能”部分,您可以在其中选择连字、旧式数字以及其他可用的内容。

的确!我真的需要开始学习如何使用 Scribus,现在一些重要的功能终于到位了,我没有借口了!

回复 ,作者 Greg P

嗨!排版工具栏仅适用于 Linux Libertine G 和 Linux Biolinum G,并且以它们的 Graphite 功能为中心。一些 Graphite 标签与相应的 OpenType 标签具有相同的名称,也许这就是它似乎与其他字体一起工作的原因,但该扩展程序未维护(与上面提到的 Graphite 字体一样),因此在使用时请小心。

此致,
Ricardo

回复 ,作者 JoWa (未验证)

Open Type 使用了 1990 年代的智能字体理念:Apple QuickDraw GX 和 Adobe Multi Master 字体。

OpenType 来自 1990 年代。微软开发了 TrueType Open,并在 Windows 95 中发布。https://www.microsoft.com/typography/tt/win95tt.aspx

1996 年,Adobe 加入微软,进一步开发 TrueType Open,以包含对 TrueType 中使用的曲线(由 Apple 于 1987-1989 年开发)和 PostScript 字体中使用的曲线的支持,并将​​其重命名为 OpenType。Adobe 也开始将其 Font Folio 转换为 OpenType。OpenType 被标准化为开放字体格式。https://www.iso.org/standard/66391.html

回复 ,作者 Châu (未验证)

嗨,我是 Sukhumala OpenType 字体的作者,该字体使用上下文连字来表示 Pali 语的 Velthuis 编码。Pali 学者会使用 Velthuis 系统将 Sukhumāla 这个词写成 Sukhumaala。

我刚刚在 www.softerviews.org 上更新了我的 Sukhumala 字体,新版本使用了风格集而不是上下文连字。这避免了应用程序不允许禁用上下文连字,或仅允许通过禁用所有连字来禁用上下文连字的问题。

最新版本还改进了分数功能,以支持简单的公式,如 (a+b)/(c-d)。

完美!非常感谢您的字体,它们都很棒!

回复 ,作者 Bhikkhu Pesala (未验证)

我是 Sukhumala 的作者。在最新的 2.30 版本中,用于 Pali 语 Velthuis 编码的上下文连字已替换为风格集。这些默认情况下未启用,因此不会在无法禁用上下文连字而不禁用所有连字的应用程序中引起问题。

Creative Commons 许可本作品根据 Creative Commons 署名-相同方式共享 4.0 国际许可协议获得许可。
© . All rights reserved.