复用形状:部件技巧

教程
作者:Stella Chupik
en fr zh

You know about serif components, smart components and corner components but you are still craving more components? These tips and tricks will make you happy.

你已经知道了可以创建衬线部件智能部件 以及角部件。还想要更多部件?这里有一些提示和技巧。

制作 Q

基本而言,在某些设计中,Q 就是 O 加上了一个字尾。所以,要让事情简单些,如果你的设计允许,你可以将 O 作为 Q 中的一个部件。在字体视图中双击 Q 来在编辑视图中打开它,或者直接在文本模式中键入。前往“字符形 > 添加部件”(Shift-Cmd-C)并选择 O。然后,画一个漂亮的字尾。我们这样画:

但是,你不应该把部件和路径混在一起,因为如果这样,自动对齐会被关闭。这意味着,当你调整 O 的时候,字尾和 O 将无法同步。所以,我们来把字尾也做成一个部件。要完成这一操作,只需按下 Cmd-A 一次,选择全部路径,然后右键单击,在上下文菜单中选择“将所选内容转换为部件”。新字符形的名称随意,只要你能够理解即可,并且需确保以下划线开头。这样,该字符形会被直接设置为不导出。本例中,我们将它命名为 _tail.Q

要想将字尾连接在 O 的特定位置上,只需在 O 中添加一个锚点。通过右键打开上下文菜单并选择“添加锚点”即可。锚点名称将自动处于选中状态,以便你来进行重命名。

为锚点取一个简洁明了的名字,比如 qtail。选中它并将其拖动到你想连接字尾的地方。然后在 _tail.Q 字符形中,添加一个锚点并使其命名和 O 相同,不过在最前方多一个下划线。这个下划线表示该锚点同 qtail 中的锚点相连接。

嗒哒!这就是全部由部件组成的 Q:

制作 y

就像 Q 一样,你也可以通过在 v 上添加一条字尾来得到 y——如果你的设计以及工作流程允许的话。以我的经验而言,那些规范化、几何化、细字重、粗细对比明显的设计,或是用于低分辨率屏幕的字体适用于这种方法。当然了,你必须通过自己的眼睛来判断这种方法是否真的可用。但即使是在其他设计中,这样的构建方式在早期设计阶段也是有用的,而最终会将部件释放来进行视觉调整。不过,直到这最后一刻到来之前,你仍然需要进行大量的修改时,利用部件和自动对齐有助于保持设计的一致性。

通过在字体视图中双击 v,或直接在文本模式中键入,来在编辑视图中打开它。同样,前往“字符形 > 添加部件”(Shift-Cmd-C)并选择 v。画一个可以和 v 匹配的字尾,这里有一个小技巧:选择 v 字干上的两个点,右键单击打开上下文菜单并选择“添加参考线”。

现在,会出现一条穿过所选两个节点的蓝色参考线:

选择参考线,按下 Cmd-C 将其拷贝到剪贴板。然后,打开 _tail.y 按下 Cmd-V 粘贴参考线。这样,你便可以轻松地使字尾的角度和字干保持一致。确保锚点和节点位于相同坐标,以避免其在网格中发生偏移。

字尾需要连接在 v 上,所以我们在 v 上添加锚点。这次,我们将它命名为 ytail,不过名称同样随意。你可以通过 Cmd-C 拷贝锚点。打开 _tail.y 然后通过 Cmd-V 粘贴,再双击锚点来重命名。同样,这个锚点应该同 v 中的名称相同,只是开头多一个下划线。

通过这种方式,锚点会位于相同的高度。这很重要,因为两个部件会共用 y 坐标。保持它们高度相同,我们可以避免组合出的 y 出现垂直偏移。

或者像 Q 中所做的一样,直接将字尾转换为部件。按下 Cmd-A 全选路径,右键单击并选择“将所选内容转换为部件”。同样,新字符形的名称随意,只是需要以下划线开头使其不会被导出。我们的这个可以命名为 _tail.y

就是这样,耶!

其他字符形

