字偶距调节

教程
作者:Rainer Erich Scheichelbauer
en fr zh

 

Changing the whitespace enclosed inside a pair of glyphs is called kerning. Here’s how to do it in Glyphs, with lots of good tips to make your task easy.

操作一对字符形之间围合出来的白空间,称作“字偶距调节”。字偶距调节通常是你制作一款字体时,在稍晚的阶段进行的。尽量将你的将字间距调到合适为止。不过你会发现,不论你做到多好,有些字母组合看上去永远不合适。这就到了你该处理字偶距的时间点了。最常见的坑是“VA”组合,即大写字母 V 后接大写字母 A。

这一点很重要:请记住“字偶距”这一概念意味着调节两个字母的组合所围成的白空间,是一字符形。你没法调节单个字母的字偶距。调节某个字母的左右边距,这叫做“字间距设计”。

快捷键

好了,那么虽然你已经充分设置了 V 和 A 的边距,但是二者之间的白色空间还是很大。如果你键入一个这样的单词,比如“VAND”——我知道它是丹麦语的“水”,以及罗马尼亚语或摩尔多瓦语的“卖”——这个问题就会很明显。我建议不要只输入需要调整的字母组合,而是加入上下文,几个白空间看上去没问题的字母。这样,你就可以作直观的对比。本例中,我觉得 N 和 D 的间距已经很可以了:

不过它看上去更像“V AND”而非“VAND”,是吧?所以,如果你表示同意,我们需要处理一下 V 和 A 之间的间距。换句话说,我们需要调节 VA 的字偶距。

最简单的办法是,将光标移动到 V 和 A 之间,按下 Ctrl 和 Opt 键,然后使用左右方向键来调节字偶距。同时再按下 Shift 键,以 10 为增量调节:

你可能已经注意到了,除了额外的 Opt 键之外,这套快捷键和调节字母的左侧边距——Ctrl-方向键或 Shift-Ctrl-方向键——是一样的。我们都是讲逻辑的人,那么在调节右侧边距的快捷键 Cmd-方向键或 Shift-Cmd-方向键的基础上,再加按 Opt 键,就可以调节当前字母和它右边字母之间的字偶距。确实如此:本例中,Cmd-Opt-方向键或 Shift-Cmd-Opt-方向键可以改变 A 和 N 之间的字偶距。

显示字偶距设置

你可以切换为测量工具(快捷键 L)在测试文本中时刻查看设置过的字偶距。负字偶距显示为浅蓝色,正字偶距显示为浅黄色。为了让你能够看到显示效果,我在本例中添加了 N 和 D 之间的正字偶距,虽然这个字体中并不需要这样设置:

此外,在灰色信息框(Cmd-Shift-I)中,你也可以看到和当前字母相关的字偶距数值。本例中,A 左边的字母和 A 本身之间的字偶距为 –80:

当然了,你也可以通过“窗口 > 字偶距”查看设置过的字偶距设置:

字偶距设置按左侧字符形归类。如果你点击某个右侧的字母,Glyphs 会将这对字母显示在主窗口中,光标当前所在的位置。如果你设置了很多对字母之间的字偶距,你可以使用搜索框来快速找到你想要的那对。单击搜索框中的小三角来获取更多搜索选项:

按组设置字偶距

你会想让让“VA”之间的字偶距同样应用在“VÄ”、“VÅ”和“VÀ”之间,可能甚至是”“WA”之间。这样的话,你可以将字符形编组,让字偶距设置不仅限于某个字符形,而是应用于整组字符形。本例中,V 和 W 可以编在同一组中,A、Ä、Å 和 À 编在另一组。不过组的名称随意。比如,e、c、o 和 q 左侧的字偶距群组可命名为 o,因为它们的形状一致。不过你也可以使用 lowercaseRound 之类的组名,只要你自己能理解。和量度联动不同,字偶距群组的名称和字符形没有关系。

那么,我们怎么做呢?很简单。每个字符形的信息面板(Cmd-Shift-I)中都带有两个标注了“群组”的文本框。下面的内容很重要:每个字符形可以同时属于一个左侧群组和一个右侧群组。大写字母 Æ 是一个很好的例子:它的左边像 A,右边则像 E。所以,我们将其左侧编入 A 组,右侧编入 E 组:

现在,请留意“群组”输入框旁边的锁图标。如果锁为闭合,意味着当前的字偶距数值应用于整个群组,而不仅限于当前显示的单个字符形。如果锁为打开,那么这就是一个“例外字偶距”,其数值仅应用于当前显示的字符形,而非整个群组。本例中,字母 A 和其左侧的字符形之间的字偶距就是“例外字偶距”,而 A 和其右侧字符形间的字偶距就应用在了整个 A 组中的字符形上:

你可以将字偶距群组同时应用在多个字符形上。在字体视图中(网格或列表模式),选择多个字符形,然后修改窗口左下角的设置:

在网格模式下,你还可以多选字符形后唤出上下文菜单(右键单击或 Ctrl-单击),然后在这里设置字偶距群组:

