字体命名

  • by Rainer Erich Scheichelbauer
  • Tutorial

字体名称是很重要的,它决定了字体菜单中的分组和顺序,而这直接影响你的字体将如何呈现给用户。在一款字体中,字体名称被存储在六个不同的地方,这一点已经相当困难;或者实际上还会有更多的地方,这就更复杂了。历史原因,你懂的。

哦还有,不同应用程序会以不同的方式读取字体名称。祝你好运。

译者注:本文中需区分“字体家族”(typeface / font family)和“单款字体”(font)的概念,中文中通常习惯将两者都称作“字体”。简而言之,“字体家族”是一整套的设计,其中包含若干款“字体”,即单独的字体文件。

家族名称和样式名称

基本上,带有相同家族名称的字体会以某种方式在用户界面上被编成一组。至于具体是怎么做的,当然了,取决于使用字体的软件。你可以在“文件 > 字体信息 > 字体 > 家族名称”中设置字体的家族名称

字体家族中的各款字体由它们的样式名称区分,在“文件 > 字体信息 > 字体子样”当中设置。每个子样都有一个“样式名称”字段。典型的样式名称包括:Regular、Italic、Bold、Medium、Light Italic、Display Bold、Caption Italic 等等。换句话说,是这些关键词的某种组合:

  • 字重:Thin、Light、Extralight、Regular、Medium、Semibold、Bold、Extrabold、Heavy、Black 等等。
  • 字宽:Compressed、Condensed、Extended、Expanded 等等。
  • 倾斜:Italic、Oblique、Upright Italic(直立意大利体)、Backslant(反向倾斜)等等。
  • 视觉尺寸(Optical Size):Display、Text、Caption、Small。

当然,你可以使用任意的样式名称。如果对你的设计而言有意义的话,你也可以命名为诸如“毡尖笔划”、“图案填充”、“轮廓”或任何你喜欢的名称。对于现代软件而言,带有发音符号的西文字母也不会造成什么问题。

如果你想让某些子样具有不同的家族名称(相对于在“文件 > 字体信息 > 字体 > 家族名称”中设置的默认家族名称),你可以添加一条名为“familyName”的自定义参数。

所以,你会得到一个像这样的命名方案:

家族名称 样式名称
MyFontFamily Regular
MyFontFamily Italic
MyFontFamily Bold
MyFontFamily Bold Italic
MyFontFamily Semibold
MyFontFamily Semibold Italic
MyFontFamily Black
MyFontFamily Black Italic
MyFontFamily Condensed
MyFontFamily Condensed Italic
MyFontFamily Condensed Bold
MyFontFamily Condensed Bold Italic
MyFontFamily Condensed Semibold Italic
MyFontFamily Condensed Black
MyFontFamily Condensed Black Italic

本地化名称

不过,为了兼容性的最大化,有一点必须要说一下:保持家族名称样式名称由纯 ASCII 字符组成、是英文并且简短。如果你想突破这个限制,并且使用非 ASCII 字符(例如使用日文、亚美尼亚文或捷克文),最好的办法是添加本地化名称

要本地化家族名称,前往“文件 > 字体信息 > 字体”,通过点击“自定义参数”处的“+”按钮添加一条自定义参数,在“属性”下拉菜单中选择“localizedFamilyName”,然后点击“值”区域来选择语言并设定名称:

为你希望显示不同于默认家族名称的每种语言添加一条自定义参数。可选的语言有限,因为这一技术文档是在很久很久以前、在另一个星系写成的。它支持冰岛语和南非语,甚至还能区分弗拉芒语和荷兰语,但是并不支持马来语、蒙古语或马其顿语。很抱歉,但我们对此也无能为力。

要本地化样式名称,在“文件 > 字体信息 > 字体子样”中为相应的字体添加“localizedStyleName”自定义参数。

你也可以在子样中家族名称进行本地化。即,自定义参数“localizedFamilyName”在“文件 > 字体信息 > 字体子样 > 自定义参数”中也可用。如果你想让某些子样有不同的家族名称,并且也要本地化它们,那么这将非常有用。

与此同时,你还可以“本地化”设计师姓名的条目。怎么做呢?当然是使用 localizedDesigner 自定义参数。还有一个可以本地化的条目,我们会在下文解释,看看你能不能找到它。

