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 被标准化为开放字体格式。https://www.iso.org/standard/66391.html

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

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

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

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

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

回复 作者 Bhikkhu Pesala (未验证)

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

Creative Commons License本作品根据 Creative Commons Attribution-Share Alike 4.0 International License 获得许可。
© . All rights reserved.