画得不好的轮廓会很让人头疼。你的字母可能看上去被搞乱了,或者干脆显示不出来。记下一些基本的规则,你就能避免这些麻烦。
魔力三角形
这一点很重要:每一个曲线段都必须完全处在一个三角形中。
“线段指什么?” 我听到你这样问了。很简单,线段就是两个相邻节点之间的部分,“节点” 亦即曲线上的点。线段有两种,直线和曲线。直线仅包含这两个节点,而曲线还有两个曲线外的点,即 “贝塞尔控制点”(BCP)或称 “手柄”。
要牢记“魔力三角形”由线段两端的节点以及手柄延长线的交点构成。这意味着手柄绝不能超出三角形范围之外。如果它们超出了,你需要考虑重新布置节点。所以,这两件事绝对不能发生:一条手柄穿过了另一条手柄;一条手柄穿过了另一条手柄的延长线。这可能产生不必要的拐点、突兀甚至自相交叉的曲线,所有这些都可能让字体的栅格化渲染器陷入困境。
如果你曾有过使用 Illustrator 等矢量软件的经验,这可能会让你感到吃惊。首先,手柄不属于节点,而是属于线段;其次,一个曲线段一定拥有两个贝塞尔控制点,不可能只有一个。Illustrator 似乎允许你绘制只有一个手柄的曲线,但实际上 Illustrator 只是将另一个贝塞尔控制点藏到了它旁边的节点里。这点很不好,因为在字体的矢量图形中,不应有两个点位于同样的坐标处。此外,如果善加利用两个手柄,你能更好地控制路径。
如果两个手柄之一不见了,它就是藏在旁边的节点中了。要修正它最简单的办法是,选中相邻的点,可以是节点也可以是手柄,然后按 tab 键切换选择为隐藏的手柄点。使用 Shift-tab 向另一个方向切换选择。浅灰色的标注表明手柄被选中了。现在,使用方向键把手柄移出节点。如果你同时按住 option 键,手柄的方向将保持不变;按住 Shift,以 10 为增量移动:
三角形规则也意味着曲线段应当仅有一个方向,亦即不含拐点,不会从顺时针方向变为逆时针方向。不过,这里也有例外:通常在绘制类似 S 或波浪线这类字符形时,你需要在曲线中包含拐点,尤其是为了插值的情况下。
特例: 在为适于屏显的字体绘制杯形衬线时,一定需要带有拐点的曲线段:
确保点 A 和点 C 位于同一高度,所有手柄均为水平(或位于 B 和 A/C 之间,即不超过这两个高度所限定的范围),且基线和 B 之间的距离小于 20 单位。在 “文件 > 字体信息 > 字体” 中,添加一个 blueShift 自定义参数,“值” 设定为杯形深度 +1。然后 PostScript 自动渲染提示器会应用被称作 flex hint 的方式,在极低的分辨率下不显示杯形凹陷。最重要的是,让 B 点位于基线上。是的,你没听错,是 B 点!包含 A 和 C 的杯形部分需要完全被包含在基线的渲染提示压缩区域中。阅读更多关于 PostScript 渲染提示的内容。
路径方向和顺序
错误的路径方向会搞乱字腔,并让某些渲染提示无法实现。路径的方向必须是逆时针,字腔则需要是顺时针。选中路径,右键单击,在上下文菜单中选择 “反转所选轮廓方向” 即可控制路径方向。不想记这么多?没问题,Glyphs 可以为你完成。只要选择 “路径 > 修正路径方向”(Cmd-Shift-R)就完成了。这个命令对多个字符形,甚至是整个字体,都起作用。
顺便说,“路径 > 修正路径方向”(Cmd-Shift-R)还会将你的路径重新排序,并为每个封闭路径重置起始节点。
在做多母版工作?按住 Option 键,菜单命令会变为 “路径 > 在所有字体母版中修正路径方向”(Cmd-Opt-Shift-R)。顾名思义,会在所选字符形的所有图层中同时施展这一魔法。当你想让一个多母版字符形重新兼容时,这非常方便。你可以用这种方法解决大多数插值问题。阅读更多保持轮廓兼容的内容。
自相交叉
最终导出的字体文件中,路径不得自相交叉。你可以选中出错的路径,执行 “滤镜 > 去除重叠”(Cmd-Shift-O)来修复自相交叉的问题。不过,在你的 Glyphs 文件中,你可能想保持交叉状态,以便编辑和插值。这种情况下,确保在导出字体(Cmd-E)时,勾选 “去除重叠”。
提示:这不适用于可变字体。
你可以通过上下文菜单中的 “展开角” 和 “重新连接节点” 命令创建重叠:
高级技巧: 这些命令也可在 “路径 > 其他” 子菜单中找到,因此你可以在“系统偏好设置 > 键盘 > 快捷键 > 应用程序快捷键”中轻松添加键盘快捷键。
不过,保持重叠时会有一个问题:双重叠。就是说,如果你在一个重叠中还有另一个重叠,那么在形状中会出现小小的白色缺口。在一个重叠当中,如果有一条曲线段和直线段相接,曲线向错误的方向弯曲得有点多了——这时,这种问题就会发生。
怎样找到这些点?嗯,有一个 Python 脚本可以检查去除重叠之后的字符形是什么样子的,看看是否在哪里留下了一些轮廓碎片。在 mekkablue 脚本库 中,有一个名为 Path > New Tab with Small Paths 的脚本,它可以打开一个新的标签页,其中包含了它能找到的、带有这样细小路径的全部字符形:
多余点和错误的节点类型
不是什么大事,但可以改善字体的渲染性能:“路径 > 清理路径”(Cmd-Opt-Shift-T)可以去除多余的节点和手柄。换句话说,它会去掉一切无关当前形状的点,比如一条完全笔直线段上的手柄,等等。这一命令也会修正节点的类型,在相应的地方将蓝色的角节点转换为绿色的曲线节点(或反之)。它也会解决位于同样坐标的两个相邻点,也即 “零长度线段”,由红色圆圈指示。
极值点
在我们的工作中,如果在路径的水平或垂直尽端处,也就是路径切线完全水平的地方插入节点,很多事情会都变得容易得多。通常情况下,这让你可以无视其他的点,同时实现更简单的路径、更少的节点和更小的文件大小。
执行 “路径 > 添加极值点” 可以在所选轮廓、所选字符甚至整个字体中添加极值点,或者如果想更方便地控制,只需使用钢笔工具(P)按住 Shift 键单击路径。Glyphs 会寻找最近的曲线极值点或拐点,并在那里插入节点。
插入极值点后,通常可以在不影响形状的情况下去掉一些中间点:
要实现这一点,你可以选择一个绿色的斜向节点,并按下 Delete 键。如果每次只删除一个节点,Glyphs 将用单个线段尽量重建这个形状。实际效果因人而异。
高级技巧: 你可能需要避免在可能出现轻微曲线的情况下添加极值点,所谓“轻微曲线”可能仅有几个单位深。为什么要避免轻微曲线?因为点的坐标通常不会出现小数,而这样的曲线段会搞乱形状,无论你的节点和手柄布置得多么高明。
开放和闭合
最终导出的字体中整条路径都不见了?可能它没有闭合。开放路径会在导出时被无视,所以,所有路径都应该是闭合的。
要闭合一段路径,只需用选择工具(V)将一个开放端点拖放到另一个开放端点即可。使用钢笔工具(P)并依次点击两个端点,添加线段来闭合路径。或者,选择开放的路径,右键打开上下文菜单,选择 “闭合路径”。
边界外的图形
左右的边距值很不对劲?可能在字符形中的可见部分之外有一些对象。这里是如何删掉它们的方法:
确保当前活跃的是正确的字符形,即光标位于该字符形之前。提示:注意灰色信息框(Cmd-Shift-I)中左边距和右边距的数值,看看它是不是一个大得离谱的数字(可能是负数)。
点击工具栏上的箭头图标切换为选择工具。
执行 “编辑 > 全选”(Cmd-A),字符形中的所有路径就都被选中了。
按住 Shift 键的同时,框选想要保留的部分。这会取消选择它们,仅剩边界之外的残片被选中。
敲 Delete 键。
插件
通过 “窗口 > 插件管理器”,你可以在“显示”菜单添加几个插件,帮助您识别轮廓中的潜在问题点。这方面的一些优秀插件包括 “Show Angled Handles”(译者注,下同:显示倾斜手柄)、Jens Kutílek 的 “Red Arrow”(指出可能有问题的地方)、Simon Cozens 的 “Heatmap”(通过显示热力图检查笔画粗细),可能 “Show Tops and Bottoms”(显示字符形的最顶端和最底端)也会派上用场。
在插件管理器中,你还可以找到帮助解决问题的 “滤镜” 菜单扩展。“Fix Zero Handles”(整理包含零长度手柄的曲线段)以及 “Delete Small Paths”(删除尺寸小于某阈值的路径)就是两个例子。另外,考虑一下你的设计需要什么,看看是否有可用与此的插件。
此外,请查看 “扩展” 页面 上列出的脚本库,其中许多都包含了能够帮助你修复字体问题的脚本,如上面提到的那些。
现在,是检查你的字符形并优化矢量曲线的大好时机。相信我,这样做会省去你之后的不少麻烦。
2018-08-04 更新:修改文本并适配当前的软件版本。增加了 “双重叠”、重新连接和展开角的部分,以及脚本和插件提示。
2018-08-19 更新:更精确地描述了 “多余点和错误的节点类型” 一节中的 “清理路径”。增加 “杯形衬线” 例子的说明和截图。整理了描述拐点的用词。
Chinese translation by Willie Liu (刘育黎) from 3type (三言).
友情链接:
Copyright © 2022 世界杯金靴_足球小子世界杯 - ffajyj.com All Rights Reserved.