样式链接

你可以使用所谓的“样式链接”设置字体家族中每一款字体之间的关系。你可以定义某个子样为另一个子样的粗体、斜体或粗斜体。这在“文件 > 字体信息 > 字体子样”中的“样式链接”区域很容易实现。在这里,你只需要勾选 Bold 和/或 Italic 的复选框,然后填入相关子样的名称,比如:

通过样式链接,你可以建立所谓的“RIBBI 家族”。RIBBI 是“Regular、Italic、Bold 和 Bold Italic”的缩写。这看上去非常局限,但其目的是在 Office 软件中启用“粗体”和“斜体”按钮。如果你正确地做了这一步,你便可以在“文本编辑”中使用 Cmd-B 在常规体和粗体间切换,或在 Windows 上的 Word 中使用 Ctrl-I 切换直立和斜体。顺便说,Adobe Indesign 使用 Cmd-Shift-B 和 Cmd-Shift-I 实现同样功能。

换句话说,样式链接仅能在四种样式之间建立关系,而无法处理更多样式。另外要注意的是,链接的样式不会在 Microsoft Office 的字体菜单中显示,仅有 Regular 可见,链接的样式只能通过 B 和 I 按钮(或相应的快捷键)得到。因此,我们建议使用以下方式来链接样式:

  • “Bold”子样是“Regular”的 Bold
  • “Italic”子样是“Regular”的 Italic
  • “Bold Italic”子样是“Regular”的 BoldItalic。(这里注意:并不是 Italic 的 Bold 或 Bold 的 Italic。)
  • 所有其他的“Italic”都是相应直立子样的 Italic,例如“Semibold Italic”是“Semibold”的 Italic
  • 对于其他的直立子样,将它们的设置留空。

所以如果一切正确,我们的字体家族设置看上去像这样:

家族名称 样式名称 样式链接
MyFontFamily Regular -
MyFontFamily Italic Regular 的 Italic
MyFontFamily Bold Regular 的 Bold
MyFontFamily Bold Italic Regular 的 BoldItalic
MyFontFamily Semibold -
MyFontFamily Semibold Italic Semibold 的 Italic
MyFontFamily Black -
MyFontFamily Black Italic Black 的 Italic
MyFontFamily Condensed -
MyFontFamily Condensed Italic Condensed 的 Italic
MyFontFamily Condensed Bold Condensed 的 Bold
MyFontFamily Condensed Bold Italic Condensed 的 BoldItalic
MyFontFamily Condensed Semibold -
MyFontFamily Condensed Semibold Italic Condensed Semibold 的 Italic
MyFontFamily Condensed Black -
MyFontFamily Condensed Black Italic Condensed Black 的 Italic

专业提示:不用在样式链接文本框中填写“Regular”,留空即可, Glyphs 将认定它是常规体。这样就减少了一个可能出错的地方。

为 Windows 及 Office 软件命名

Microsoft Word 目前专注于家族名称样式名称,或者“WWSFamilyName”和“WWSSubfamilyName”,如果有的话。WWS 代表字重(Weight)、字宽(Width)和倾斜(Slope)。

最好了解:在技术领域,家族名称样式名称通常用 ID 1 和 ID 2 代称。术语“名称 ID”指的是“OpenType 名称表”中的条目,编译过的字体文件会以这种方式存储名称信息。要了解更多信息,请参阅名称表的技术文档.

最好了解:WWS 名称以“ID 21”(WWSFamilyName)和“ID 22”(WWSSubfamilyName)存储。

Microsoft 的字体菜单所采用的字体家族模型中,所能够包含的成员仅有 Regular、Bold、Italic 和 Bold Italic,即上文中“样式链接”所链接起来的 RIBBI 样式。其他所有不属于 RIBBI 的样式必须被算作另外的家族。因此,Microsoft 官方建议的命名策略为:

家族名称(ID 1) 样式名称(ID 2)
MyFontFamily Regular
MyFontFamily Italic
MyFontFamily Bold
MyFontFamily Bold Italic
MyFontFamily Semibold Regular
MyFontFamily Semibold Italic
MyFontFamily Black Regular
MyFontFamily Black Italic
MyFontFamily Condensed Regular
MyFontFamily Condensed Italic
MyFontFamily Condensed Bold
MyFontFamily Condensed Bold Italic
MyFontFamily Condensed Semibold Regular
MyFontFamily Condensed Semibold Italic
MyFontFamily Condensed Black Regular
MyFontFamily Condensed Black Italic

