Skip to main content

PyPI

ufoProcessor

Python package based on the designSpaceDocument from fontTools.designspaceLib) specifically to process and generate instances for UFO files, glyphs and other data.

UFOOperator takes over from UfoProcessor

Some deep changes were necessary to support designspace format 5 files. Rather than try to work it into unwilling old code, UFOOperator is rewritten from the bottom up. The new object wraps the FontTools DesignSpaceDocument object, rather than subclassing it. The goals for UFOOperator remain largely the same. Though the emphasis is now on providing objects that provide live interpolation, rather than generate stand alone UFOs.

  • Support designspace format 5, with layers. Not all elements of designspace 5 are supported.
  • Collect source materials
  • Provide mutators for specific glyphs, font info, kerning so that other tools can generate partial instances. Either from MutatorMath or fonttools varlib.model.
  • Support anisotropic locations in both math models, even if Variable Fonts won't. These are super useful during design, so I need them to work.
  • Support extrapolation in both math models, even if Variable Fonts won't. Note that MutatorMath and VarLib approach extrapolation differently. Useful for design-explorations.
  • Support discrete axes. This is a bit complex, but it is nice when it works.
  • Apply avar-like designspace bending
  • Generate actual UFO instances in formats 3.
  • Round geometry as requested
  • Try to stay up to date with fontTools
  • Baseclass for tools that need access to designspace data.
  • Some caching of MutatorMath and Varlib flavored mutators.

No more rules

UFOProcessor could execute some of the feature-variation rules when it generated UFOs. But these variations has become much more complex than can be faked with simple glyph-swapping. So I did not port that to UFOOperator. UFOs generated with UFOOperator will have all the glyphs in the same places as their sources.

Discrete axes

A discrete axis is a way to fit different interpolating systems into a single designspace. For instance a roman could be on italic=0 and the italic on italic=1. The roman and italic are in the same file, but to UFOOperator they are separate systems that interpolate along the normal axes. If is are more than one discrete axis in a designspace, each combination of the axis values, each discrete location can be an interpolating system. So some of the methods of UFOOperator require a discrete location to know which interpolating system is needed.

Examples UFOProcessor (old)

Generate all the instances (using the varlib model, no rounding):

import ufoProcessor
myPath = "myDesignspace.designspace"
ufoProcessor.build(myPath)

Generate all the instances (using the varlib model, but round all the geometry to integers):

import ufoProcessor
myPath = "myDesignspace.designspace"
ufoProcessor.build(myPath, roundGeometry=True)

Generate all the instances (using the mutatormath model, no rounding):

import ufoProcessor
myPath = "myDesignspace.designspace"
ufoProcessor.build(myPath, useVarlib=False)

Generate an instance for one glyph, "A" at width=100, weight=200. (assuming the designspace has those axes and the masters have that glyph)

import ufoProcessor
myPath = "myDesignspace.designspace"
doc = ufoProcessor.DesignSpaceProcessor()
doc.read(myPath)
doc.loadFonts()
glyphMutator = doc.getGlyphMutator("A")
instance = glyphMutator.makeInstance(Location(width=100, weight=200)

Depending on the setting for usevarlib, the glyphMutator object returned by getGlyphMutator in the example above can either be a MutatorMath.Mutator, or a VariationModelMutator object. That uses the fontTools.varLib.models.VariationModel but it is wrapped and can be called as a Mutator object to generate instances. This way DesignSpaceProcessor does not need to know much about which math model it is using.

Metadata

Release files for ufoProcessor 1.13.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ufoProcessor 1.13.3
File Size Uploaded
ufoprocessor-1.13.3.tar.gz 121.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for ufoProcessor 1.13.3
File Interpreter ABI Platform
ufoProcessor-1.13.3-py2.py3-none-any.whl Python 3, Python 2 none any Details

Total release size: 157.5 kB

Release files / ufoprocessor-1.13.3.tar.gz

Download URL ufoprocessor-1.13.3.tar.gz
Size 121.3 kB
Tags Source
SHA-256 checksum
How to use checksums
fca5c257713f446dc3f90af26a71f37f378d53690ee2e93e14117da3fb790785
BLAKE2b-256 checksum
How to use checksums
7e5316268853919e6030b110adc4e9c7f14eb93e58a9b957ee2d11a53059c175
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.1.1 CPython/3.12.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Dec 6, 2024.

Transparency log

Release files / ufoProcessor-1.13.3-py2.py3-none-any.whl

Download URL ufoProcessor-1.13.3-py2.py3-none-any.whl
Size 36.2 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
8105e52800fb07d98413355f143e5b1eab047b5b546d642f93b2993413141c12
BLAKE2b-256 checksum
How to use checksums
bdfa03c617c7047d4bd19d265f84dfa6c7d2f8afcf33cdba0c1cff06993397f3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.1.1 CPython/3.12.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Dec 6, 2024.

Transparency log

Release history Release notifications | RSS feed

1.14.1

2 release files

1.14.0

2 release files

This release

1.13.3 This release

2 release files

1.13.2

2 release files

1.13.0

2 release files

1.9.0

2 release files

1.8

2 release files

1.7

2 release files

1.0.9

2 release files

1.0.8

2 release files

1.0.6

2 release files

1.0.5

2 release files

1.0.4

2 release files

1.0.3

2 release files

1.0.2

2 release files

1.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page