跳转到主要内容

MutatorMath是用于多维度分段线性插值的Python库,具有任意数量、任意位置的主机。

项目描述

Build Status Coverage Status PyPI Version

MutatorMath

A MutatorMath Colorfield

MutatorMath颜色域

MutatorMath是一个Python库,用于计算n维度的分段线性插值,具有任意数量的主机。它是为了插值与字体相关的数据而开发的,但可以处理任何算术对象。

  • objects/子包包含通用计算工具。

  • ufo/子包包含处理UFO数据的特定工具。

  • MutatorMath没有用户界面,只有数学功能。

许可证

MutatorMath 包是在 BSD-3 许可证 下发布的。

依赖项

基本的 Mutator 和 Location 对象可以在任何标准的 Python 2.7 或更高版本上运行,并且已在 Python 3.5 或更高版本上进行了测试。

MutatorMath 中的 UFO 处理工具需要一些额外的库。

作者

URL

FontTools

FontTools

https://github.com/fonttools/fonttools

Defcon

TypeSupply.com

https://github.com/typesupply/defcon

FontMath

TypeSupply.com

https://github.com/typesupply/fontMath

MutatorMath 术语

  • 设计空间:具有任意数量维度的抽象欧几里得空间。

  • :设计空间中的一个维度。维度名称可以是描述性的,例如 xywidthweightpopsnap

  • 位置:在设计中存储为命名维度字典的点坐标。例如 Location(x=0)Location(x=10) 在同一维度上,而 Location(snap=10) 则不是。维度的数量将有限制,但理论上没有限制。

  • 分割位置矛盾位置:一个维度具有一个 2-元组而不是单个值的点。这用于描述各向异性位置。例如 Location(weight=(50, 60)) 表示水平值为 50,垂直值为 60。对各向异性坐标的支持仅为二维。

  • 原点:所有维度值都为 0 的特殊位置。未命名的维度假定为零。Location()原点

  • 轴上:只有一个非零轴值的点。 Location(width=1000) 被认为是轴上。

  • 轴外:具有多个非零轴值的点。 Location(width=1000, weight=1000) 被认为是轴外。

  • 偏差:将所有主型和实例都平移的设计空间向量。

  • 算术支持

    • 提供算术行为的对象

    • 响应 +-*/ 的对象

    • 具有 __add____sub____mul____rmul____div____rdiv__ 方法的对象

  • 主型:提供输入数据的算术对象。

  • 中立:在原点插入的主型

  • 实例:在特定位置计算的对象,与主型的类相同。

如何使用彩色图表解释 MutatorMath 计算因子的说明。

构建 Mutator

方便的 Mutator 构建函数 buildMutator() 接受一个 (location, object) 对的列表。内部它排序中性/轴上/轴外主型并计算偏差。

  • 主型位置不得重叠。

  • 有关构建 Mutator 对象的更深入的示例,请阅读 doctests。

UFO

UFO 存储与字体设计和生产相关的数据(在 UnifiedFontObject.org 上的规范。ufo/ 子包包含一些工具,可以更容易地构建和处理 UFO mutator。

设计空间文档

UFO 设计空间的要求因项目而异。主文件和实例的位置、对字距微调的特殊要求、特定符号等。本包提供读取和写入设计空间描述的工具以 XML 格式。此类文件存储所有必要信息:哪些源 UFO、在哪里插入它们、哪些符号要生成、哪些实例等。

  • 设计空间文档可以通过简单的 Python 构建脚本来处理。(参见 buildExample.py)。这使得可以在远程计算机上构建实例,作为 cron 作业等的一部分。

  • 读者和编写器的示例和测试可以在 test/ufo/ 目录中找到。

  • MutatorMath 提出了 .designspace 扩展。

设计空间 XML 结构

.designspace 文件包含设置多个主 UFO 之间插值所需的所有数据。关于设计空间格式的详细描述在这里:设计空间文件格式

编写设计空间

DesignSpaceDocumentWriter 对象写入设计空间的 XML 表示形式。

  • addSource(path, name, location, copyLib, copyGroups, copyInfo, muteKerning, muteInfo)

    • path:源 UFO 的绝对路径。注意:在输出中,源路径将与 documentPath 相对。

    • name:对此源引用的名称

    • location:此 UFO 的位置名称

    • copyLib:将此源的内容复制到实例中

    • copyGroups:将此源中的组复制到实例中

    • copyInfo:从此源.info复制非数值字段到实例中。

    • muteKerning:关闭此源的字距数据

    • muteInfo:关闭此源的字体信息数据

    • familyName:对此源的家族名称。可选。可用于处理或构建实例名称。

    • styleName:对此源的样式名称。可选。可用于处理或构建实例名称。

  • startInstance(name, familyName, styleName, fileName, postScriptFontName, styleMapFamilyName, styleMapStyleName) 这将开始一个新的当前实例对象。

    • name:此实例的名称

    • familyName:font.info.familyName 字段的名称。必需。

    • styleName:font.info.styleName 字段的名称。必需。

    • fileName:实例 UFO 的绝对路径。注意:在输出中,实例路径将与 documentPath 相对。

    • postScriptFontName:font.info.postScriptFontName 字段的名称。可选。

    • styleMapFamilyName:font.info.styleMapFamilyName 字段的名称。可选。

    • styleMapStyleName:font.info.styleMapStyleName 字段的名称。可选。

  • endInstance() 完成当前实例。

  • writeGlyph(name, unicodes, location, masters) 向当前实例添加一个新符号。

    • name:符号名称。必需。

    • unicodes:如果该符号需要与主文件中与此符号名称关联的 Unicode 值不同,则为该符号的 Unicode 值。

    • location:如果该符号需要与实例位置不同,则为该符号的设计空间位置。

    • masters:如果需要与对此实例指定的主文件不同,则为该符号的主文件和位置列表。

  • writeInfo():指示应生成当前实例的 info 数据。

  • writeKerning():指示应生成当前实例的字距数据。

读取设计空间

DesignSpaceDocumentReader 读取 DesignSpaceDocument。首先,它将查找所有 UFO 主文件,然后构建所有实例。

  • DesignSpaceDocumentReader(documentPath, ufoVersion, roundGeometry)

    • documentPath:要读取的设计空间文档的路径。

    • ufoVersion:目标 UFO 版本。应为 2 或 3。

    • roundGeometry:对所有几何形状应用舍入。

DesignSpaceDocumentReader假定所有源和实例的路径相对于documentPath。

感谢

  • MutatorMath的开发得到了Adobe Type Team的热心支持。

  • 感谢TypeSupply为编写FontMath做出贡献。

  • 感谢TypeMyType为编写RoboFont做出贡献。

项目详情


下载文件

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

源分布

MutatorMath-3.0.1.zip (421.7 kB 查看哈希值)

上传时间

构建分布

MutatorMath-3.0.1-py2.py3-none-any.whl (32.0 kB 查看哈希值)

上传时间 Python 2 Python 3

由以下支持