Ttfautohint – 99% 的自动化字体提示过程

2021-07-26 03:31:49

ttfautohint 提供了一个 99% 的自动化提示过程和一个用于精细手工提示最后 1% 的平台。它是网页字体的理想选择,并支持多种文字:拉丁文、希腊文、阿拉伯文、梵文、希伯来文、高棉文、缅甸文、泰文等等。另一个错误修复版本,版本 1.8.3,纠正了具有复杂轮廓的字形可能出现的失真。蒙古语支持已作为新功能添加今天我发布了一个错误修复版本,版本 1.8.2,主要是为了让 ttfautohintGUI 在自制软件上再次编译。然而,格鲁吉亚用户可能会感到高兴,因为唯一的新功能是对 Mtavruli 的支持,该功能最近已添加到 Unicode 11。新的一年从新的 ttfautohint 版本开始,版本 1.8.1! (由于公开标记 git 存储库后发现了严重的配置错误,因此未发布 1.8 版。)其主要新功能是第三种词干宽度和定位模式,“自然”:不调整词干宽度,离散蓝色区域定位。这就是 FreeType 用于其“轻”(自动)提示模式的内容。另一个重要的改进是可以手动覆盖提示过程的词干宽度。这对于超粗字体特别有用,其中算法派生的值通常太大,导致在像“e”或“a”这样的字形中填充小尺寸的“眼睛”。最后,ttfautohint 现在也作为库安装(如果您使用 Unix 工具链进行构建和安装)。此版本主要支持一系列新脚本:Adlam、Avestan、Bamum、Buhid、Unified Canadian Syllabics、Carian、Chakma、Coptic、Cypriot、Deseret、Glagolitic、Gothic、Kayah Li、Lisu、N'Ko、Ol Chiki、 Old Turkic、Osage、Osmanya、Saurashtra、Shavian、Sundanese、Tai Viet、Tifinagh、Vai——非常感谢 Sascha Brawer 贡献了大部分代码!

期待已久的 1.6 版本终于出来了!它的主要新功能是支持参考文件,所有蓝色区域值都来自该文件。除此之外,还添加了大量新文字:亚美尼亚语、切诺基语、埃塞俄比亚语、格鲁吉亚语、古吉拉特语、古尔穆基语、卡纳达语、马拉雅拉姆语、僧伽罗语和泰米尔语。我刚刚发布了 1.5 版,它主要支持一些新脚本:高棉语、缅甸语和孟加拉语(以及下一个版本中将出现的更多印度语脚本)。有关其他更改和错误修复的信息可以在发行说明中找到。由于将控制指令应用于类似重音的字形时存在严重错误,因此有必要发布 1.4.1 版(不包含其他值得注意的更改)。所有用户都应该升级。 1.4 版出来了!它现在支持提示为老挝语、泰语和阿拉伯语等提供字形的字体。它还修复了控制指令文件中使用的“touch”关键字的烦人小问题。我已经发布了 1.3 版。除了支持泰卢固语外,还有一个新工具可以并行测试 ttfautohint 的参数。从昨天开始,1.2 版可供下载。最重要的变化是在低级别微调提示过程的新可能性。 1.1 版现已推出。主要的新功能是支持梵文脚本——请测试!如果您需要提示 GDI ClearType,您应该升级到这个版本,因为一些与词干宽度计算相关的错误已被识别和修复。像往常一样,可以在此处找到重要更改的完整列表。

ttfautohintGUI 1.00 版的 Windows 二进制文件无法按预期独立运行。请重新下载(新的 .7z 存档日期为 26-Mar-2014,大小为 3278316 字节)。终于,期待已久的 1.0 版本来了!与 1.00rc1 版本相比,内存管理得到了改进,以避免在某些情况下过度分配。对符号字体的支持也已得到修复。如前所述,GDI ClearType 提示现在要好得多。但是,我错过了显示比较图像,现在我这样做了。顶部和底部图像(显示使用 ttfautohint 处理的 Ubuntu 常规图像)分别是旧版本和当前版本的 ttfautohint 的输出。 Werner Lemberg 使用 ttfautohint 使字体设计师可以轻松创建在 Windows 上看起来很棒的 Web 字体。提示 TrueType 字体可能是一个缓慢而昂贵的过程,许多字体完全缺乏良好的提示,因为它们是从另一种字体格式转换为 TrueType 的。 ttfautohint 通过建立在 FreeType 的自动提示系统上解决了这个问题。它为不使用 FreeType 的平台带来了 FreeType 渲染的卓越品质,但需要提示文本才能看起来不错——比如 Microsoft Windows。在当今的 Windows 渲染环境中,ttfautohint 字体在启用 DirectWrite ClearType 的情况下看起来最好。这是 Windows 7 和更新版本的默认设置。在最近使用 FreeType 进行渲染的 MacOS X 版本和 GNU/Linux 系统中也可以看到良好的视觉效果。

该项目的主要部分是一个代码库,libttfautohint,这里描述。有具有命令行和 GUI 界面的实用程序,可以立即使用。该项目的目标是生成“第一遍”,暗示字体开发人员可以进一步改进以获得最终质量。上面的动画显示了 ttfautohint 创建的提示如何使用 FontForge 的 TrueType 提示字节码调试器以每 em 19 像素的速度应用于 Liberation Serif Regular 的美元字形。 (您可以直接查看图像以原始尺寸查看。)该项目始于 2010 年,当时 Dave Crossland 提出了该程序的想法。由于 Google Web Fonts 团队的财政支持,Werner 能够开始开发。对于字体设计师来说,提示 TrueType 字体是一个非常耗时且昂贵的过程。为字体中的大多数字形生成高质量的提示,并允许他们手动微调结果将简化所有字体设计师的生活。这个小程序旨在提高网页排版的质量!源代码存储库中的 TODO 文件提供了最终将以一种或另一种方式处理的内容的广泛列表。以下是基本项目的简短列表: 改进微调结果的方式——您已经可以控制蓝色区域和词干宽度以及 delta 指令和提示过程的其他细节,但肯定有一些方面可以改进更远。如果您对此功能有任何反馈意见,请发送电子邮件至 Werner Lemberg。

