跳转到主要内容

字体工程工具:构建、检查和压缩

适合谁看:已经会用编辑器,想把字体源文件自动生成成品字体、做质量检查、输出网页字体的设计师和开发者。

为什么需要「工程工具」

在编辑器里点「导出」能得到字体文件,但项目一大,就会遇到这些问题:

  • 字重多、格式多,每次手动导出容易漏;
  • 多人协作,需要每次都用同一套设置生成;
  • 发布前要检查几十上百项规范,人工检查不现实。

所以很多开源字体项目会把「源文件 → 成品字体 → 检查 → 压缩」写成命令,一条命令跑完。

常见工具一览

环节 工具 许可证 做什么
构建 fontmake Apache-2.0 把 .glyphs、.designspace、.ufo 源文件编译成 OTF、TTF 或可变字体
构建 fontc Apache-2.0 用 Rust 重写 fontmake 的字体编译器,项目说明称目标是安全和快速
构建(底层库) glyphsLib Apache-2.0 把 Glyphs 源文件转换成 UFO 和 designspace
构建(底层库) ufo2ft MIT 把 UFO 源文件编译成 OpenType 字体
检查 Font Bakery Apache-2.0 命令行字体质量检查工具,内置多套检查规则
检查 Fontspector Apache-2.0 Font Bakery 的 Rust 移植版,项目页称其为 Font Bakery 的继任者
压缩 woff2 MIT Google 的 WOFF2 参考实现,woff2_compress / woff2_decompress
网页 glyphhanger MIT 找出网页用到哪些字,并据此生成子集
网页(中文) cn-font-split Apache-2.0 把中文字体按字分片,生成带 unicode-range 的 CSS

许可证信息来自各项目的 GitHub 页面(2026 年 10 月查阅)。

一个最小的流程

# 1. 从 Glyphs 源文件生成可变字体
fontmake MyFont.glyphs -o variable

# 2. 质量检查(通用规则)
fontbakery check-universal variable_ttf/*.ttf

# 3. 压缩成 WOFF2
fonttools ttLib.woff2 compress variable_ttf/MyFont-VF.ttf

实际的输出文件名和目录以工具的说明为准。fontmake 不指定格式时,默认输出 OTF 和 TTF。

检查工具查什么

Font Bakery 这类工具会检查:

  • 字体名称、版本号、版权和许可信息是否齐全一致;
  • 字重数值(如 400、700)和样式名是否对应;
  • 垂直度量(行高相关数值)是否合理;
  • 轮廓有没有明显问题、可变字体的轴设置是否规范。

不同平台(如 Google Fonts、Adobe Fonts)有各自的检查规则集。检查报告里的「失败」不一定都要改,但每一条都值得看懂。

中文项目的特别之处

  • 中文字体字数多,构建和检查耗时长,可以先用少量字试跑流程;
  • 发布网页字体时,中文一般需要子集或分片,见《中文网页字体为什么要拆分子集》 和《按字分片:cn-font-split》;
  • 大型字库的分工协作见《大型字库怎么协作:以思源黑体为例》。

参考资料