Ufo2ft

Latest version: v3.2.3

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

Scan your dependencies

Page 12 of 15

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).

2.3.1

[postProcessor] Ignore glyph names not in source when building production names. This allows to build production names even when the UFO is missing glyphs like '.notdef' which are synthesized by ufo2ft compiler (278).

2.3.0.post1

The MarkFeatureWriter was modified in 276 as follows:

* If a `table GDEF { GlyphClassDef ... ; } GDEF;` is present in the features.fea, then the MarkFeatureWriter will use those groups to define what is a base glyph, ligature or mark glyph. When no GDEF GlyphClassDef definition is present, the current behavior doesn't change (fixes 261).

* When a mark glyph contains multiple `_`-prefixed anchors, we only assign that glyph to one markClass; we no longer associate it with multiple markClasses one for each `_`-prefixed anchor that it may contain. Instead, we sort the glyph's anchor list by putting `_bottom` and `_top` anchors before all the rest, and then we only take the first anchor's name to define the glyph's markClass. This is the same heuristic used by Glyphs.app to resolve these ambiguous cases when generating the mark feature. It fixes a compilation error when the same mark glyph belongs to multiple mark classes that are used within the same mark lookup (googlei18n/noto-source122)


The version string in setup.py is now computed from git metadata using setuptools-scm.

2.2.2

- Fixed handling of duplicate glyph names when a TTF does not contain a '.notdef' glyph (321a1d0).

2.2.1

- Handle duplicates in glyph postscript names by appending a '.N' suffix to ensure they are unique (or else FontTools fails to decompile font).
Strip invalid characters not allowed by the AGL specification. The only valid characters are:
`[A-Za-z0-9_.]`.
Print a warning if a glyph name exceeds maximum recommended length of 63 characters (274).

Page 12 of 15

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.