诸如此类。换句话说,样式名称(ID 2)仅能是 RIBBI 样式之一。其他关于字重、字宽和倾斜的信息都算在家族名称(ID 1)中。当然你也会发现,这个表和你之前在前文中看到的那个很不一样。这里有一些问题,不太容易处理。你需要添加相当数量的“familyName”参数,更糟的是,无法在“文件 > 字体信息 > 字体子样”中进行管理,因为大部分的样式名称都是相同的。而且,在 Word 中正确的部分,在其他软件中可能并不理想,比如桌面出版软件。

不过等一下……

好消息是:你并不需要做这些。Glyphs 会在导出时自动料理这些事情。根据你的样式链接信息,名称 ID 1 和 2 会相应地设置在命名表中的 Windows 名称中。(没错,名称表中的信息会被存储两次,Mac 一次、Windows 一次。别问为什么。)正因如此,从现在起,我不会用名称 ID 指代(字体信息中输入的)默认家族和样式名称,因为这样会更加复杂。

如果,出于某种原因,自动化不起作用,就是说 Word 中的 BI 按钮没有产生应有的样式,你可以通过一个名为 styleMapFamilyName 的自定义参数来控制样式映射。以下内容摘录自 Glyphs 使用手册,能够说明全部内容:

styleMapFamilyName:用于 Bold、Italic 和 Bold Italic 样式的映射。你可以用该参数创建庞大字体家族中的子家族。最多四款字体可以共用同一个家族名称,形成一个字体样式链接群组(Bold、Italic、Bold Italic——如 OS/2.fsSelection 的位设置中所定义的一样)。Glyphs 使用每个子样中“样式名称”字段的文本和“样式链接”部分的设置,链接四个独立的字重。

同样的,你很可能不需要这些参数,不过以防万一。

更不常用的是 localizedStyleMapFamilyName 参数,如名称所述,是 styleMapFamilyName 的本地化变体。如果打个赌的话,我猜在这款软件的光辉历史中,这一参数被使用过不超过 5 次。但话说回来,我并不想打赌。

WWS 名称:ID 21 和 ID 22

WWS 名称,又称名称 ID 21 和 22,在以下情况中需要:

  • 家族中具有除 WWS(即字重 Weight、字宽 Width、倾斜 Slope)外其他样式的字体;
  • 且这些字体中在该非 WWS 轴上具有非常规的值,即该样式不能仅通过字重、字宽、斜度来表达。

假设我们想要通过变化视觉尺寸来扩展字体家族,比如“小标题”、“展示用”、“大标题”等等。我们在前文的表格中看到的字体不需要 WWS 名称,因为它们在我们的“视觉尺寸”轴上仍是常规的。但是如果我们加入了新的字体,它们在“视觉尺寸”轴上占据了特别的、非常规的位置,然后它们就需要 WWS 名称。

这一系统的运作方式为,你为非常规的名称创建独立的家族,然后将这些名称放入 ID 21,但是在 ID 22 中保留所有字重、字宽和倾斜信息。所以,名称 ID 22 不仅用于 RIBBI 名称,也用于其他落在字重、字宽或倾斜类别的一切内容,例如“Medium Extended Italic”或“Bold Condensed Oblique”。

家族名称 样式名称 WWS 家族名称(ID 21) WWS 子家族名称(ID 22)
MyFontFamily Display Light MyFontFamily Display Light
MyFontFamily Display Light Italic MyFontFamily Display Light Italic
MyFontFamily Display Medium Extended MyFontFamily Display Medium Extended
MyFontFamily Display Medium Extended Italic MyFontFamily Display Medium Extended Italic
MyFontFamily Display MyFontFamily Display Regular
MyFontFamily Display Italic MyFontFamily Display Italic
MyFontFamily Display Bold MyFontFamily Display Bold
MyFontFamily Display Bold Italic MyFontFamily Display Bold Italic
MyFontFamily Display Semibold MyFontFamily Display Semibold
MyFontFamily Display Semibold Italic MyFontFamily Display Semibold Italic

