渲染提示:PostScript 自动提示

  • by Rainer Erich Scheichelbauer
  • Tutorial
  • – Modified on

渲染提示能做什么,不能做什么

PostScript 渲染提示是这样一项技术,可以让基于 CFF 的字体在低分辨率的环境下获得更统一协调的显示效果。它的实现方法是,在矢量数据中插入 “提示”:帮助栅格化渲染器(为我们的字母形状创建像素图像的软件)确定某些结构是否为重要的字干,从而在完整字符形仅有少量像素的情况下,仍然得以保留。

有些人以为渲染提示是为了在屏幕上更好地保持原始形状,但事实上恰恰相反。渲染提示是用来扭曲形状,使其更好地适应像素网格。研究表明,清晰而连贯的形状能提高可读性,模糊的抗锯齿则不然。而创建清晰、连贯的字母图像,就是渲染提示要做的事。

PostScript 渲染提示旨在低分辨率下实现两个目标:其一,让字干的显示更加一致,即,相同粗细的字干像素数一致。其二,垂直量度更加一致,即基线、x 高度线、大写字母高度线等,保持平齐。

PostScript 渲染提示不会统一字宽。所以,重复输入同一个字母会得到不同的像素渲染结果。以这个 n 为例:

这是同一个 n 输入几次的结果放大来看。你会发现,前两个 n 的内部空间为四像素宽,后面的几个 n 的内部空间则有 5 像素宽。这是可以的,因为总的行长必须得以保证,如果每个 n 都有 4 像素的内部空间,一行就会太短;如果每个 n 都有 5 像素的内部空间,一行又会太长。

说到底我们有必要 / 有可能做渲染提示吗?

你可以选择使用一种叫做 “自动渲染提示器” 的软件来分析你的字体,并自动插入那些渲染提示。Glyphs 就内置了这样一个自动渲染提示器。

但是,在你开始为字体进行自动渲染提示之前,先考虑一下:你的设计真的需要在低分辨率下具有更规则的显示效果吗?很多标题字体或手写字体的设计并不需要这样。不要为那些故意做得不规则的设计添加渲染提示。尤其是当轮廓非常复杂时,就没有渲染提示的意义。

只当的字体具有一致的、重复出现的设计特征时,才进行渲染提示。比如,小写字母的自干在 b、d、f、h、i、j、k、l、m、n、p、q、r、t 和 u 等小写字母中粗细一致时。

还有,渲染提示具有以下特殊要求:

  • 全部路径方向必须正确,“路径 > 修正路径方向”(Cmd-Shift-R)可以帮忙完成。
  • 节点必须放在极值点上,至少是那些需要获得字干渲染提示的笔画需要如此。“路径 > 添加极值点” 或使用绘制工具(P)按住 Shift 单击线段,即可添加缺失的极值点。
  • 你的轮廓必须不复杂带特效、联珠串、粗糙边缘、空心字设计?那就不要添加渲染提示了。
  • 你的设计必须具有一致的垂直量度,弧笔的视觉修正也必须一致;以及相对一致的字干粗细

阅读更多关于绘制高质量路径的内容,如果你还没有读过的话。

设置自动渲染提示

我们假设你已经有了这样一个符合一致性的字体设计。这就意味着我们可以让自动渲染提示器来施展魔法了。不过,自动渲染提示器还需要我们先来提示它一下。要想获得更精确的结果,它需要两点:有代表性的标准字干粗细和有代表性的对齐区域(或简称字干区域)。这两者有时也会被称作 “字体层面的渲染提示”,和我们希望自动渲染提示器帮我们完成的 “字符形层面的渲染提示” 相对。

字干和区域两者都在 “文件 > 字体信息 > 母版”(Cmd-I)中设置。每个母版都有各自的字干和区域设置,因为它们也需要被插值:

标准字干

按以下步骤设置完美的标准字干:

  1. 首先,量取垂直和水平字干及弧笔的粗细,将其分别填入 “垂直字干” 和 “水平字干” 中。水平字干指的是小写 e 和大写 A 的横笔,以及衬线的厚度。垂直字干指的是小写 n 或大写 H 的竖笔,或大写 O 的垂直部分。
  2. 所取数值的变化要尽量少,且相近的值要合并成一个。这是因为,在极低的像素下,你需要让粗细相近的字干拥有的像素数相同。最后,你的水平和垂直数值各不应超过两个,如有可能则各仅一个。在非常非常糟糕的情况下,你也可以有三个值,如果它们差距足够大。
  3. 如果你输入了超过一个数值,那么第一个字干值更为重要,所以请慎重选择。多数情况下,第一个值应该是你的小写字干粗细,不过当然了,哪个数值对你的字体而言更重要,这取决于你的设计意图。

对字体中的每个母版重复这一步骤。确保字干值的数字和顺序在各母版间互相兼容,这样才能够插值。

对齐区域

“对齐区域” 是指一个高度带,高度(或深度)相似但不相同的各种形状的边缘都落在这个范围里。 想象一下平直边缘、杯形衬线,以及弧形笔画的视觉修正:

在低分辨率下,你希望这些形状的像素高度都一样。换句话说,你希望边缘平直,弧笔视觉修正则应该被压回来。任何需要被压平(“对齐”)到平直边缘的内容都需要位于一个对齐区域当中。

每个区域都有各自的位置和尺寸。“位置” 指被压平到的那一边,“尺寸” 则需要要足以囊括一切需要被压平的、用于视觉修正的越线节点。形状的边缘需要正好位于这个 “位置” 或超过 “位置” 但不超过 “区域”。请注意,当视觉修正形状越线到平直边缘上方时“尺寸”为正(包括 x 高度线、大写字母和小型大写字母高度线位置、字肩、上下标数字的顶端),当视觉修正形状越线到平直边缘下方时“尺寸”为负(包括基线、下降部线位置,以及上下标数字的底端)。

  1. 确保垂直量度设置正确:上升部,大写字母高度,x 高度,下降部。这里输入的值不应包括视觉修正。如果不确定的话,就选择靠近基线的那个高度值。
  2. 如果你有小型大写字母,你可能要添加自定义参数 smallCapHeight 并将其高度设置为自定义参数的值。
  3. 对于印度文种和阿拉伯文字体,你可以添加一个 shoulderHeight 参数来获得额外的对齐区域。
  4. 然后,按下 “对齐区域” 旁的 “更新” 按钮(灰色圆形箭头)。Glyphs 会根据你的垂直量度设置,以及字体母版中的实际视觉修正量,来猜测对齐区域的值。对于视觉修正,软件会测量几个关键字符形来进行判断,例如小写 o、f、g,大写 O 以及小型大写 o.sc. 如果这些字符形不在字体中,那么默认值将设为 16。
  5. 最好检查一下 Glyphs 猜测的区域是否正确。所以,快度浏览一下你的字符形,看看是否有哪个视觉修正没被包含在对齐区域中。如果你的 “显示 > 显示量度”(Cmd-Shift-M)选项打开,Glyphs 会将对齐区域显示为米色,并突出显示区域中的节点。
  6. 当你应用压缩区域时,请保持它们尽量小。根据经验规则,一个区域不应大于 25 单位
  7. 你可以设置最多 6 个上区域(正值)和最多 6 个下区域(负值)。只要你创建了区域,那么其中必须要有一个基线上的区域。
  8. 这个强制的基线区域必须位于 0 点且尺寸值为负。
  9. 区域之间不得重叠。任意两个区域之间要有至少 1 单位的间距。(要想更加精确,距离必须是至少 1 + 2 × blueFuzz。 参见后文的 “blueFuzz” 一节来了解更多细节。)

同样,为每个母版重复这些步骤。确保所有对齐区域的数目和顺序在每个母版中都相同。因为区域不能互相重叠,在插值时也不能出现一个区域越过另一个的情况。

几点提示:

要想核查字母高度的一致性,可以考虑使用 “ShowTopsAndBottoms” 插件。通过 “窗口 > 插件管理器” 安装,重启软件后通过 “显示 > 显示 tops and Bottoms” 来激活。它会指出超过对齐区域的字母边界:

Mark Frömberg(@mark2mark)写过一个可以一次设置所有区域的脚本。你可以在他的脚本库中找到这款插件,位于 “Font > Set Size for Alignment Zones”。

如果你的 “文件 > 字体信息 > 其他设定 > 细分” 值不是 1(即,坐标值包含小数),你需要将每个对齐区域向两侧各扩展一个单位。比如,位于 500 处、15 宽的 x 高度压缩区域必须要偏移到 499 处、17 宽。只有基线位置保持在零点。在 mekkablue 脚本库中,你会找到 “Hinting > BlueFuzzer” 脚本,在你需要的时候,可以帮助你准确完成这个设置:

