跳转到主要内容

ot-sanitizer的Python包装器

项目描述

pyots (PYthon OT Sanitizer)

Run Tests Build Python Wheels

PyPI PyPI

macOS ubuntu

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 installpython -m pip install .
  • 在迭代更改时,您需要删除临时的 buildsrc/ots/build 文件夹。

测试

为 Python 扩展定义了一个测试套件。它使用(并假设存在)下载的 OTS 库源测试字体数据在 src/ots 中,因此请确保您已运行 python setup.py download 并在 src 下有 ots 文件夹。使用 python -m pytest 调用测试。

如果您希望运行比较 ots-pythonpyots 结果的测试,请确保首先运行 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 (19.4 kB 查看哈希值)

上传时间 源代码

构建分发

pyots-9.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (726.8 kB 查看哈希值)

上传时间 CPython 3.11 manylinux: glibc 2.17+ x86-64

pyots-9.1.0-cp311-cp311-macosx_11_0_arm64.whl (324.0 kB 查看哈希值)

上传时间 CPython 3.11 macOS 11.0+ ARM64

pyots-9.1.0-cp311-cp311-macosx_10_9_x86_64.whl (351.5 kB 查看哈希值)

上传时间 CPython 3.11 macOS 10.9+ x86-64

pyots-9.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (726.7 kB 查看哈希值)

上传时间 CPython 3.10 manylinux: glibc 2.17+ x86-64

pyots-9.1.0-cp310-cp310-macosx_11_0_arm64.whl (324.1 kB 查看哈希值)

上传时间 CPython 3.10 macOS 11.0+ ARM64

pyots-9.1.0-cp310-cp310-macosx_10_9_x86_64.whl (351.5 kB 查看哈希值)

上传于 CPython 3.10 macOS 10.9+ x86-64

pyots-9.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (726.6 kB 查看哈希值)

上传于 CPython 3.9 manylinux: glibc 2.17+ x86-64

pyots-9.1.0-cp39-cp39-macosx_11_0_arm64.whl (324.0 kB 查看哈希值)

上传于 CPython 3.9 macOS 11.0+ ARM64

pyots-9.1.0-cp39-cp39-macosx_10_9_x86_64.whl (351.5 kB 查看哈希值)

上传于 CPython 3.9 macOS 10.9+ x86-64

pyots-9.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (726.9 kB 查看哈希值)

上传于 CPython 3.8 manylinux: glibc 2.17+ x86-64

pyots-9.1.0-cp38-cp38-macosx_11_0_arm64.whl (324.0 kB 查看哈希值)

上传于 CPython 3.8 macOS 11.0+ ARM64

pyots-9.1.0-cp38-cp38-macosx_10_9_x86_64.whl (351.5 kB 查看哈希值)

上传于 CPython 3.8 macOS 10.9+ x86-64

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面