取决于你的设计,你也可以通过部件构建其他字符形。比如,通过 N 和一个下降部部件构成 Eng,通过 a 的部件和 e 来构成 ae,o 的部件和 e 构成 oe,w 的部件和 v 构成 w;如果你在制作一款无衬线字体,你也可以使用 n 和一个下降部部件构成 eng,或者 p 和字干部件构成 thorn

不过等一下……仔细看一下截屏中的 aeoew,它们和前面的例子有点不一样。

合字部件

实际上,它们是不同形状组成的合字。所以,为了最大限度地发挥自动对齐功能,我们可以创建特殊的合字字母,在需要的地方调节其边距,然后将它们用作部件来建立合字。这样的话,我们就连锚点都不需要了。

例如,你可以通过一个特殊的 a.ae 和一个 e 来构建 ae。在 a.ae 中,复制 a 的路径,删除最后的提笔,可能还要稍微调节一下字干的粗细。a.ae 中需要设置 =a 作为左侧边距的度量值链接,以及一个负值的右侧边距,以便它能够和 e 构成一个合适的合字。打开 ae,依次添加 a.aee 作为部件。它们将会自动对齐。

因为 a.ae 不应被导出,所以需要进入字符形中,右键单击打开上下文菜单,然后选择“导出”来取消勾选。

a.ae 这个字符形名称的结构为“字母名称+后缀名”。这样的结构允许合字字符形中的自动对齐,但是需要最后这一步来关闭导出。从版本 2.3 开始,你也可以这样做:创建 _a.ae,由于以下划线开头,该字符形不会导出;然后,在 ae 里,通过在右键上下文菜单中选择“启用自动对齐”来强制对齐。

将连写拼接功能用于合字

事实上,你在形如 AEOE 这样的字符形中所真正需要的,是左侧部分的左边距和右侧部分的右边距。剩下的部分不重要,只要两部分在正确的位置连起来即可。那么,如果我们可以指定横向连接的定位点——就像我们在纵向变音符连接中所做的一样,然后把想要的字母部件连接起来,合字就能够继承首字母的左边距和末字母的右边距——这样岂不是很棒?

嗯,实际上阿拉伯文字中已经有了这个功能。这一功能称为“连写拼接”,Glyphs 使用所谓 exitentry 锚点的方式来实现它。如果你在阿拉伯字母中放置这些锚点,锚点的位置就会被用于建立一个 OpenType 位置特性,用来使字母之间动态相连。非常酷。

幸运的是,我们也可以在非阿拉伯文字中使用这一功能,比如拉丁字母。只是我们不需要 OpenType 特性,因为我们只关心把两部分连起来。为了阻止 Glyphs 创建特性代码,我们可以为锚点名称添加非字母前缀。有些人喜欢使用绘文字来提高识别性,比如 🤓exit,但我会用一个井号,因为它更容易敲出来(识别性也不差):#exit 以及 #entry。作为范例,这一工作流程可以像这样:

  1. 创建 A.AE,即 AE 中 A 的部分。
  2. 将其设为不导出:右键单击,在上下文菜单中取消勾选“导出”选项。
  3. 绘制路径,并在基线上添加 #exit 锚点,差不多是你想让 E 所连接的位置:
  4. E 中,在基线上左侧边缘处添加 #entry 锚点:
  5. AE 中,执行“字符形 > 添加部件”(Cmd-Shift-C)两次:首先将 A.AE 作为部件添加进来,然后再添加 E。搞定:

通过调整锚点位置,你可以精细调节你的 AE。最棒的是,它的右半部分(包括右侧边距)永远都会和实际的 E 保持同步,因为它是真正的 E 部件。锚点名称上的井号前缀则确保你的字体文件中不会出现多余的 curs OpenType 特性。

非常棒。感谢阿拉伯文字为我们提供了连写拼接功能!


样例字体:Sephora Serif by Mucca/Schriftlabor,以及 Funktional Grotesk by Davide Rossetto。
2016-01-18 更新:添加一些说明内容,感谢 Benedikt Bramböck 等许多人提出的宝贵建议。
2017-12-28 更新:添加 #exit/#entry 技巧。
2019-01-21 更新:修成录入错误。

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