如何在 Glyphs 中完成这些工作呢?很简单。在“文件 > 字体信息 > 字体子样”中为相关字体添加相应的自定义参数。对于 WWS 家族名称,使用 WWSFamilyName;对于 WWS 子家族名称,使用 WWSSubfamilyName。猜到了吧。

备注 1: ID 21 和 22所包含的内容应该与 OS/2.fsSelection.bit8 的状态完全相关,如果你知道它是什么意思的话。如果不知道它的含义也不用担心,Glyphs 会自动处理这些。

备注 2:对于如“MyFontFamily Compressed”这样的情况,样式名称可以通过 WWS 表达清楚,这时便不需要名称 ID 21 或 22,还记得吗?不过实际上,技术规范并不排斥将 ID 21 和 ID 22 也包含在内,前提是设置了 fsSelection bit 8。因此,如果你愿意并且有大量时间可以挥霍,无论何处都添加它们也无妨。但说真的,还是早点做完去吃个冰淇淋吧。如果你想自己控制 fsSelection bit 8,在子样中添加 Has WWS Names 自定义参数:根据 OpenType 技术规范,该位元用于指示“字体名称表中的字符串符合字重/字宽/斜度家族,无需使用名称 ID 21 和22”。请记住,这只有在你的字体名称符合 WWS 命名方案的情况下才有意义。

为 Adobe 菜单命名

Adobe 菜单中的字体根据其家族名称被分类编入子菜单中。这一设置可以被偏好名称(名称 ID 16 和 17)覆盖。所以如果你不喜欢子菜单的编排,可以使用 PreferredFamilyName 设置自己的子菜单,把单款字体名称编入 PreferredSubfamilyName

在子菜单中,字体会被分类列出,类别和顺序如下:

  1. 字宽类别,
  2. 字重类别,
  3. 斜度类别(直立或斜体),
  4. 样式名称的首字母顺序。

你可以在“字宽”菜单(1)中设置字宽类别、在“字重”菜单(2)中设置字重类别、“斜体”复选框(3)设置倾斜,以及,当然了,“样式名称”(4)设置字母顺序。此外,如果你需要进一步区分字宽和字重类型(因为几个选项会产生相同的数字显示在菜单右侧),可以添加 widthClass and weightClass 参数直接设置用于排序的数字。

提示:旧版的 Microsoft Office 会自动将字重类型值低于 250 的字体加粗。这会导致字重值为 200 的 Extralight 比字重值为 300 的 Light 还要粗的奇怪状况。要想避免这一现象,确保你的字重类型值最低不小于 250。当然了,如果你的用户只使用较新版本的 Microsoft Office,或完全不使用 Microsoft Office,你便可以完全无视这一点,设置为从 100 起。

这意味着你可以随意设置为想要的结果!如果你想让所有字体都位于同一个子菜单中,只要确保所有字体中的 preferredFamilyName 都相同。不过,如果你想让你的字体位于不同的子菜单中,也可以用同样的参数加以区分。

只要记住:只有在它们和“家族名称”、“样式名称”中所输入的内容不同时才设置这些参数,否则它们就没有必要。换句话说,“偏好名称”仅用于覆盖由家族名称和样式名称所产生的默认设置。自不必说,如果它们的值都一样,也就无所谓去“覆盖”了。

例:比如我们有一个字重轴和一个字宽轴。进一步假设,你有 5 个字宽和 9 个字重,即一共有 45 款字体。想象一下这样规模的子菜单,哇喔。你有两个选择:

甲:你想要将全部 45 款字体放在一个菜单中。这样你不需要修改以上的任何设置,祝贺你,可以去喝杯咖啡了。

乙:你想把这些字体按字宽不同放在五个不同的子菜单中。这样,你把字体菜单的入口一分为五,但至少每个子菜单里只需要包含 9 个项目了。这种情况下,你需要为每个非标准字宽的子样使用 preferredFamilyName 参数,例如“MyFont Compressed”、“MyFont Condensed”、“MyFont Semiextended”和“MyFont Extended”。对于标准字宽,使用标准的家族名称“MyFont”足矣,因此,它不需要定义“偏好家族名称”。

Windows vs. Mac:全名 vs. 兼容全名

