ot-sanitizer的Python包装器
项目描述
pyots (PYthon OT Sanitizer)
Python 对 OpenType Sanitizer(简称 "OTS")的封装,也称为 "OTS"。它类似于并部分基于 ots-python,但将 OTS 构建为 Python C 扩展(而不是作为可执行文件,并通过 subprocess
调用,如 ots-python 所做的那样)。
注意:虽然此包类似于 ots-python,但它不是它的直接替代品,因为 Python API 不同。
要求
该项目在 Mac 或 Linux 下为 Python 3.8、3.9、3.10 或 3.11 构建 pip
-可安装的 wheel。该项目可能在其他 Python 和其他操作系统上构建和运行,但它只测试了列出的配置。
使用 pip
安装
如果您只想 使用 pyots
,您可以在支持的平台/Python 版本之一中简单地运行 python -m pip install -U pyots
,这将安装预构建的、编译的、可立即使用的 Python wheel。然后您可以跳到 使用 部分。
为开发 pyots
进行安装/设置
如果您想修改 pyots
代码,您需要准备好您的本地设置
- 克隆此存储库
- 运行
python setup.py download
下载 OTS 源代码(该源代码不包括在此项目中)。您可以在setup.cfg
的[download]
下的version
值中修改以指定 OTS 的不同版本。您还需要更改与 OTS tar.xz 包对应的sha256
哈希值。请注意,此方案有一些限制:版本低于 8.1.3 的 OTS 源可能无法正确构建,因为它们使用了不同的构建系统。此外,版本高于此存储库中指定的版本可能需要调整才能正确构建。话虽如此,我们依赖于ots
... - 下载 OTS 后,要构建和安装
pyots
,您可以运行python setup.py install
或python -m pip install .
- 在迭代更改时,您需要删除临时的
build
和src/ots/build
文件夹。
测试
为 Python 扩展定义了一个测试套件。它使用(并假设存在)下载的 OTS 库源测试字体数据在 src/ots
中,因此请确保您已运行 python setup.py download
并在 src
下有 ots
文件夹。使用 python -m pytest
调用测试。
如果您希望运行比较 ots-python
和 pyots
结果的测试,请确保首先运行 python -m pip install opentype-sanitizer
,否则该测试集将跳过。
使用
最简单的情况
import pyots
result = pyots.sanitize('/path/to/font/file.ttf')
result
是一个具有 3 个属性的 OTSResult
对象
sanitized
布尔值,指示文件是否成功消毒modified
布尔值,指示文件在消毒过程中是否被修改*messages
消毒过程中生成的消息字符串元组(可能为空)
- 注意:目前后端 OTS 代码可以修改成功消毒的字体,即使没有执行任何更改。因此,当
sanitized
为 True 时,modified
有时也可以为 True。通常,这种修改仅限于修改日期和相关校验和。因此,可能可以设计出更好的修改检测,例如忽略head.modified
和其他不重要的修改,但这超出了本工作的范围。
示例:消毒字体文件夹
# sanitize a folder of fonts. Print messages for any that were not successfully sanitized.
import pyots
from pathlib import Path
for filename in Path("src/ots/tests/fonts/good").rglob("*"):
result = pyots.sanitize(filename.absolute())
if not result.sanitized:
print('{}:\n{}'.format(filename, "\n".join([m for m in result.messages])))
sanitize()
的选项
- 指定
sanitize()
命令的键控output=<path_to_output_file>
,消毒文件将保存到该位置 - 对于
sanitize()
使用quiet=True
来抑制消息 - 在清理集合(OTC/TTC)文件时指定
font_index=<index_in_TTC>
,如果您只想清理集合中的特定索引(否则将按照OTS的默认行为清理所有内容)。
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。
源代码分发
构建分发
pyots-9.1.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 914c30c02cec9dfd89bfc0adac2eb965792e6851b69bbcf5c3559cc511be7d0b |
|
MD5 | 3650d2cd4bc60aeba523026a8fee32b7 |
|
BLAKE2b-256 | a791124f0621b64aa4bc0cfb4287af80735288cee3ecd36ce612a8db7c2cc2fc |
pyots-9.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 686594950502635c2f52083419e45995980d21afdb80a9707fb453d1bd613333 |
|
MD5 | ef403072cfa7a096fee6dcbe6eb87132 |
|
BLAKE2b-256 | 90e71435a307a409ab4e2e01f418f053975e948bbdb760bbfebd9a36764dfc44 |
pyots-9.1.0-cp311-cp311-macosx_11_0_arm64.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 0a0c0ce63f72d3fb8df267e62f746469f5e8c8d9b0014ba8a9b7ae00ab77a527 |
|
MD5 | f479866c4696192b84ea39cc1187dbaf |
|
BLAKE2b-256 | e78a554b8253ce4de8aea6546488083f39273c8ac30667a42dab17182848398b |
pyots-9.1.0-cp311-cp311-macosx_10_9_x86_64.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 98629875a10c60693d995cdca4a502210fb14da9d344153e6ac46e41b3046e59 |
|
MD5 | ba10de902f655b47f7dec7fe7339a5a2 |
|
BLAKE2b-256 | 9c1f07f99a335068916a2fb2feeef72dbc31529adeafff96628248e99b64ec5f |
pyots-9.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 15872ab6f9c4f47c92e8494b51d4e0a5d47b19f9254fa20139f98ef59dbb4950 |
|
MD5 | 5326447166f75bb3207ab23ab53946e5 |
|
BLAKE2b-256 | c8fc445334bed15dc440c888502d832fa56ede2c1ed3eb32c8f517e06d65a909 |
哈希值 用于 pyots-9.1.0-cp310-cp310-macosx_11_0_arm64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 91dfd85a0051d0ad142aa894250c1bcc9eaa4e5ac5d70de99376687c54c1c009 |
|
MD5 | 226813f8da4b6c576e08b37ae1cc8b32 |
|
BLAKE2b-256 | 5aa54ff505dd17e5ec1459f609bb662ae9156512561f8fb1fb8611a011e8d56f |
哈希值 用于 pyots-9.1.0-cp310-cp310-macosx_10_9_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 8bd80c2a43fa55fff1c8943fee47eb675a30bf6f4065a3db25cdcb2b54d41b7a |
|
MD5 | 677bc5a99394c58d1b32bcb01fa07753 |
|
BLAKE2b-256 | c40135c62aff3ada1894bcadc342a9aedfaf22aaab3036ca1ac03c3d431bcf68 |
哈希值 用于 pyots-9.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 931c41382f4b1673444055e971c5a76848c4a17207b4ae223fe7c3602a63d227 |
|
MD5 | dba0fa3301506de11a45945f01fe6776 |
|
BLAKE2b-256 | 8923028ee2bc20b568b616ac54fd6ba2bbd3da977ade26a054e50ce98ce4dfce |
哈希值 用于 pyots-9.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 1d03ebd93b68f982ec420c576558b3c08629029de3b52f6a0fc971a32af3fd17 |
|
MD5 | c2bdbc719ddb1ac2d63175de21eb2b65 |
|
BLAKE2b-256 | 330b282cfad5225f4d72c40ff199f5f95fb15bb8a1123a5ec86ab54cacbbd872 |