脚本名称源于下文会介绍的 blueFuzz 功能。在这个库的 “Hinting” 子菜单中,你还能找到更有用的脚本。

应用自动提示

全部设置完成后,你就可以实际执行自动渲染提示了。在 “文件 > 导出” 中勾选 “自动渲染提示” 即可。当然了,因为 PostScript 自动提示是一项 PostScript 技术,所以只能应用于 CFF 字体,而无法应用于 TrueType 字体。所以,你也需要取消勾选 “保存为 TTF” 选项:

通过在 “文件 > 字体信息 > 子样” 中添加 “Autohinting” 自定义参数,你也可以强制自动渲染提示的开关,而无关导出对话框中的设置。

就是这样!还算不坏吧。

测试渲染提示

现在,导出字体时勾选 “自动添加渲染提示” 选项。你可以在支持 PostScript 渲染提示的应用程序中加以测试。Mac OS X 整体上会忽略渲染提示,所以你需要求助于 Adobe 应用程序。我推荐使用 InDesign。

要想更清楚地看到像素,你可以使用 Mac 内置的屏幕放大器:前往 “系统偏好设置 > 辅助功能 > 缩放”,在那里,打开 “使用滚动手势” 选项,并关闭 “平滑图像”:

这样,你就可以按下 Ctrl 键,或你在 “滚动手势” 下拉菜单中设置的那个修饰键来缩放,实际上就是放大了屏幕上的像素。在 MacBook 的触控板上,你可以上下滑动两个手指来滚动。

举个例子,下图显示了 Typejockeys 的 “Henriette” 字体没有添加渲染提示时在 InDesign 中的样子:

同样的字体,同样的文本,同样的应用程序,但这次添加了渲染提示:

请注意,文本变得更加清晰,模糊更少,字母的字干粗细和高度也更加一致了。

blueScale

在 “文件 > 字体信息 > 字体” 中,你可以添加 blueScale 自定义参数来控制弧笔视觉修正在多大的字号以下才被压缩。更确切地说,blueScale 控制对齐区域被压平的的 PPM 尺寸。再换一种说法:像素尺寸多大时,弧笔视觉修正不再被压缩。大于等于 blueScale 尺寸时,对齐区域中的弧笔视觉修正至少会显示为一像素。blueScale 值的计算方式为 (PPM 尺寸 × 72 ÷ 300 − 0.49) ÷ 240。最大的 PPM 可能尺寸取决于对齐区域的大小,计算方式为 (0.49 + 240 ÷ 以单位计的最大对齐区域尺寸) ÷ 72 × 300.

备注:PPM 代表 “每全身字宽的像素数”(Pixels per em),就是以像素为单位的字号,意味着用于显示一个全身字宽的像素数量,正如其名。默认状态下,一个全身字宽就是 1000 字体单位。不过,你可以在 “文件 > 字体信息 > 字体 > 每全身字宽单位数” 设置不同的值。在分辨率为 72 ppi 时PPM 值等于字号的点数(pt)值。这一分辨率正好是 macOS 和 Adobe 应用程序对屏幕分辨率的预设值(非视网膜屏幕)。

例:你最大的对齐区域有 18 单位宽。这意味着理论上,弧笔视觉修正直到字号为 (0.49 + 240 ÷ 18) ÷ 72 × 300 = 57 PPM 时都不会显示出来,换句话说,在所有小于等于 56 PPM 的字号下,弧笔视觉修正都会受到压缩。现在比如你想让视觉修正在 40 PPM 以下被压缩,那么在所有大于等于 41 PPM 的字号下,视觉修正都可见。设置成这个字号是可行的,因为它比我们刚刚计算出来的 56 或 57 PPM 要小;即是说,我们是可以在 56 以下都压缩视觉修正的,但我们选择在 40 PPM 以下才压缩。所以,你需要做的就是将你的 blueScale 参数设置为需要显示视觉修正的最小字号(大于等于 1)所对应的 blueScale 值:(41 × 72 ÷ 300 − 0.49) ÷ 240 = 0.03896。

这个数学公式吓到你没?没关系,这里有一个很方便的表格,能够帮你找到适合你字体的正确 blueScale 值(说明见下):

