用于操作OpenType字体功能的Python库

fontFeatures的Python项目详细描述


#fontFeatures:Python库,用于操作OpenType字体功能

OpenType字体是使用特性“编程”的,这些特性通常是用Adobe的[feature file format](http://adobe-type-tools.github.io/afdko/OpenTypeFeatureFileSpecification.html)编写的。这就像一个计算机程序的源代码:它是一种用户友好,但对计算机不友好的方式来表示特性。在

在字体内部,这些特性是以高效的[内部格式](https://simoncozens.github.io/fonts-and-layout/features.html#how-features-are-stored)编译的。这就像计算机程序的二进制:计算机可以使用它,但它们不能用它做任何其他事情,人们也不能读它。在

这个库的目的是为以机器可操作的格式表示特性提供一个中间地带,类似于计算机程序员的抽象语法树。这样做是为了:

  • 特性可以用结构化的人类可读的机器可读的方式表示,类似于[Unified Font Object](http://unifiedfontobject.org/)格式的XML文件。在
  • 特性可以更直接地由程序(例如字体编辑器)编写,而不是必须输出AFDKO特性文件格式。在
  • 功能可以很容易地被程序操作-例如,来自两个文件的功能合并在一起,或者查找在语言之间移动。在

这与fontTool的feaLib有何不同?很高兴你问我。feaLib在Adobe特性文件格式和抽象语法树之间转换,抽象语法树表示特性文件的元素-不代表功能数据。AST仍然是“源等效的”。例如,当您以功能文件格式编写aalt功能时,您可能会包含类似于featuresalt的代码来包含来自其他功能的查找。但实际上的意思是一组查找。fontFeatures允许您操作含义,而不是描述。在

##组件

fontFeatures由以下组件组成:

  • fontFeatures本身是字体内部不同布局操作的抽象表示。在
  • <引用>字体特征.feaLib(作为mixin包含)在Adobe功能语法和fontFeatures表示之间进行转换。在
  • <引用>字体特征.ttLib,它在OpenType二进制字体和fontFeatures表示之间进行转换。(目前仅部分实现了OTF->;fontFeatures;还没有fontFeatures->;OTF编译器。)
  • <引用>字体特征.feeLib它解析一种新的可扩展格式,称为字体工程费。在
  • <引用>字体特征.fontDameLib将FontDame文本文件转换为fontFeatures对象。在

以及以下实用程序:

  • fee2fea:将费用文件转换为Adobe功能语法。在
  • otf2fea:将OTF文件转换为adobefeatures语法。在
  • txt2fea:将FontDame txt文件转换为adobefeatures语法。在
  • mergeFee:获取现有字体,向其添加费用规则,然后再次将其写出。在

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

推荐PyPI第三方库


热门话题
java楼梯的最大高度   java Jackson从1.7.1更新到2.8.6 JsonTypeInfo子类型反序列化   Spring WebApp中的java JPA异常处理   java在SwingWorker(doInBackground)中从WorkerThread调用多个方法?   java Android Studio构建到jar   java是添加多个按钮组的更有效方法   java MySQL JDBC连接池最大大小   java如何防止元素<Integer>变成元素<Object>   Java:处理大型XML文件提取数据而不编写状态自动机?   SpringBoot和React Web应用程序中CAS的java重定向问题   需要java算法方面的帮助吗   java在JDK 16中使用PowerMock   java异常错误本机方法签名   在Java Android中将JSON映射到数组/对象   如何打开一个窗口。java程序中的dat文件   java应用程序引擎+Maven+热插拔   java Moxy的getValueByXPath为除根元素以外的所有元素返回null