IPAK

制作过程

字体是怎样检验的

工作字体 Ipak Davlat 发布前检验什么、为什么检验:自动检查、四个检查方向、真实词语上的替换测试,以及用测量代替目测。

Ipak Davlat 是 Ipak 字体库的工作字体。它建立在开放字体 Overpass 之上,其上添加了乌兹别克层:符号 ʻ 和 ʼ、带 Ў Қ Ғ Ҳ 的西里尔字母紧排、字母 Ö Ğ Ş Ç、标牌用的变体。字体在发布之前要经过检验。下面讲检验什么、为什么检验、怎样检验。

发布规则

只有当连续两次独立检验都没有发现需要修复的问题时,字体才会发布。如果检验之后改了什么,下一次检验就从头算起。

并非每条意见都妨碍发布。“留给未来”的愿望单独记录,转入下一个版本。妨碍发布的只有那种不修复就无法发布字体的错误:错误的符号、字母粘连、损坏的装配。

自动检查

先由程序检查字体。它们不评价美观,但不会放过技术错误。

  • Font Bakery——一套开放的字体检查:文件里的名称和度量、必需字符的有无、各表的正确性。Ipak Davlat 剩下的意见属于基础字体 Overpass,而不属于乌兹别克层。
  • OTS(OpenType Sanitizer)——Chrome 和 Firefox 浏览器加载网页字体前所用的检查。如果 OTS 拒绝文件,网站就干脆不显示它。Ipak Davlat 通过它而没有意见。

四个检查方向

程序不会告诉你,标牌在大厅另一头能不能读清。所以字体要由人来看,每人有自己的任务。

方向 检查什么
排版 字母间距、紧排、组合中的 ʻ ʼ 符号、排版的均匀
乌兹别克语 正确的字符、示例的正字法、符号替换、Ö Ğ Ş Ç 字母和西里尔字母
招牌与导视 大写、远看和小字号下的可读性;箭头、数字、标牌效果图
技术与授权 装配、自动检查、文件内的名称、对基础字体许可的遵守、字体页面文字的准确性

检验者拿到字体、样张页面和标准。之前改了什么、为什么改,不告诉他:这样目光保持新鲜,不会对旧错误习以为常。

用 Ipak Davlat 排出的机场显示屏效果图
用 Ipak Davlat 排出的机场显示屏效果图:箭头、数字和中点作为标牌的一部分接受检验,而不是分开来查 Ipak;字体——SIL OFL 1.1 · CC BY 4.0 · Ipak

这样的检验能发现什么

检验在 Ipak Davlat 中发现过的意见举例:

  • **没有位置的中点。**基础字体里“·”被标成上标符号,落到前一个字母上:“5·10”被读成“510”。详见《远看的招牌》一文。
  • **I 与 l、O 与 0。**标牌上远看无法区分。于是有了带尾的 l 和带斜线零的样式集。
  • **别的语言里的替换。**英语的 King's 变成过 Kingʻs。对英语、德语、法语、俄语和另外一些语言,替换被关闭,并为词尾的 's 做了例外。
  • **网站上未标记语言的文本。**如果页面没有标语言,浏览器取界面语言,替换不生效。门户上的样张都标记为乌兹别克语。
  • **宽度和高度不一的箭头。**箭头用同一轮廓重新画出,并有共同的中心。

最刁钻的错误不出现在基础字体里,而出现在自己的修复里。例如 ng 的规则。乌兹别克语里 ng 是一个字母,词尾的它后面不需要符号 ʻ:‘tong’ 不应变成 ‘tongʻ。为这个情况写的第一个例外开得太宽,弄坏了 qoʻngʻiroq、changʻi 和 toʻngʻich——替换功能正是为这些词存在的。另一个例子:带尾 l 起初替换了 l 的图形本身,于是 ĺ ļ ľ 和连字 fl 也一起得到了尾巴,因此与邻居粘在了一起。现在带尾 l 是一个独立的字符。

真实词语测试

为了这类错误不再回来,替换由测试来检验。测试里记录着词按普通键盘的输入方式、文本的语言,以及字体应该显示的样子。例如 qo'ng'iroq 应该变成 qoʻngʻiroq,‘tong’ 应该保持 ‘tong’,而标记为英语的文本里的 King's 不变。测试用 HarfBuzz 引擎——就是浏览器里工作的那一个——在两个字款里排出每个词,把选中的字符与期望比较。

规则很简单:每一条关于替换的意见都成为测试的新一行,而测试在每次装配后运行。

左边是普通键盘输入的文本。右边是 Ipak Davlat Bold 启用符号替换后显示的样子
左边是普通键盘输入的文本。右边是 Ipak Davlat Bold 启用符号替换后显示的样子 Ipak;由 IpakDavlat-Regular.ttf 和 IpakDavlat-Bold.ttf v0.1 经 HarfBuzz 渲染;字体——SIL OFL 1.1 · CC BY 4.0 · Ipak

测试也固定了已知的限制。带引号的以 -g 结尾的外来词,如 'pedagog',词尾会得到 ʻ:按输入的字符,它与乌兹别克的 bogʻ 无法区分。只有靠词典才能区分,而字体没有词典。测试盯着这一点,免得这个行为悄悄改变。

用测量代替目测

有争议的地方用数字解决。检验时有一条意见:符号 ʻ 几乎贴住 G,约1%字号。如果这被证实,字体就不能发布。

这一对被测量了。字母大幅渲染成点阵,字号对应2000单位,计算 G 与符号轮廓之间的最短距离。结果是 Regular 145单位、Bold 119单位,即字号的7.3%和6.0%。用另一种方式做的独立测量给出了相近的数字:7.8%和7.0%。意见本身提出的阈值富余地满足。符号贴近 G 是有意的:它应读作字母 Gʻ 的一部分,而不是一个独立的引号。

意见被驳回,决定之外还记下了数字和测量方法。

Ipak Davlat Bold 中紧挨着 G 的符号 ʻ。红线是轮廓之间的最短距离,约为字号的6%
Ipak Davlat Bold 中紧挨着 G 的符号 ʻ。红线是两轮廓之间的最短距离,约为字号的6% Ipak;由 IpakDavlat-Bold.ttf v0.1 经 HarfBuzz 渲染;字体——SIL OFL 1.1 · CC BY 4.0 · Ipak

由此得出的规则

  1. **字体被检验时,不改文件。**所有检验者看的是同一个装配。修改在之后进行。
  2. 每条替换修改都带一行测试。
  3. **字体页面上的数字取自字体本身。**页面在发布前由脚本生成,像紧排对数这样的数字由它自己数出,而不是手工誊写。
  4. **愿望与修改分开。**不妨碍发布的东西等下一个版本。

结语

字体检验不是一次鉴定,而是好几层:程序抓技术错误,人从四个方面看排版、语言、标牌和许可,真实词语测试不让旧错误回来,有争议的地方由测量裁决。最严重的错误通常出现在自己的修复里——因此测试和“文件被检验时不去动它”的规则比任何细心都重要。

来源

检验工具:Font Bakery、OpenType Sanitizer(OTS)、HarfBuzz;calt 特性的说明——OpenType 规范;字体的基础——Overpass。测量与测试是我们自己的:基于 Ipak Davlat v0.1 构建,2026年10月。

链接: