MutatorMath是用于多维度分段线性插值的Python库,具有任意数量、任意位置的主机。
项目描述
MutatorMath
MutatorMath颜色域
MutatorMath是一个Python库,用于计算n维度的分段线性插值,具有任意数量的主机。它是为了插值与字体相关的数据而开发的,但可以处理任何算术对象。
objects/子包包含通用计算工具。
ufo/子包包含处理UFO数据的特定工具。
MutatorMath没有用户界面,只有数学功能。
许可证
MutatorMath 包是在 BSD-3 许可证 下发布的。
依赖项
基本的 Mutator 和 Location 对象可以在任何标准的 Python 2.7 或更高版本上运行,并且已在 Python 3.5 或更高版本上进行了测试。
MutatorMath 中的 UFO 处理工具需要一些额外的库。
库 |
作者 |
URL |
---|---|---|
FontTools |
FontTools |
|
Defcon |
TypeSupply.com |
|
FontMath |
TypeSupply.com |
MutatorMath 术语
设计空间:具有任意数量维度的抽象欧几里得空间。
轴:设计空间中的一个维度。维度名称可以是描述性的,例如 x、y、width、weight、pop、snap。
位置:在设计中存储为命名维度字典的点坐标。例如 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__ 方法的对象
主型:提供输入数据的算术对象。
中立:在原点插入的主型
实例:在特定位置计算的对象,与主型的类相同。
构建 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。
法律
Superpolator是LettError Type & Typography的注册商标,更多信息请访问Superpolator.com
感谢
MutatorMath的开发得到了Adobe Type Team的热心支持。
感谢TypeSupply为编写FontMath做出贡献。
感谢TypeMyType为编写RoboFont做出贡献。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源分布
构建分布
MutatorMath-3.0.1.zip的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 8127c1ffad1646f11a953752296c43f5d88cbd5293fff03f093d916b0bc13864 |
|
MD5 | 47f9053cf0d9275e0e840dbf446269e2 |
|
BLAKE2b-256 | 4402d1ddbbc5698db8ad2a0d1f8a23d52305e66166b6fea5ada5e146dd3a709a |
MutatorMath-3.0.1-py2.py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 949dc3c1ea71c3b8a88cdeec6b3224b039d9da3888af133eb7e09ce1d5b19821 |
|
MD5 | 36a1766d4e9ec763bc643c8410125246 |
|
BLAKE2b-256 | 0261e3e6190a8d94c6a99d9605c721e1e38ebae19dc194059477affa57f6e111 |