合字

教程
作者:Rainer Erich Scheichelbauer
en fr zh

19 二月 2016 发布日期: 25 十月 2012

You would love to know how to create ligatures? It’s super easy. Try it.

有时,字母之间会碰在一起,看上去就不太好。这种情况经常在小写 f 身上发生,它总是会伸到下一个字母的上面去;而如果下一个字母恰好带有上升部,比如小写 l、b 或 h,字母就会相碰。在这种情况下,字体设计师会选择制作一个 “合字” 字符形。

创建合字

比方说,我们的小写 f 和小写 h 撞在了一起:

这不太好。所以我们来创建一个合字字符形:选择 “字符 > 添加字符形…” 并键入 f_h。换言之,合字中每个部分各自的字符形名称,通过下划线相连。Glyphs 会将 fh 作为部件预置在合字中:

现在,我们需要把这些部件转换为独立的路径,从而切断它们和原本 fh 之间的连接。我们在 “字符” 菜单中选择 “释放部件”(Cmd-Shift-D)即可。现在我们得到了这样的轮廓:

我们可以根据喜好来编辑它们:

好吧,请不要笑,我不是世界上最好的合字师,这也没什么大不了。不论如何,这样就完成了字符形的创建。但是,怎样让它工作呢?

创建合字特性

合字通过 OpenType 特性来起作用。只要你为合字字符形设置了正确的名称,Glyphs 就会为你自动生成这些特性。只需打开 “字体信息”(Cmd-I),前往 “特性” 选项卡,点击左下角的圆圈箭头按钮:

然后,Glyphs 会创建一个名为 dlig 的特性(或许也会同时创建一些别的特性)。如果你单击它,就可以看到特性代码:

sub f h by f_h;

其含义是:将序列 fh 替换为合字字符形 f_h。完全是我们想要的结果,耶!

liga 和 dlig

不过等一下,为什么它叫 dlig?这是 “自由合字”(discretionary ligatures)的缩写,意味着这一特性是 “默认关闭” 的,换言之,用户需要先手动打开它。

如果我们希望它默认打开,需要将其放入名为 liga(标准合字,standard ligatures)的特性中。最好的办法是在字符形名称中添加 .liga 后缀。本例中,我们将合字重命名为 f_h.liga

现在我们再来点击 “字体信息 > 特性” 中的圆圈箭头按钮,你瞧,我们得到了一个带有如下代码的 liga 特性:

sub f h by f_h.liga;

很棒!

需要说明的是,一些合字字符形会被直接放入 liga 中,因此它们不需要添加后缀。以下为完整列表:

fi
fl
f_f
f_f_i
f_f_l

你可能注意到了,fifl 不符合我们之前提到的命名规则。由于历史原因,它们属于例外,因为这两个字符形名称早在 OpenType 出现的很久之前就已经存在了。

事实上,如果你愿意,你还是可以将它们命名为 f_if_l,但是这样它们就会进入 dlig 中——除非你加上 .liga 后缀。

测试合字

想看看合字是否真的有效果吗?打开一个编辑选项卡(Cmd-T),输入一个包含合字序列的单词,本例中是 “hifhum”。(我认为这个词没有什么含义,如果有的话,希望不是什么不好的意思。)现在点击窗口左下角的 “特性” 按钮,在弹出菜单中选择 liga

然后合字就会生效:

如果它没有生效,请确保字符形名称正确。或许可以再去 “字体信息 > 特性” 中点击圆圈箭头按钮,重新生成特性代码,然后再试一次。

好的,这就是全部相关内容了。祝合字愉快!


2016-02-19 更新:更新 Glyphs 2 截图。
2019-04-10 更新:将 “图层” 菜单改为 “字符” 菜单。

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