复用形状:部件技巧

教程
作者:Rainer Erich Scheichelbauer
en fr zh

翻译:Stella Chupik

 

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 (三言).