Ufo2ft

Latest version: v3.4.2

Safety actively analyzes 717349 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 13 of 17

2.8.0

- Implemented `public.skipExportGlyphs` UFO and DesignSpace lib key, for excluding specific glyphs from final binary font (318).
NOTE: The feature file is not subsetted yet. If you reference glyphs that are excluded from export, the feature compiler will crash.
- [propagateAnchors] Correctly propagate anchors for composite glyphs that combine multiple mark glyphs (e.g. "circumflexcomb_tildecomb") (316).
- [decomposeComponents] Fixed duplicate decomposition of nested components in OTFs when using defcon UFO backend (322).
- [kernFeatureWriter] Write separate kern lookup without `lookupflag IgnoreMarks` for the kerning pairs that contain any mark glyphs (314, 328).
- Moved `maxContextCalc` module to `fontTools.otlLib`, but kept a stub that re-imports from the new location, for backward compatibility. This will be removed in the future.

2.7.0

- [outlineCompiler] Only build minimal metrics/outline tables for "sparse" layer masters when compiling interpolatable TTFs or OTFs from designspace sources (310).

2.6.0

- Added ``layerName`` argument (``str``) to ``compileOTF`` and ``compileTTF``, and ``layerNames`` argument (``List[Optional[str]]``) to ``compileInterpolatableTTFs``, for compiling outlines from a different UFO3 layer than the default UFO layer.
Note that OpenType features compilation is skipped when ``layerName`` is given, as it is assumed that the ``features.fea`` only refers to the default UFO layer.
- Added ``compileInterpolatableTTFsFromDS`` and ``compileInterpolatableOTFsFromDS`` functions that take a FontTools' ``DesignSpaceDocument`` object and compile OpenType font masters suitable for generating a variable font. All the ``SourceDescriptor`` objects in the designspace should have their ``font`` attribute set to a pre-loaded ``defcon.Font`` or a compatible UFO Font class. The functions return a copy (or same instance if ``inplace=True``) of the designspace document with the sources' ``font`` attributes set to the respective ``TTFont`` instances. Sources with ``layerName`` attribute (e.g. to define sparse intermediate masters) are also supported: i.e. outlines are converted/compiled compatibly from non-default layers, whereas features are only compiled for
the default layers.
- [cubicToQuadratic] The Cu2Qu ``curve_type`` custom parameter is now stored in the layer's ``lib`` element of ``layerinfo.plist`` instead of in the global ``lib.plist``, as different layers may well have different curve type.
- Fixed incorrect Family and SubFamily nameIDs (1 and 2) that were generated as fallbacks when UFO ``fontinfo.plist`` doesn't explicitly define ``styleMapFamilyName`` and ``styleMapStyleName`` (299).
- Bumped minimum installation requirements:
* fonttools >= 3.35.0
* cu2qu >= 1.6.5
* booleanOperations >= 0.8.2

2.5.0

The ``optimizeCFF`` compile option is no longer a bool, but now takes an integer (or enum) value:
* 0: no optimizations
* 1: charstring operators' specialization only, without subroutinization
* 2 (default): both specialization and subroutinization

Changes in installation requirements:

- fonttools[ufo] >= 3.32.0 (for the `fontTools.ufoLib` module);
Removed standalone 'ufoLib' from requirements.
- defcon >= 0.6.0
- cu2qu >= 1.6.4

2.4.0

- KernFeatureWriter: reverted the default mode to "skip". Between v2.0 and 2.3.2, the default was changed to "append" in order to try matching Glyphs.app behaviour, but this change only created confusion among UFO users of fontmake.
The optional "append" mode can be enabled by setting the "com.github.googlei18n.ufo2ft.featureWriters" in the UFO lib.plist to a plist array of dictionaries, one dict per feature writer; each dict must contain a 'class' key with the name of the feature writer (e.g. "KernFeatureWriter"), and may contain an "options" dictionary that is used to initialize the writer instance (e.g. `{"mode": "append"}`).
Or, from the python API, one can call the ufo2ft compile functions with a list of feature writer objects that have been previously initialized with the desired mode (280).

- MarkFeatureWriter: added support for optional "append" mode, similar to one from the KernFeatureWriter. The autogenerated lookups are added to the features if they already are defined inside the feature file.
The default is still "skip" (i.e. do not write mark/mkmk/abvm/blwm features if they are already defined in the features.fea). An "insert" mode is also being discussed/planned for some future version.

- PostProcessor: if a `public.postscriptNames` mapping is not provided in the UFO lib, then do not do any glyph renaming in the post/CFF tables. Only rename glyphs to `uniXXXX` based on their unicode values when the `useProductionNames` compile option (or lib key) is explicitly set to True and no `public.postscriptNames` is present (googlei18n/fontmake465).

2.3.2

When no OS/2.ulCodePageRange bits can be enabled, fall back to enabling bit 0 (Latin 1) so that the font works in MS Word (fixes googlei18n/fontmake468).

Page 13 of 17

© 2025 Safety CLI Cybersecurity Inc. All Rights Reserved.