fontTools 入门:查看、修改、转格式


目录

适合谁看:想用命令行查看字体信息、做子集、转 WOFF2 的开发者和技术型设计师。不需要会写程序,照着命令改文件名就能用。

fontTools 是什么

fontTools 是一个用 Python 编写的开源字体工具库(MIT 许可),由 fonttools 社区维护。很多字体工具(包括 fontmake、Font Bakery)都建立在它之上。装好后会得到一组命令:

安装

pip install fonttools brotli

brotli 用于 WOFF2 压缩,只做查看可以不装。

常用操作

以下命令在 fontTools 4.66 上实测通过,文件名请换成你自己的。

1. 看字体里有哪些表

ttx -l MyFont.ttf

2. 导出 name 表(字体名称、版权、许可等信息)

ttx -t name MyFont.ttf

会生成 MyFont.ttx,用文本编辑器打开即可。name 表各编号的含义见《看懂字体信息:名称、版本、字重和许可》。

3. 整个字体转成 XML 再转回来

ttx MyFont.ttf      # 生成 MyFont.ttx
ttx MyFont.ttx      # 转回字体;如果同名文件已存在,会生成 MyFont#1.ttf

适合检查或少量修改字体数据。

4. 只保留一段文字用到的字(子集)

pyftsubset MyFont.ttf --text-file=chars.txt --layout-features='*' --flavor=woff2 --output-file=MyFont-sub.woff2

chars.txt 里放要保留的文字;--layout-features='*' 保留全部排版功能(如标点挤压、竖排替换),中文字体建议加上。

5. 转成 WOFF2 / 从 WOFF2 转回来

fonttools ttLib.woff2 compress MyFont.ttf
fonttools ttLib.woff2 decompress MyFont.woff2 -o MyFont.ttf

6. 从可变字体导出某个字重的静态字体

fonttools varLib.instancer MyFont-VF.ttf wght=700 -o MyFont-Bold.ttf

也可以写成 wght=300:700,只保留这个范围内的字重(结果仍是可变字体,范围会受原字体的默认值限制)。

用 Python 读字体信息

from fontTools.ttLib import TTFont

font = TTFont("MyFont.ttf")
print(font["name"].getDebugName(1))   # 字体族名
print(font["name"].getDebugName(5))   # 版本
print(font["OS/2"].usWeightClass)     # 字重数值,如 400
print(font["OS/2"].fsType)            # 嵌入许可标志
print(ord("啊") in font.getBestCmap()) # 有没有「啊」这个字

查某个字在不在字体里,详见《怎么查一款字有没有某个字》。fsType 的含义见《字体文件里的「嵌入权限」》。

修改字体之前

用 fontTools 改字体名称、删减字符,属于「修改字体」。能不能改、改完能不能发布,要看许可证:

详见《SIL 开放字体许可证(OFL)逐条读》 和《自托管网页字体的许可要点》。

参考资料


版本号 #4
由 壳壳虫 创建于 2026-10-29 03:03:23 UTC
由 壳壳虫 更新于 2026-10-29 04:48:08 UTC