跳转到主要内容

UFO和FontTools之间的桥梁。

项目描述

GitHub Actions status PyPI Version Codecov Join the chat at https://gitter.im/fonttools-dev/ufo2ft

ufo2ft

ufo2ft(“UFO到FontTools”)是ufo2fdk的分支,其目标是生成从UFOs到OpenType字体的二进制文件,而不依赖于FDK。

该库提供两个函数,compileOTFcompileTTF,它们的工作方式完全相同

from defcon import Font
from ufo2ft import compileOTF
ufo = Font('MyFont-Regular.ufo')
otf = compileOTF(ufo)
otf.save('MyFont-Regular.otf')

在大多数情况下,ufo2ft的行为应与ufo2fdk相同,其文档保留在下面(并希望仍然准确)。

命名数据

与任何OpenType编译器一样,您必须将字体命名数据设置为一个特定的标准,以便正确设置命名。在ufo2fdk中,对于简单字体,您可以在font.info对象中设置两个命名属性。

  • familyName: 您字族的名字。例如,“我的加拉蒙德”。

  • styleName: 此特定字体的风格名称。例如,“显示轻粗斜体”

ufo2fdk将根据这两个字段创建所有其他命名数据。如果您想使用完全自动化的命名系统,应将您的字体中的所有其他名称属性都设置为None。但是,如果您想在任何级别上覆盖自动化系统,您可以指定特定的命名属性,ufo2fdk将尊重您的设置。您不需要设置所有属性,只需设置您不想自动化的属性即可。例如,在“我的加拉蒙德”这个字族中,您有八个重量。将斜体映射到每个重量的罗马体将会很棒。为此,在单个罗马体和斜体中,您需要设置样式映射数据。这是通过styleMapFamilyNamestyleMapStyleName属性完成的。在您的每个罗马体和斜体对中,您将这样做

My Garamond-Light.ufo

  • familyName = “我的加拉蒙德”

  • styleName = “Light”

  • styleMapFamilyName = “我的加拉蒙德显示轻”

  • styleMapStyleName = “regular”

My Garamond-Light Italic.ufo

  • familyName = “我的加拉蒙德”

  • styleName = “Display Light Italic”

  • styleMapFamilyName = “我的加拉蒙德显示轻”

  • styleMapStyleName = “italic”

My Garamond-Book.ufo

  • familyName = “我的加拉蒙德”

  • styleName = “Book”

  • styleMapFamilyName = “我的加拉蒙德显示书”

  • styleMapStyleName = “regular”

My Garamond-Book Italic.ufo

  • familyName = “我的加拉蒙德”

  • styleName = “Display Book Italic”

  • styleMapFamilyName = “我的加拉蒙德显示书”

  • styleMapStyleName = “italic”

等等。

此外,如果您在字体特征的表格定义中定义了任何命名数据或任何数据,这些数据将被尊重。

特征生成

如果您的字体特征不包含kerning/mark/mkmk特征,ufo2ft将根据您的字体kerning/anchor数据创建它们。

除了Adobe OpenType特征文件之外,ufo2ft还支持MTI/Monotype格式。例如,此格式中的GPOS表将存储在UFO中的data/com.github.googlei18n.ufo2ft.mtiFeatures/GPOS.mti

后备

大多数后备选项具有静态值。要查看这些值的设置,请查看源代码中的fontInfoData.py

在某些情况下,后备值是从info对象中的其他数据动态生成的。这些通过函数内部处理。

Merging TTX

如果UFO数据目录中有一个包含TTX文件的com.github.fonttools.ttx文件夹,这些文件以.ttx结尾,这些文件将在生成的字体中合并。索引TTX(使用ttx -s生成)是不必要的。

彩色字体

ufo2ft支持构建COLRCPAL表。

如果字体库中有com.github.googlei18n.ufo2ft.colorPalettes键,以及在字体或任何字形库中有com.github.googlei18n.ufo2ft.colorLayerMapping键,那么ufo2ft将从颜色调色板构建CPAL表,并从颜色层构建COLR表。

colorPalettes是一个调色板数组,每个调色板是一个颜色数组,每个颜色是一个表示RGBA颜色的浮点数数组。例如

<key>com.github.googlei18n.ufo2ft.colorPalettes</key>
<array>
  <array>
    <array>
      <real>0.26</real>
      <real>0.0</real>
      <real>0.23</real>
      <real>1.0</real>
    </array>
    <array>
      <real>0.86</real>
      <real>0.73</real>
      <real>0.28</real>
      <real>1.0</real>
    </array>
  </array>
</array>

colorLayerMapping是一个颜色层数组,每个颜色层是一个层名和调色板颜色索引数组。它是一个按字形键,但如果在字体库中存在,则将用于所有缺少它的字形。例如

<key>com.github.googlei18n.ufo2ft.colorLayerMapping</key>
<array>
  <array>
    <string>color.1</string>
    <integer>1</integer>
  </array>
  <array>
    <string>color.2</string>
    <integer>0</integer>
  </array>
</array>

如果存在此密钥,ufo2ft 将将颜色图层复制到单独的符号中,并设置 COLR 表。

或者,如果颜色图层已经是单独的 UFO 符号,可以使用 com.github.googlei18n.ufo2ft.colorLayers 字体库密钥。它使用基于基符号的表,值是一个颜色图层数组,每个颜色图层是一个包含符号名称和调色板颜色索引的数组。例如

<key>com.github.googlei18n.ufo2ft.colorLayers</key>
<dict>
  <key>alef-ar</key>
  <array>
    <array>
      <string>alef-ar.color0</string>
      <integer>2</integer>
    </array>
  </array>
  <key>alefHamzaabove-ar</key>
  <array>
    <array>
      <string>alefHamzaabove-ar.color0</string>
      <integer>1</integer>
    </array>
    <array>
      <string>alefHamzaabove-ar.color1</string>
      <integer>2</integer>
    </array>
  </array>
<dict>

设置说明

如果您是从源安装 ufo2ft,请注意,requirements.txt 中的严格依赖版本是用于测试的,有关更宽松的依赖要求,请参阅 setup.py 的 install_requires 和 extras_requires。

项目详情


发布历史 发布通知 | RSS 源

下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分布

ufo2ft-3.3.0.tar.gz (427.8 kB 查看散列值)

上传时间

构建分布

ufo2ft-3.3.0-py2.py3-none-any.whl (159.4 kB 查看散列值)

上传时间 Python 2 Python 3

支持