Ale*_*eda 1 python fonts ttx-fonttools
我需要对很多字体文件进行子集化,并且需要在 python 环境中执行此操作。然而,Fonttools 的文档非常少,我无法找到模块和正确的函数语法来在 python 中基于 unicode 执行子集化,而不是作为命令行工具 ( pyftsubset
)。我的一些文件在由 Fonttools 读取时包含各种错误,并且我无法使用!command
jupyter 内部捕获异常。
pyftsubset
本身只是一个 Python 脚本,它调用fontTools.subset.main
,然后解析sys.argv
(命令行参数)以执行子集。您可以在自己的脚本中轻松完成相同的操作,例如:
import sys
from fontTools.subset import main as ss
sys.argv = [None, '/path/to/font/file.ttf', '--unicodes=U+0020-002F']
ss() # this is what actually does the subsetting and writes the output file
Run Code Online (Sandbox Code Playgroud)
显然,您会希望使用自己的值--unicodes
加上许多其他pyftsubset
选项,但总的来说,此方案应该可行。可能的警告是,如果您的程序的其他部分使用/依赖sys.argv
; 如果是这种情况,您可能希望在修改sys.argv
和调用子集之前捕获另一个变量中的初始值,然后将其重新设置为初始值。