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 testspytest tests调用测试(确保指定tests文件夹,否则{}将发现并尝试在ots树中执行其他Python测试,这可能会失败)

使用

最简单的情况:

importpyotsresult=pyots.sanitize('/path/to/font/file.ttf')

result是一个OTSResult^{}/轻量级对象),具有3个属性:

  • sanitized指示文件是否已成功清理的布尔值
  • modified布尔值,指示文件是否在清理过程中被修改*
  • messages清理期间生成的消息字符串元组(可能为空)
  • 注意:当前后端OTS代码总是修改已成功清理的字体。因此,modified对于sanitized为真的所有情况都是真的。通常修改只是对修改日期和相关校验和进行修改。因此,可以设计出更好的修改检测,即忽略head.modified和其他无关紧要的修改,但这超出了本工作的范围。在

示例:清理字体文件文件夹

^{pr2}$

sanitize()

的选项
  • 将关键字output=<path_to_output_file>指定到sanitize()命令中,清理后的文件将保存到该位置
  • 使用quiet=Truefor sanitize()来抑制消息
  • 在清理集合(OTC/TTC)文件时指定font_index=<index_in_TTC>,并且您只希望清理集合中的特定索引(否则,将根据OTS的默认行为对所有索引进行清理)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
日期和现在之间的Java时间   java以适当的方式更新jLabel和jTextField   java如何从PQ(单链表)中删除最大值   java可以通过任何方式找出哪些NSF文件属于Domino服务器   java Velocity 2不会设置属性   如何使用java流迭代索引映射列表   maven依赖项在编译期间工作,但在java运行时失败。lang.NoClassDefFoundError&java。lang.ClassNotFoundException   java有没有办法完全隐藏Web应用程序代码?   Android appcompat v7 21库中的java FadingActionBar错误   Eclipse/com中的java AdMob。谷歌。安卓gms。ads.AdView   java My Service表示它正在运行,但其状态尚不清楚,似乎没有绑定   java无法启动Apache Tomcat Web应用程序容器   JDK:java中的命名约定。可丢弃的   Spring SerSecurity中的java身份验证错误   Maven:使用JDK8编译Java7   java在使用ExecutorService时如何管理内存?   comm.jar通信串行端口java   java LibGDX创建动画