前言
近期的一个项目中使用了特殊字体,需要将数字和英文单独打包(因为整个字体包实在是太太太大了!!),然后在网上找了蛮多教程...但是!许多在线工具都无法实现我需要的效果,所以只能另找方法啦~
And,也有尝试直接使用AI,但是没办法做到我想要的效果...

最终使用 Python 提取可变字体的静态版子集,为确保正确,使用工具再查看一遍。也可使用 Python 将可变字体修改为静态版字体,使用工具提取所需的子集。
最后,本教程将以“阿里巴巴方圆体”可变字体为例,讲解如何提取特定的文字内容、静态字重和圆角效果。
一、准备工作
(一) 安装 Python 环境
检查:打开终端(Mac)或命令行(Win),输入【python3 --version】。
安装: 如果提示找不到命令,请前往 python.org 下载并安装最新版。
注意: 安装时务必勾选 "Add Python to PATH"(Windows 用户)。

(二) 安装核心工具 FontTools
在终端输入并回车:【python3 -m pip install fonttools】
(说明:fonttools 是目前全球最通用的开源字体处理库。)

二、核心操作步骤
由于“阿里巴巴方圆体”的原始文件在 STAT 表(样式表)上存在索引逻辑错误,直接转换会崩溃,因此必须遵循“先修复、后提取”的流程。 其他字体应该不需要这一步,直接操作第二步就好啦。
(一) 第一步:修复源文件(移除坏掉的样式表)
将你的原始字体文件重命名为 Ali-VF.ttf (一定要检查好命名,命名不对会报错)放在桌面上。
在终端输入:
【cd ~/Desktop python3 -c "from fontTools.ttLib import TTFont; font=TTFont('Ali-VF.ttf'); del font['STAT']; font.save('Ali-fixed.ttf')"】
此时桌面上会生成一个名为 Ali-fixed.ttf 的文件,它是我们接下来转换的基础。
(二) 第二步:提取静态子集
1. 场景 A:提取“粗体 + 全圆角”(Bold-Round)
参数: 字重(wght)=700,圆角(BEVL)=100
在终端输入:
【python3 -m fontTools.varLib.instancer Ali-fixed.ttf wght=700 BEVL=100 -o Ali-Bold-Round.ttf】
2. 场景 B:提取“常规体 + 全圆角”(Regular-Round)
参数: 字重(wght)=400,圆角(BEVL)=100
在终端输入:
【python3 -m fontTools.varLib.instancer Ali-fixed.ttf wght=400 BEVL=100 -o Ali-Regular-Round.ttf】
3. 场景 C:提取“常规体 + 全圆角 + 全部数字与英文大小写”
参数: 基于场景 B 已经生成的静态字体(Ali-Regular-Round.ttf),利用 --text 参数指定需要保留的字符(数字 0-9,大写 A-Z,小写 a-z),剔除所有中文字符和其他标点符号。
在终端输入:
【python3 -m fontTools.subset Ali-Regular-Round.ttf --text="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" --output-file=Ali-Regular-Round-EN-Num.ttf】
执行完毕后,桌面上生成的 Ali-Regular-Round-EN-Num.ttf 就是一个体积极小、只包含英文和数字的纯净版字体包了。
三、提取所需文字内容(子集化)
这里我是下载了一个软件,除了子集化还可以预览,直接通过终端也是可以做到的。
软件名称:SubFont(Mac电脑、免费下载)
下载安装好后,将上面提取出来的字体包拖入到左侧原始字体框内,可以快速选择提取范围或自定义,其他的不用管。
底部可切换TTF和OTF两种格式,APP中的特殊字体包直接选TTF就可以(默认的就ok),点击右侧导出按钮,搞定。

纯预览的话,Mac电脑本身也是可以直接预览的。直接双击就可以啦~

也有蛮多在线工具网站可以直接预览,例如:
FontDrop! (fontdrop.info)
特点: 界面极其简洁的拖拽预览工具。
优势: 能够清晰展示字体中包含的所有字形 (Glyphs)、连字 (Ligatures) 以及 OpenType 特性,非常适合用来快速确认特殊字符是否正常渲染。

四、 常见问题与解决方案
问题一:
zsh: command not found: python
原因分析:系统路径里没有 python 这个简写。
解决方法:使用 python3 代替 python。
问题二: No module named fonttools
原因分析:1. 没安装成功;2. 大小写拼写错误。
解决方法:1. 重新运行安装命令;2. 注意: 调用时必须写成 fontTools (T大写)。
问题三: error: No such file 'Ali-VF.ttf'
原因分析:终端没有在当前目录下找到这个名字的文件。
解决方法:1. 检查文件名;2. 确保执行了 cd ~/Desktop;3. 使用拖拽法将文件直接拖入终端获取路径。
问题四: IndexError: list index out of range
原因分析:最核心错误:字体内部样式表索引溢出。
解决方法:必须先执行教程中的“第一步:修复源文件”脚本,删掉 STAT 表。
问题五: Defaulting to user installation...
原因分析:权限不足,无法安装到系统目录。
解决方法:没关系,这是正常提示,它会自动安装到用户目录下,不影响使用。
夜雨聆风