TTF 和其他“现代”字体系统,以及字体大小差异

平面设计 字体 墨景 svg 字体大小
2022-02-19 18:38:21

我没有接受过正式的(而且很少有非正式的)平面设计培训。

相当著名的计算机科学人 Donald Knuth 博士很久以前开发了一种字体描述系统,称为Metafont就其本身而言,这并不是很有趣,但关于 Metafont 的一个特点是可以描述字体,以便字体“实际”(矢量形式的字形)的产生可以在不同的点大小处产生不同的字母形状。例如,衬线大小可能会发生变化,或者罗马字体的细/粗比在较大的磅值下可能会更加显着,等等。因此,您需要进行字体描述,然后生成不同磅值的单独字体文件以用于渲染实际文件。

我在这里要确认的是,像 TrueType、OpenType 或 Type1 这样的矢量格式(我现在真的只关心 ttf)没有任何方法可以做到这一点。更具体地说,我想确认当我向线条艺术添加一些文本(特别是通过 Inkscape 的 SVG,但它基本上是相同的)时,做这两件事中的一件或另一件没有实际区别Illustrator 等的问题):

  1. 根据上下文,选择字体大小并创建文本元素,使其以正确的大小“出生”;
  2. 生成任意大小的文本元素,然后将其调整为通用对象以调整它以适应

这似乎是一个疯狂的问题,但我刚刚意识到这是一个困扰我 25 年的唠叨“事实”,我会尽快停止担心。

编辑——当我说“调整大小”时,我的意思当然是在保持原始比例的同时调整大小。

3个回答

您的基本问题是是否以最终尺寸创建您的类型并将其变成轮廓,或者以任意尺寸创建它,勾勒出轮廓并缩放以适应。这个问题的答案特别是如果您正在创建 SVG 以在屏幕上查看,那么如果您使用的是 TrueType 字体,那么它不会产生太大的实际差异。

Metafont 概念作为 Multiple Master (Adobe) 和 Quickdraw (Apple) 字体在“主流”印刷世界中短暂地浮出水面并没有成功,但很快就消失了。当前使用的两种字体技术 Type 1 和 TrueType 没有您所询问的类型的变形能力。

一些字体有“光学”尺寸可供选择,它们的字形是在一个狭窄的尺寸范围内绘制以实现最佳外观,就像金属字体曾经以不同的尺寸被切割成不同的尺寸一样。Caption、Small Text、Text、Subhead 和 Display 是常见的名称。他们确实有所作为。

然而,Metafonts 在LaTex/TeX社区中非常活跃。如果您有兴趣四处探索,可以在tex.SE上询问或跟进 LaTeX 项目主页上的链接。当前的几个 TeX 包可以从指定大小的元字体中生成 Type 1 和/或 TrueType,然后您可以在 Inkscape 中使用它们。

Metafont 概念(修改字形的实际形状)和提示(旨在使字形在不同光栅分辨率下呈现时看起来相同)之间存在巨大差异。没有不尊重斯科特,但我认为暗示,如果不是红鲱鱼,至少在这种情况下是粉红色的大比目鱼。那么,这个答案的其余部分是为了兴趣和澄清,而不是直接回答你的问题。

提示巧妙地改变了单个字形的轮廓变成点线的方式,因此最终结果在屏幕上、激光打印机或 2400 dpi 制版机上看起来几乎相同。在Thomas Phinney 的一篇旧文章出版革命内幕”的这则轶事中,有一些关于这个主题的重要历史信息顺便说一句,这本书本身就是一本很好的读物。

正如 Scott 所指出的,在低分辨率设备(屏幕、办公激光设备等)上,点的大小都相同并且位于固定网格中,通过提示可以大大改善字体渲染。Postscript Type 1 中内置的暗示和其他一些出色的工程技巧(特别是在当时,因此 Adob​​e 许可并内置于原始 Apple Laserwriter 中的第一个 Linotype 字体看起来是正确的)可以说创造了桌面出版革命。它使良好的排版成为人们可以在高端照排机以外的设备上使用廉价计算机完成的事情。

一旦文本被转换为简单的矢量形状,无论引擎进行渲染,它都会像任何其他矢量一样被处理。在低分辨率设备上的小尺寸下,缺少提示会使笔划显得太粗。这就是为什么您会经常看到将文本转换为轮廓的建议,因为“轮廓文本看起来太粗”。这实际上仅适用于低分辨率设备,例如办公室激光打印机,但很少提及此限制。

上世纪 90 年代曾涉足 Multiple Master 字体。这些是动态生成的字体,可以根据字体大小缩放衬线、计数器和其他类型数据。多个大师流行了几年,但由于其他软件的问题而死。今天,多主机不是很常见,实际上会给现代操作系统带来问题。很少有多个大师在野外使用。如果它们在使用中,它们通常处于封闭环境中或仅供内部使用。

现代,结构良好的字体包含暗示。我发布“结构良好”是因为那里有十亿多种字体,它们的结构非常糟糕,并且经常会丢失大量数据。提示允许将额外的数据发送到输出设备。该数据包含路径方向和像素插值偏好等。类型的提示通常会克服可能在特定尺寸下发生的奇怪现象。缺乏提示通常在较小的字体大小时很明显。

旁注:提示是最好使用实时类型而不仅仅是类型轮廓的一个重要原因。一旦字体被勾勒出来,它就不再包含任何提示信息。

对于大多数用途,您的 #1 和 #2 之间没有显着差异,前提是字体构造良好并且在输出时可以使用提示。在大多数应用程序中,Live 类型是基于矢量的。这意味着,一旦将类型发送到输出设备上,就会根据当前显示大小和输出设备的分辨率重新计算输出所需的数学方程。

我不相信这是任何流行字体文件格式的特性。不过,这是一个有趣的想法。通常,具有不同尺寸版本的字体将具有用于大量使用的“显示”版本。但这是一个单独的字体文件。