为其他工具添加钩子 - 允许与各种字体编辑器平滑集成。其中一些已经支持直接调用 ttfautohint,但还有更多工作要做,尤其是微调蓝色区域等。以高级提示命令语言发出操作 - 其他工具中使用的操作,例如 Visual TrueType (VTT) 或 FontLab,而不是仅发出最终的低级字节码。这将允许设计师手动微调结果——对于那些需要人类智能决策的棘手字形至关重要。已故的 Vernon Adams 帮助提供了比较图像,测试了不同平台上各种浏览器的输出。为此,他使用了他出色的框架来测试浏览器字体。其中一些如下所示。您应该在没有任何缩放的情况下查看图像,以便您的浏览器不会重新缩放它们。 Ubuntu 常规、Windows DirectWrite ClearType(由 Firefox 在 Windows 7 上呈现)。保留原始的手动提示,右使用 ttfautohint 应用的提示:Ubuntu 常规、GDI ClearType(由 Windows 7 上的 Chrome 呈现)。左边是原始的手动提示,右边是 ttfautohint 应用的提示:Bitstream Vera Sans、Windows DirectWrite ClearType(由 Firefox 在 Windows 7 上呈现)。左边是原始的手动提示,右边是 ttfautohint 应用的提示:

Bitstream Vera Sans、GDI ClearType(由 Windows 7 上的 Chrome 渲染)。左边是原始的手动提示,右边是 ttfautohint 应用的提示:DroidSerif Regular、Windows DirectWrite ClearType(由 Firefox 在 Windows 7 上呈现)。左边是原始的手动提示,右边是 ttfautohint 应用的提示:DroidSerif Regular、GDI ClearType(在 Windows 7 上由 Chrome 渲染)。左边是原来的手动提示,右边是ttfautohint应用的提示:最后,这里是上面示例中使用的字体文件,以便您可以自己比较提示结果。请注意,字体是使用 ttfautohint 的 1.00rc1 版本生成的(使用默认设置);他们还使用 ttx 手动编辑以更改字体名称,以便可以并行使用原始版本和使用 ttfautohint 处理的版本。最近,Jasper de Waard 完成了他的 Proza Libre 字体系列,使用 ttfautohint 进行提示,他在博客和视频中记录了这一点。 Matt Wiebe 使用 ttfautohint 的早期版本测试了 VAG Rounded 字体;他在他的博客上展示了结果。

可以在此处找到 FreeType 中自动提示的详细说明。尽管这些网页需要更新,但自动提示过程的基本原理并没有改变。有一个例外:自动提示不再尝试为单色光栅化提供良好的提示。相反,它期望具有 256 级灰度的抗锯齿,这已成为 Windows 98 的标准。 EuroTeX 2003 会议录中发表的一篇学术论文,题为实时网格拟合的排版轮廓,进一步深入了解自动提示系统的内部工作原理.在上面的链接中,缺少自动提示过程的一个方面:自动提示执行的各个步骤(称为操作)可以描述为高级操作,例如“将给定的边缘与给定的蓝色区域对齐,”或“将这条边与给定距离内的另一条边连接起来。” ttfautohint 库与这些操作挂钩,并将它们转换为字节码例程。与大多数 TrueType 提示类似,自动提示操作取决于设备分辨率。因此,ttfautohint 遍历大范围的 ppem 值(默认为 8 到 50 ppem)并将操作作为集合收集。一个典型的字形轮廓需要三到四组(覆盖整个范围),但有时需要超过十组。 ttfautohint 特意仅沿 y 轴添加提示。 Anti-Grain 研究描述了这一决定背后的一些原因。虽然文章很旧,但提到的想法仍然有效。 ttfautohint 库包含 FreeType 的“autofit”模块的副本,重新格式化并使用不同的函数前缀,并略微扩展了挂钩到提示操作的功能。因此,它继承了与 FreeType 相同的双重许可;您可以在 GNU 公共许可证 (GPL) 第 2 版和 FreeType 许可证 (FTL) 之间进行选择。 Werner Lemberg ([email protected]) 是技术主管,负责所有的编程工作。他是一位专业的古典音乐家,现居奥地利维也纳。

Dave Crossland ([email protected]) 是项目经理,他撰写并指导了本页顶部的宣传视频。他是一名专业字体设计师,住在英国伦敦。 Andy Ellis ([email protected]) 设计并制作了宣传视频。他是一名专业的动态图形设计师,住在英国伦敦。这些独立版本的 ttfautohint 和 ttfautohintGUI 没有任何依赖关系,可以在解压缩存档后直接运行。 Apple ttfautohint 1.8.3 – 目前仅限命令行;感谢 Karsten Lücke 创造了这个!这个适用于 i386 和 x86_64 架构的通用二进制文件已在 OS X 10.5.8 下编译,并且也应该在较新的版本上运行。阅读此页面如何获取 GUI 版本。 ttfautohint 的最新源包,包括 HTML、PDF 和文本格式的文档,可以从 Savannah 或 SourceForge 下载。该文档也可在线获取。所有开发都在公共 git 存储库中进行;有关详细信息,请参阅 repo.or.cz 存储库主页。注意:编译库的先决条件是 FreeType 2.4.5 或更新版本和 HarfBuzz 1.3.0 或更新版本;有关更多信息,请参阅 FreeType 的下载页面和 HarfBuzz 的下载页面。