字符形配方

  • by Rainer Erich Scheichelbauer
  • Tutorial
  • – Modified on

你应该已经知道了“字符 > 添加字符形…”(Cmd-Shift-G)命令。它会给你一个像这样的文本输入框:

这时,你就可以输入“字符形信息”面板中的字符形名称,比如 germandblsfiveguillemetleft。或者你也可以输入实际的字符,比如 äà,Glyphs 会添加相应的带有正确名称的字符形,本例中为 adieresisagrave。这个命令也可以识别合字,所以你可以输入 t_t 得到一个名为 t_t 的、其中带有两个 t 部件的合字字符形。你可以一次输入多个字符形名称,使用空格或回车分隔。这样,你可以从文本文档中复制粘贴整个字符形列表,并一次创建多个字符形。

单部件配方

不过,最酷的东西是“配方”。一条配方就是一个带等号 = 的字符串,比如 six.numr=six.sups。Glyphs 会用等号左边的字符形作为部件加入新建的字符形,等号右边则是新字符形的名称。所以,在本例 six.numr=six.sups 中,Glyphs 会创建名为 six.sups 的字符形,并在其中插入一个 six.numr 部件。

设想一下可能性。假如你想创建一款只有大写字母的字体,你可以输入这些内容:

A=a B=b C=c D=d E=e F=f G=g H=h I=i J=j K=k L=l M=m
N=n O=o P=p Q=q R=r S=s T=t U=u V=v W=w X=x Y=y Z=z

这会创建小写字母 a-z 并在其中插入大写 A-Z,不过是以部件的形式!这样,大写和小写字母会永远保持同步。很酷。

多部件配方

使用加号 +。看一下这条配方:

h.short+circumflex=hcircumflex

这条配方使用 h.short 部件,加上 circumflex 部件,来创建字符形 hcircumflex

你需要添加一个新字符形并命名为 h.short。然后你可以缩短竖笔,得到一个更漂亮的 h.circumflex

多数情况下,内建的配方会做得很好。你只需要写下字符形名称,Glyphs 会设置好剩下的部分。例如你输入 edieresis,Glyphs 会通过 edieresis 部件来构建它。你可以在“窗口 > 字符形信息”面板中的“部件”一栏看到内建的配方。如果你对事先做好的配方不满意,你可以通过加号来自己编写。

我们来再进一步:

s.sc+s.sc=germandbls.sc

本例中,第二个字符形不是变音符号,而是正常的字母。这意味着,本例中,Glyphs 会并排插入两个 s.sc,使用 s.sc 部件来构造一个小型大写的双 s。这就是当“小型大写体”功能打开时,德文字母 ß germandbls 所应当变成的样子:

注:事实上,这不应该是一款字体的工作。显示字体的应用程序或操作系统的排版引擎应该照料这件事。不过,对于向后兼容或老旧的软件而言,可能会需要这个 germandbls.sc 解决方案。

总而言之,使用配方,你可以添加两个字符形,来创建一个变音字母或二合字母。其中最棒的一点是所生成的字符形会由部件组成。

区间

你可以在两个字符形名称之间插入冒号,来添加整个 Unicode 区间,像这样:

uni2500:uni257F

这个例子会在将所有的制表符字符形添加进你的字体中。简而言之结构为 字符形名称1:字符形名称2,其中 字符形名称1 的 Unicode 值小于 字符形名称2 的。然后,Unicode 中两者之间的字符都会被添加进来。

顺便说,字符形名称的格式随意。既可以是可理解的名称,也可以是 uniXXXX 这样的名称。所以,这样的内容是和前文等价的:

boxLightHorizontal:boxHeavyUpAndLightDown

多行编辑

你可能会面对这样一种情况:有很多条配方结构相似。这时你会在每条配方中反复键入相似的内容,一遍又一遍,像个机器人。呃啊。

幸运的是,有一些文本编辑器支持多行编辑,比如 Sublime TextTextMate。在 TextMate 中,按下 Option 键切换常规和按栏选择。在按栏选择模式下,你所做的编辑就会在出现在每一行中。在 Sublime Text 中,同样操作的按键为 Cmd-Shift-L。

将这样的操作同“复制所选字符形名称”功能相结合:在“字体视图”中,右键打开上下文菜单,选择“复制字符形名称 > 每行一个”。

然后粘贴在 TextMate 或 Sublime Text 中,进行多行编辑:

非常酷。


2017-10-05 更新:添加关于“区间”和“多行编辑”的备注和段落。
2019-08-05 更新:修正录入错误(感谢 Nathalie!)。

示例字体:ALENA,谨感谢 ROLAND STIEGER 提供。

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