当然了,你想将字符形以何种方式编入字偶间距群组都可以,这取决于你自己。不过,有一个很方便的脚本能够做得很好:为你的每个字符形猜测其左右两侧所属的字偶间距群组。你可能还需要对结果作各种调整,但这就已经完成很多了。你可以从 Github 下载 Set Kerning Groups 脚本并将其放在脚本文件夹中。脚本文件夹可以通过“脚本 > 打开脚本文件夹”(Cmd-Shift-Y)访问。按下 Opt 键,你就可以“脚本 > 重新载入脚本”(Cmd-Opt-Shift-Y),然后“Set Kerning Groups”就可以在“脚本”菜单中使用了。

当你在调节群组字偶距时,打开“显示 > 显示群组成员”,Glyphs 会将当前字母对所在群组的所有成员重叠展示出来。听起来很复杂,但看一下截图就全部清楚了:

你可以看到各个字偶距群组中的全部成员,包括全部带有变音符的字母。这样可以让冲突排查变得更加容易,你也能够知道何时该设置例外字偶距了。

导入字偶距

如果你已经自己设置好了一款字体的字偶距群组,想要将其应用在当前最前台的字体上,那么选择“文件 > 导入 > 量度值”并选择你想要从中导入的字体文件。这一导入功能接受 UFO 和 Glyphs 文件。在随后出现的对话框中,选择你想要导入的字偶距或字偶距类别(即“群组”的另一种称呼):

“导入字偶距”选项仅在你从 .ufo 文件中导入时才活跃。

字偶距窗口

你也可以在字偶距窗口中复制粘贴字偶距。只要选择你想复制的字偶距设置(或按 Cmd-A 全选),拷贝,再切换到另一个字体,粘贴进这个字体的字偶距窗口中。字偶距群组前面带有 @ 符号,显示为蓝色;独立的字偶距设置则显示为棕色。

看一下字偶距窗口右下角的齿轮菜单,里面藏着三个有用的功能:

  1. “清理”会移除所有无效的字偶距数值,比如已不在字体中的字母所遗留下来的字偶距设置。
  2. “合并”会移除不必要的例外字偶距,例如:A 组和 V 组的群组字偶距为 –80,但你还有一个单独的“ÄV”字偶距为 –80。因为这样的例外字偶距并不产生什么区别,“合并”功能就会认为它是不必要项,并将其删除。
  3. “显示所有字符形”让你总览当前字偶距设置的全部可能组合:左侧群租的全部成员,配对右边群组的全部成员:

自定义步进

如果你觉得每次一个单位的增量不适合你的字偶距设置工作,你可以自定义这个增量。打开“窗口 > 宏面板”并粘贴以下代码:

Glyphs.defaults["GSKerningIncrementHigh"] = 20
Glyphs.defaults["GSKerningIncrementLow"] = 5

然后,按下“运行”按钮。这样会将你的 Cmd-Option-方向键和 Ctrl-Option-方向键的步进设置为 5 单位, Shift-Cmd-Option-方向键和 Shift-Ctrl-Option-方向键的设置为 20 单位。当然了,你可以将数字 5 和 20 替换为任何你觉得舒服的数字。

要将字偶间距增量重置为默认,只要在“宏”窗口中运行以下代码:

Glyphs.defaults["GSKerningIncrementHigh"] = None
Glyphs.defaults["GSKerningIncrementLow"] = None

这样就会删除设置,Glyphs 会恢复为默认状态,1 和 10 单位。

脚本和插件

如果你在 GitHub 库中随意浏览,你能找到大量处理字偶距的脚本和插件。在 mekkablue 脚本中,“Metrics”子文件夹里包含能够帮你操纵某个母版中字偶距的脚本,像是取近似、加倍、增加或减少全部字偶距数值,或是删除全部微小数值。特别地,有一个脚本借用了 InDesign 的视觉字偶距设置并将其插入你的字体。还有一个脚本帮你找出过度设置的字偶距,也就是超过了所包含字符形中预设宽度百分比的字偶距设置。查阅说明文档(readme)看看是否有什么是你能用到的。

Tosche 的脚本也是如此。其中的脚本能够在拉丁字母、西里尔字母和希腊字母间同步和共享字偶距设置,重命名字偶距群组,在字符形群组间复制字偶距设置。Tim Ahrens 的 Freemix 脚本中,有一款用于扩张字偶距的脚本,和紧缩正相反。

不过我会把最好的东西留在最后。看一下 Mark Frömberg 优秀的 Kernkraft 工具。它会分析你的全部字符形,帮你找到字体中需要做的字偶距设置。这里有编成 wiki 形式的逐步导览,你可以从“窗口 > 插件管理器”下载。


样例字体:
PLAYFAIR DISPLAY,谨感谢 CLAUS EGGERS SØRENSEN 提供,
LAWABO UNROUNDED 和 PLANTAGO,谨感谢 SCHRIFTLABOR 提供。

2016-02-16 更新:更新为 Glyphs 2(感谢 Sacha Rein!)
2018-01-30 更新:添加“自定义步进”、“脚本”、关于“显示所有字符形”的说明
2018-08-10 更新:添加“显示 > 显示群组成员”
2019-03-26 更新:修正录入错误(感谢 Nathalie Dumont!)

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