Releases: googlefonts/ufo2ft
v2.6.0
- Added
layerName
argument (str
) tocompileOTF
andcompileTTF
, andlayerNames
argument (List[Optional[str]]
) tocompileInterpolatableTTFs
, for compiling outlines from a different UFO3 layer than the default UFO layer.
Note that OpenType features compilation is skipped whenlayerName
is given, as it is assumed that thefeatures.fea
only refers to the default UFO layer. - Added
compileInterpolatableTTFsFromDS
andcompileInterpolatableOTFsFromDS
functions that take a FontTools'DesignSpaceDocument
object and compile OpenType font masters suitable for generating a variable font. All theSourceDescriptor
objects in the designspace should have theirfont
attribute set to a pre-loadeddefcon.Font
or a compatible UFO Font class. The functions return a copy (or same instance ifinplace=True
) of the designspace document with the sources'font
attributes set to the respectiveTTFont
instances. Sources withlayerName
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'slib
element oflayerinfo.plist
instead of in the globallib.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 definestyleMapFamilyName
andstyleMapStyleName
(#299). - Bumped minimum installation requirements:
- fonttools >= 3.35.0
- cu2qu >= 1.6.5
- booleanOperations >= 0.8.2
v2.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
v2.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 touniXXXX
based on their unicode values when theuseProductionNames
compile option (or lib key) is explicitly set to True and nopublic.postscriptNames
is present (googlefonts/fontmake#465).
v2.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 googlefonts/fontmake#468).
v2.3.1
v2.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 (notofonts/noto-source#122)
The version string in setup.py is now computed from git metadata using setuptools-scm.
v2.2.2
v2.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).
v2.2.0.post1
Fix Travis deployment to PyPI.
v2.2.0
- 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'senum
module.