视觉修正始于的 PPM 字号(= 72ppi 下的点数字号) 96ppi 下的字号(Windows) 144ppi 下的字号(视网膜屏) 对齐区域的最大尺寸 “字体信息 > 字体”中的 blueScale 值
20 px 15 pt 10 pt 55 u 0.01796
21 px 16 pt 10 pt 52 u 0.01896
22 px 16 pt 11 pt 50 u 0.01996
23 px 17 pt 12 pt 47 u 0.02096
24 px 18 pt 12 pt 45 u 0.02196
25 px 19 pt 12 pt 43 u 0.02296
26 px 20 pt 13 pt 41 u 0.02396
27 px 20 pt 14 pt 40 u 0.02496
28 px 21 pt 14 pt 38 u 0.02596
29 px 22 pt 14 pt 37 u 0.02696
30 px 22 pt 15 pt 35 u 0.02796
31 px 23 pt 16 pt 34 u 0.02896
32 px 24 pt 16 pt 33 u 0.02996
33 px 25 pt 16 pt 32 u 0.03096
34 px 26 pt 17 pt 31 u 0.03196
35 px 26 pt 18 pt 30 u 0.03296
36 px 27 pt 18 pt 29 u 0.03396
37 px 28 pt 18 pt 28 u 0.03496
38 px 28 pt 19 pt 27 u 0.03596
39 px 29 pt 20 pt 27 u 0.03696
40 px 30 pt 20 pt 26 u 0.03796
41 px 31 pt 20 pt 25 u 0.03896
42 px 32 pt 21 pt 25 u 0.03996
43 px 32 pt 22 pt 24 u 0.04096
44 px 33 pt 22 pt 23 u 0.04196
45 px 34 pt 22 pt 23 u 0.04296
46 px 34 pt 23 pt 22 u 0.04396
47 px 35 pt 24 pt 22 u 0.04496
48 px 36 pt 24 pt 21 u 0.04596
49 px 37 pt 24 pt 21 u 0.04696
50 px 38 pt 25 pt 20 u 0.04796
51 px 38 pt 26 pt 20 u 0.04896
52 px 39 pt 26 pt 20 u 0.04996
53 px 40 pt 26 pt 19 u 0.05096
54 px 40 pt 27 pt 19 u 0.05196
55 px 41 pt 28 pt 18 u 0.05296
56 px 42 pt 28 pt 18 u 0.05396
57 px 43 pt 28 pt 18 u 0.05496
58 px 44 pt 29 pt 17 u 0.05596
59 px 44 pt 30 pt 17 u 0.05696
60 px 45 pt 30 pt 17 u 0.05796
61 px 46 pt 30 pt 16 u 0.05896
62 px 46 pt 31 pt 16 u 0.05996
63 px 47 pt 32 pt 16 u 0.06096
64 px 48 pt 32 pt 16 u 0.06196
65 px 49 pt 32 pt 15 u 0.06296
66 px 50 pt 33 pt 15 u 0.06396
67 px 50 pt 34 pt 15 u 0.06496
68 px 51 pt 34 pt 15 u 0.06596
69 px 52 pt 34 pt 14 u 0.06696
70 px 52 pt 35 pt 14 u 0.06796
71 px 53 pt 36 pt 14 u 0.06896
72 px 54 pt 36 pt 14 u 0.06996
73 px 55 pt 36 pt 14 u 0.07096
74 px 56 pt 37 pt 13 u 0.07196
75 px 56 pt 38 pt 13 u 0.07296
76 px 57 pt 38 pt 13 u 0.07396
77 px 58 pt 38 pt 13 u 0.07496
78 px 58 pt 39 pt 13 u 0.07596
79 px 59 pt 40 pt 12 u 0.07696
80 px 60 pt 40 pt 12 u 0.07796

说明:首先,你需要知道你想要在哪个尺寸以下压缩视觉修正(最左栏)。PPM 尺寸等同于非视网膜 Mac 屏幕上的点数尺寸,或非视网膜屏幕上 Adobe 应用程序中在 100% 缩放下的点数尺寸。作为参考,表格中也添加了一栏用于显示 96 ppi(Windows 应用程序)以及 144 ppi (视网膜屏幕上的 Mac 和 Adobe CC)下的字号,然后,你需要检查一下 “文件 > 字体信息 > 母版” 中最大的对齐区域是否超出了 “对齐区域的最大尺寸” 一栏中的数值。如果一切检查无误,你可以在 “文件 > 字体信息 > 字体” 的自定义参数中使用最右栏中的 blueScale 值。不过,如果你最大的对齐区域比同一行中所示的最大尺寸还要大,你就需要向上找,找到最大值和你的对齐区域尺寸一致的那一行,使用那一行的 blueScale 值。

