otsanitizer的Python包装器
pyots的Python项目详细描述
pyots(PYthon OT消毒剂)
OpenType Sanitizer的Python包装器,也称为“OTS”。它类似于并部分基于ots-python,但将OTS构建为Python C扩展(而不是像OTS Python那样作为可执行文件并通过subprocess
调用)。在
注意:虽然这个包与ots python很相似,但它是not的替换品,因为python API不同。在
要求
该项目为Mac或Linux下的Python3.6、3.7或3.8构建pip
可安装的轮子。这个项目有可能与其他python和其他操作系统一起构建和运行,但是它只在列出的配置下进行了测试。在
使用pip
安装
如果您只想usepyots
,只需运行pip install pyots
(在受支持的平台/Python版本之一中),它将安装预构建、编译、随时可用的Python轮子。然后可以跳到Use部分。在
开发pyots
的安装/设置
如果您想修改pyots
代码,您需要准备好本地设置:
- 克隆此回购
- 运行
python setup.py download
下载OTS源代码(此项目中不包含)。您可以修改^{下^{ } 中的version
值,以指定不同版本的OTS。您还需要更改与OTS对应的sha256
哈希值焦油.xz包裹。请注意,此方案有一些限制:早于7.1.7的OTS源可能无法正确生成,因为它使用了不同的生成系统。此外,比此回购协议中指定的版本更新的版本可能需要调整才能正确构建。在 - 要在下载OTS后生成并安装
pyots
,可以运行python setup.py install
或{}
测试
这里定义了一个测试套件来测试Python扩展。它在src/ots
中使用(并假设存在)下载的OTS库源代码的测试字体数据,因此请确保您已运行python setup.py download
,并且在src
下有{python -m pytest tests
或pytest tests
调用测试(确保指定tests
文件夹,否则{ots
树中执行其他Python测试,这可能会失败)
使用
最简单的情况:
importpyotsresult=pyots.sanitize('/path/to/font/file.ttf')
result
是一个OTSResult
(^{
sanitized
指示文件是否已成功清理的布尔值modified
布尔值,指示文件是否在清理过程中被修改*messages
清理期间生成的消息字符串元组(可能为空)
- 注意:当前后端OTS代码总是修改已成功清理的字体。因此,
modified
对于sanitized
为真的所有情况都是真的。通常修改只是对修改日期和相关校验和进行修改。因此,可以设计出更好的修改检测,即忽略head.modified
和其他无关紧要的修改,但这超出了本工作的范围。在
示例:清理字体文件文件夹
^{pr2}$sanitize()
的选项
- 将关键字
output=<path_to_output_file>
指定到sanitize()
命令中,清理后的文件将保存到该位置 - 使用
quiet=True
forsanitize()
来抑制消息 - 在清理集合(OTC/TTC)文件时指定
font_index=<index_in_TTC>
,并且您只希望清理集合中的特定索引(否则,将根据OTS的默认行为对所有索引进行清理)
- 项目
标签: