如何在python环境中使用fontcools的pyftsubset,而不是使用lin命令

2024-06-01 01:28:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要对很多字体文件进行子集化,并且需要在python环境中进行这种操作。然而,fontcools的文档非常少,我无法从python中找到一个模块和适当的函数语法来执行基于unicode的子集,而不是作为命令行工具(pyftsubset)。我的一些文件在被Fonttools读取时包含各种错误,我无法使用jupyter中的!command捕捉异常。在


Tags: 模块文件工具函数命令行文档环境错误
1条回答
网友
1楼 · 发布于 2024-06-01 01:28:37

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

显然,您将希望使用您自己的值来表示 unicodes加上其他许多pyftsubset选项,但一般来说,这个方案应该可以工作。可能需要注意的是,如果程序的其他部分使用/依赖sys.argv;如果是这种情况,您可能希望在修改sys.argv并调用subsetter之前捕获另一个变量中的初始值,然后在之后将其重新设置为初始值。在

相关问题 更多 >