Windows 使用名称 ID 4(“全名”)用于显示一款字体的全名,比如在菜单中。通常,它们由“家族名称 + 空格 + 样式名称”组成,这也是 Glyphs 自动计算 ID 4 名称的方法。你可以通过一个 Name Table Entry 参数来覆盖它(见下文)。到目前为止,都还不错。

Mac 也将名称 ID 4 用于此种用途,除非字体里还有名称 ID 18(“兼容全名”)。换句话说,不管出于什么原因,如果你不能在 Mac 的菜单中使用 ID 4 的名称,你可以通过在“文件 > 字体信息 > 字体子样”中为你的字样添加一个名为 compatibleFullName 的自定义参数,来指定一个不同的名称。

不用说,只有在你有真正合理的理由时才这样做。使用 compatibleFullName 可能会破坏文档的跨平台互通性,特此警告。

兼容名称表

前面讲过,Glyphs 会自动将名称表中的条目安排在正确的位置,使它们能够在 Adobe 应用程序、Microsoft Office 以及使用 CoreText 的 Mac 应用程序中运行得最好。这样,大多数应用程序都可以被覆盖到了。

不过,你可能会偶尔遇到一个前来抱怨的顾客,尤其是使用 Quark XPress 和旧版 FontExplorer 的用户。如果你收到了“字体家族在这些应用程序中没有被正确分组”的抱怨,你可以使用一个名为 Compatible Name Table 的自定义参数。它可以让 Glyphs 导出一个旧版的名称表。

然后字体家族就能在 Quark XPress 和 FontExplorer 中被正确分组了。不过,这会打乱包括 Microsoft Office 在内的其他应用程序中的家族分组。恐怕这不能两全。

PostScript 名称

PostScript 名称是 PostScript Type 1 时代的遗存。某些应用程序,以及某些(主要是基于 PostScript 的)文件格式会使用 PostScript 字体名称来存储文件中的字体信息。PostScript 全名仅用于读者。同样,这两种名称都可以由 Glyphs 自动设置,并且如果只让软件自己来施法的话,你几乎不会遇到任何问题。因此你可以继续阅读本教程中的下一节了,除非你真的有足够的理由来自己设置它。

“PostScript 字体名称”可以通过“文件 > 字体信息 > 字体子样”中名为 postscriptFontName 的自定义参数来设置。出于两个原因,它会比较麻烦:名称长度,以及字符限制。技术上来说,名称长度最长为 127 个字符,这样对几乎所有字体来说应该都足够了。然而,一些旧版软件比如 Adobe 字体管理器(Adobe Type Manager,ATM),只考虑其前半部分,即 63 个字符。换句话说,如果两款字体的 PostScript 字体名称的前 63 个字符一样的话,老款软件中可能无法区分它们,甚至发生故障。好消息:如果你不在乎旧版软件,可以无视这个限制;但如果你需要关心旧版的兼容性,它可能会变得更糟:早期的 PostScript 解释器不能超过 29(没错,二十九)个字符。呃啊。

专业提示:EOT webfont 同样有着 29 个字符的限制。虽然 EOT 已经迅速成为一种过时的格式,但在某些情况下可能还是必要的,或者客户希望在所有可用格式上都保持安全。所以,如果你要导出 EOT 格式,可能也要设置 PostScript 字体名称,并确保它不超过 29 个字符。

至于字符限制,你的 PostScript 字体名称仅能包含 7 位的 ASCII 字符,除了控制字符、空格以及 [](){}<>/%,因为这些字符是为 PostScript 语言预留的。连字符 - 用于连接家族名称和样式名称。换句话说,你只能使用以下字符:

!"#$&'*+,-.0123456789:;=?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\^_@abcdefghijklmnopqrstuvwxyz|~

这意味着“MyFont Condensed Extrabold Italic”会变成“MyFont-CondensedExtraboldItalic”,有 31 个字符长。让我们进一步假设你的客户希望你可以支持一款 1988 年的图像排版系统,它只能支持不超过 29 个字符。为了符合长度限制,你可以把样式名称缩写成“CdXBdIt”,这样字体全名就变成了“MyFont-CdXBdIt”,仅有 14 个字符。现在,你可以从博物馆中取出那些尘封的老机器并开始使用了。

Tech Note #5088 中,Adobe 建议使用以下缩写来代表样式名称:

缩写 全称
Bd Bold
Bk Book
Blk Black
Cm Compressed
Cn Condensed
Ct Compact
Dm Demi(前缀)
Ds Display
Ex Extended
Hv Heavy
Ic Inclined
It Italic
Ks Kursiv(Italic 的德语)
Lt Light
Md Medium
Nd Nord
Nr Narrow
Obl Oblique
Po Poster
Rg Regular
Sl Slanted
Sm Semi(前缀)
Su Super
Th Thin
Ult Ultra(前缀)
Up Upright
X Extra(前缀)

万一你在好奇:“Nord”和“Nord Italic”是 1960 年 Roger Excoffon 著名的 Antique Olive 字体家族最初发布版本中的字重,大字宽、粗字重。因为 Adobe 的字体库中有这款字体的数字版本,Adobe 在整理过程中就把它列入名单了。据我所知,这是它唯一一次出现。

然后是“PostScript 全名”,可以通过自定义参数 postscriptFullName 设置,同样在“文件 > 字体信息 > 字体子样”中。这里需要保证人类可读,因为这将是字体需要展示给用户全名,因此也可以使用空格。按照 Adobe 的要求,它需要“适合在字体菜单中显示”。

所以我们可以完全自由地使用我们所想的名称了,对吗?嗯,并不完全是。根据 Adobe Tech Note #5088,某些系统会将字体的家族名称与 PostScript 全名相匹配,“以便将字体分类在不同的字体家族群组中”。因此,PostScript 全名应该以家族名称开头。PostScript 全名“通过添加样式属性来完成——通常是这样的顺序:字重、字宽、倾斜、视觉尺寸”(Adobe Technote #5088),例如,“Bold Extended Italic Display”、“Medium Condensed Oblique Caption”、“Semibold Oblique”、“Compressed Poster”或“Light”。

再次提醒,只有在你真的无法控制自己的内心冲动、如果不自己做一下就会发疯的情况下,再来设置 postscriptFontNamepostscriptFullName。否则,忘掉它们,交给 Glyphs 来设置 PostScript 名称,因为无论如何,这些东西是很容易算出来的。

名称表条目

如果你很清楚自己在做什么,并且再也无所畏惧的话,你还可以自己处理整个名称表。你可以为每个平台上每种编码方式的每种显示语言设置各自的条目,只需前往“文件 > 字体信息 > 字体子样”,选择一个子样,添加 Name Table Entry 自定义参数,然后选用以下结构之一作为其“值”即可:

  • <nameID>; <nameString>
    例:4; MyFont Bold Italic(Windows 英语全名)

本例中,<platformID> 要被指定为 3(Windows),接下来是 <encID> 为 1(Unicode),<langID> 为 0x0049(Windows 英语)。

备注:Glyphs 2.5 之前的版本会在名称表条目中的分号后加上空格。该 bug 已经被修复。如果你需要和旧版 Glyphs 保持兼容,我们建议你删掉空格,在分号后直接跟名称。

  • <nameID> <platformID>; <nameString>
    例:4 1; MyFont Bold Italic(Mac 英语全名)

如果 <platformID> 被指定为 1(Mac),那么 <encID><langID> 需要被指定为 0(MacRoman 编码和 Mac 英语)。

  • <nameID> <platformID> <encID> <langID>; <nameString>
    例:4 3 1 0x040C; MaPolice Gras Oblique(Windows 法语全名)

如果 <platformID> 被指定为 1(Mac),那么 <encID> 可以是 0 到 32 的任意数字,<langID> 为 0 到 150(参见 Macintosh 平台特定的编码和语言 ID)。
如果 <platformID> 被指定为 3(Windows),<encID> 可以是 0 到 10,<langID> 必须是 0x8000 以下的十六进制数码(参见 Windows 平台特定的编码和语言 ID)。

<platformID> 可以选择 1 代表 Macintosh、或 3 代表 Windows。可选的 <encID><langID> 受决定于 <platformID>,分别代表 Windows 或 Macintosh 上的编码和语言 ID。它们必须是 0 到 65536 的数字,可以以十进制、八进制或十六进制的形式输入。AFDKO 语法规范中规定“十进制数必须以非 0 数字开头,八进制数必须以 0 数字开头,十六进制数必须以 0x 开头且字母必须是 a-f 或 A-F”。