例:你想要对 Windows 中 39 pt 以下的字号压缩弧笔视觉修正,而你在 “文件 > 字体信息 > 母版” 中设置的对齐区域最大为 21 单位。你需要在第二列 96 ppi 下的字号中寻找 40 pt 的那一行,因为这是你需要让视觉修正得以显示的最小字号。我们的表中有两行 40 pt,选择哪一行都可以——如果你选了 PPM 更大的一个,视觉修正的出现条件会更加苛刻;PPM 较小的话,视觉修正出现的字号会稍稍小一些。本例中,我选了 54 像素的字号,因为我觉得视觉修正压缩得多点比较酷。不过啊,对齐区域最大只能是 19 单位,所以我们要么调整字体的设计,保持视觉修正在 Windows 中 39 pt 以下出现;要么就妥协一下,选择下一个允许出现 21 单位宽视觉修正的 blueScaleunit 值。那就是 49 像素 PPM,或 96 ppi 分辨率下 37 pt 字号的那一行。

blueShift

blueShift 参数用于在 blueScale 指定的字号大小以上的情况下压缩小尺寸的视觉修正(例如小型数字、上标或杯形衬线凹陷)。这一参数值以 “单位” 计,默认为 7。比较好的做法是,输入衬线凹陷深度或小视觉修正突起厚度 + 1 单位。比 blueShift 还小的结构就会压缩得更多,相比其他更大的视觉修正而言。

更确切地说,在超过 blueScale 尺寸的 PPM 字号下,对齐区域中的视觉修正在下列条件下会显示出来:

  • 如果它们大于等于 blueShift(即是正常的视觉修正),或者
  • 如果它们小于 blueShift 但实际尺寸大于半个像素(小尺寸视觉修正)。

小尺寸视觉修正在 PPM 字号超过 500 ÷ (以单位计的视觉修正尺寸) 时,大小才会超过半个像素。同样,这里有个速查表:

blueShift(以单位计的视觉修正尺寸) 显示为半个像素的 PPM 字号(分辨率 72ppi) 分辨率 96ppi 下的 PPM 分辨率 144ppi 下的 PPM
1 u 500 375 250
2 u 250 187 125
3 u 166 124 83
4 u 125 93 62
5 u 100 75 50
6 u 83 62 41
7 u 71 53 35
8 u 62 46 31
9 u 55 41 27
10 u 50 37 25
11 u 45 33 22
12 u 41 30 20
13 u 38 28 19
14 u 35 26 17
15 u 33 24 16
16 u 31 23 15
17 u 29 21 14
18 u 27 20 13
19 u 26 19 13
20 u 25 18 12

例:blueScale 设置为在 32 PPM 以下压缩视觉修正,blueShift 为 6 单位,视觉修正深度为 12 单位。某些笔画的末端有少许倾斜,超过基线仅 5 单位。所以我们在 “文件 > 字体信息 > 字体” 中添加名为 blueScale 的自定义参数。在 0 到 32 PPM 之间,基线会保持平直。从 33 PPM 开始,视觉修正会显示为 1 像素高;但倾斜的笔画末端仍是平的,因为 5 单位的大小直到 100 PPM 字号才会达到半个像素。

blueFuzz

在 “文件 > 字体信息 > 字体” 中你还可以添加一个名为 blueFuzz 的自定义参数。其作用是,根据参数中所指定的值,将对齐区域向上下扩展相应个单位。

例:假如你有一个对齐区域,位于 500 单位高,大小为 12 单位,所以它实际覆盖 500 到 512 高度的一切。一个值为 1 的 blueFuzz 会将这个区域向上下各拓展 1 单位,所以它将会覆盖 499 到 513。

那么,你为什么要用这种方式,而不是实际改变区域本身的设定值呢?毕竟在上例中,我们直接把位置设为 499、尺寸设为 14 就可以了,对不对?这里一个原因是,让对齐区域不至于在特定的像素尺寸下被贴齐到更低的像素上去。比如,在某字号下,一个像素是 27 字体单位高,那么位于 499 的对齐区域会被贴齐到(499 ÷ 27 = 18.48148 ≈)18 像素。如果我们保持它为 500,仅将 blueFuzz 值设为 1,那么 x 高度就仍为(500 ÷ 27 = 18.51852 ≈)19 像素。

