Skip to content

Releases: googlefonts/ufo2ft

v2.6.0

07 Jan 16:52
v2.6.0
e01ffc3
Compare
Choose a tag to compare
  • 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

v2.5.0

01 Nov 16:01
v2.5.0
44f3199
Compare
Choose a tag to compare

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

v2.4.0

19 Oct 12:57
v2.4.0
8565dc6
Compare
Choose a tag to compare
  • 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 (googlefonts/fontmake#465).

v2.3.2

08 Oct 09:29
v2.3.2
2514c7b
Compare
Choose a tag to compare

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 googlefonts/fontmake#468).

v2.3.1

20 Sep 09:47
v2.3.1
c9925b3
Compare
Choose a tag to compare

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

v2.3.0.post1

18 Sep 16:33
v2.3.0.post1
0ae3d9e
Compare
Choose a tag to compare

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 (notofonts/noto-source#122)

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

v2.2.2

10 Sep 15:39
v2.2.2
b0f4c91
Compare
Choose a tag to compare
  • Fixed handling of duplicate glyph names when a TTF does not contain a '.notdef' glyph (321a1d0).

v2.2.1

10 Sep 14:05
v2.2.1
d803c4d
Compare
Choose a tag to compare
  • 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).

v2.2.0.post1

18 Aug 13:08
v2.2.0.post1
68842d6
Compare
Choose a tag to compare
Fix Travis deployment to PyPI.

v2.2.0

18 Aug 12:49
v2.2.0
2682b59
Compare
Choose a tag to compare
  • Added overlapsBackend option to select "pathops" as alternative libary for removing overlaps: https://github.com/fonttools/skia-pathops
  • setup.py: added "pathops" to extras_require. You can install ufo2ft with support for skia-pathops with e.g. pip install ufo2ft[pathops].
  • Added enum34 to installation requirements, only for python < 3.4. This is a backport of python3's enum module.