在你我之间,真正重要的平台只有 ID 1 Macintosh 以及 ID 3 Windows,或者说,只有 ID 3 Windows,真的。至于其他平台 ID 0 Unicode、ID 2 ISO 以及 ID 4 自定义几乎完全没被使用。其中之一。ID 2 ISO甚至被官方弃用了。还是那句话,如果你要自己设置名称表,一定要小心,因为每个平台都有各自难以理解的编码和语言 ID 列表。哈哈,我已经快要凌乱了,哈哈哈。所以如果你真的想自己做这些,你会发现自己经常浏览这个网页:Microsoft OpenType 技术文档:命名表,它列出了你这字体极客内心所渴求的所有编码和语言 ID。

下面是一个名称表条目的速查表,其中除了标记星号的条目都可以通过 <nameID> 设置,点击链接可以前往 Microsoft 技术文档页面:

nameID 描述
ID 0 版权字串。
* ID 1 家族名称。
* ID 2 样式名称。
* ID 3 唯一标识符字串。应用程序会用它来来识别字体,通常是家族和样式名称、版本号和年份的组合。
ID 4 字体全名。完整的、独一无二的、人类可读的字体名称,用于 Windows。通常是家族名称和样式名称的组合。
* ID 5 版本号字串。字体销售商给出的发布和版本信息。通常是单词‘Version’后接 x.xxx 版本号。也可以通过 versionString 参数设置。
* ID 6 PostScript 全名。也可以通过 postscriptFontName 参数设置。
ID 7 商标字串。可选,仅在你想将字体注册为商标时必要。
ID 8 制造商名称。
ID 9 设计师姓名。
ID 10 描述内容。任意文本。
ID 11 销售商网址。别忘了 URL 协议,即以 http:// 等开头。
ID 12 设计师网址。别忘了 URL 协议,即以 http:// 等开头。
ID 13 许可描述。一个一两句话的总结,说明用户可以或不可以对字体做什么。例如,“may install on x devices and must not resell.”(可以安装在某设备上,但不得转售。)
ID 14 许可信息网址。链接到一个包含许可协议全文的网页上。
ID 16 偏好家族名称。仅在不同于 ID 1 时设置。
ID 17 偏好子家族名称。仅在不同于 ID 2 时设置。
ID 18 兼容全名。仅用于 Macintosh,仅在不同于 ID 4 时设置。
ID 19 示例文本。某些应用程序在预览字体时所显示。
ID 20 PostScript CID findfont 名称。官方弃用,但仍用于 CJK 字体中。
ID 21 WWS 家族名称。
ID 22 WWS 子家族名称。
ID 23 浅色背景调色板名称。为 COLR/CMAP 彩色字体保留。
ID 24 深色背景调色板名称。为 COLR/CMAP 彩色字体保留。
ID 25 PostScript 变体名称前缀。为可变字体保留。

对于这些条目中的大多数而言,在 Glyphs 中通常有更好的方法来设置,通常是某个文本输入字段,或者专用的自定义参数。如果你已经设置了这些内容,通常只需再设置 Windows 名称。换句话说,使用短版参数 <nameID>; <nameString> 即可。

再次强调,只有在 Glyphs 自动生成的名称表由于某种方式无法满足你的要求,并且你知道自己在做什么时,才去做本节中的设置。如果只是为了自己做做看,很可能会搞坏一些东西。


非常感谢 Microsoft 的 Rob McKaughan 为本教程提供的大量信息。某些段落直接引自 Rob。


2017-12-17 更新:修正录入错误,添加了关于“preferredFamilyName”参数的样例。
2017-12-17 更新:添加了关于 Antique Olive Nord 的段落。感谢 Jean François Porchez! 添加了一些关于名称表条目以及 EOT 格式中 PostScript 名称的信息。感谢 Phil Garnham!
2018-07-05 更新:移除了“Name Table Entry”参数中一些过时的限制,现在你可以通过这个参数设置全部名称 ID。
2019-03-19 更新:修正录入错误;将 MaFonte 改为 MaPolice,Mac Roman 改为 MacRoman(感谢 Nathalie)。

Chinese translation by Willie Liu (刘育黎) from 3type (三言).