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 上发生的情况。

一个简单的例子

让我们看一个智能字体的简单用例。 这是一个 Cormorant 的例子,分别启用了 (顶部) 和禁用了 (底部) OpenType 功能

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 被标准化为 Open Font Format。 https://www.iso.org/standard/66391.html

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

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

我刚刚在www.softerviews.org上更新了我的Sukhumala字体,发布了一个新版本,该版本使用风格集代替了上下文连字。 这样可以避免某些应用程序不允许禁用上下文连字,或者只能通过禁用所有连字才能禁用上下文连字的问题。

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

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

Creative Commons License本作品采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。
© . All rights reserved.