如果你觉得这样吹毛求疵有点过头了,特别是这样的设置真正能够产生效果的的场合相当罕见,这也没问题,删掉这个参数或者将其值设置为零即可。毕竟,你的客户可能也不会为它多付一笔钱,甚至根本不会注意到它。此外,Adobe 官方建议不要在正式出品的字体中使用这一参数,只建议用于测试目的(如果有这样的目的的话)。

不过,我们没有证据表明在 blueFuzz 值设置为大于 0 时字体会出现故障。你可能的确也会遇到这样的情况,并且能够合理地这样设置。在这种情况下,请注意你的对齐区域设置可能会产生这样一种后果:任何两个区域的间距必须至少为 2 × blueFuzz + 1。所以你最终可能需要调整对齐区域的位置,而这可能并不值得。但当然了,决定权在你。

家族对齐区域

现在比如说你完成了所有设置工作,你的字体家族中的每款字体看上去都很好,所有的垂直高度都很清晰,所有字干都保持一致,一切的一切都很好。然后你产生了一个疯狂的想法,在 InDesign 中排了一份常规字重的瀑布样张,然后为了好玩,你在每一个字号下都设置了粗体。如果你的字体正确设置了样式链接,就可以通过按下 Cmd-Shift-B 在常规和粗体之间切换。(在字体命名教程中阅读更多有关 “样式链接” 的内容。)你会看到这样的结果:

发现没有,8pt 那一行中,粗体的 x 高度高出了一像素?哦,我们可不想这样,是吧?我们所需要的,是一个应用于整个家族的对齐区域,而不仅用于每款单独的字体。的确有这么一回事,它叫做 “家族对齐区域”,在 “文件 > 字体信息 > 字体”(Cmd-I)中通过自定义参数设置:

大多数情况下,最好是复制字体家族中最重要那款字体的对齐区域设置:通常是 Regular 或 Book 子样。若单独字重的高度和家族对齐区域高度之差小于一像素,栅格化渲染器便会尽量对齐全部字重。

专业提示 :如果你没有常规字重的母版(例如你的 Regular 是通过 Light 和 Bold 插值生成的),然后想要知道常规字重的对齐区域是什么样的,你可以停用除 Regular 外的所有子样,然后运行 “文件 > 生成子样”。这一操作会以 Regular 子样作为母版创建新的 Glyphs 文件。然后你就可以从 “文件 > 字体信息 > 子样” 中读取对齐区域数值了。

现在我们添加了合适的 “Family Alignment Zones” 参数,就可以再次导出并在 InDesign 中测试了。我们来看一下有没有什么帮助:

真神奇!现在 8pt 的粗体也和相应的常规体一样,贴齐了同样的 x 高度!如果你没有这么幸运,字体的像素高度并不一致,那么考虑调整一下家族对齐区域的位置,或许还有尺寸。

最后手段:手动提示

如果某些字符形还是表现得很奇怪,首先检查一下它们是否符合上面列出的所有标准。并在必要的地方修正你的轮廓和设置。还不行吗?你可能不得不继续手动为某些字符形添加渲染提示,因为自动提示器并非在任何情况下都能产生可靠的结果,你就必须自己接手了。但是你只需要在第一个需要特别注意的字符形母版中这样做即可。通常而言,这样的情况不多。如果有这种情况的话。


示例字体:HENRIETTE by MICHAEL HOCHLEITNER,以及 SEPHORA SANS by MUCCA/SCHRIFTLABOR

2015-3-30 更新:部分重写,更换了更好的截图。
2016-02-19 更新:更换为 Glyphs 2 截图。
2016-12-03 更新:添加了“辅助功能”系统偏好设置。
2017-05-27 更新:大规模重写,添加自定义参数,插件,脚本和截图。
2018-08-21 更新:添加 blueScale 和 blueShift 表格,附近的一些内容重写;添加 blueFuzz 一节,各处调整措辞。
2019-03-04 更新:删去了 blueShift 表格中错误的一栏。
2019-03-28 更新:更正了对齐区域的可能数目,强调了基线区域的必要性。

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