Changelog
### 3.29.0
```
----------------------------
- [feaLib] In the OTL table builder, when the ``name`` table is excluded
from the list of tables to be build, skip compiling ``featureNames`` blocks,
as the records referenced in ``FeatureParams`` table don't exist (68951b7).
- [otBase] Try ``ExtensionLookup`` if other offset-overflow methods fail
(05f95f0).
- [feaLib] Added support for explicit ``subtable;`` break statements in
PairPos lookups; previously these were ignored (1279, 1300, 1302).
- [cffLib.specializer] Make sure the stack depth does not exceed maxstack - 1,
so that a subroutinizer can insert subroutine calls (1301,
https://github.com/googlei18n/ufo2ft/issues/266).
- [otTables] Added support for fixing offset overflow errors occurring inside
``MarkBasePos`` subtables (1297).
- [subset] Write the default output file extension based on ``--flavor`` option,
or the value of ``TTFont.sfntVersion`` (d7ac0ad).
- [unicodedata] Updated Blocks, Scripts and ScriptExtensions for Unicode 11
(452c85e).
- [xmlWriter] Added context manager to XMLWriter class to autoclose file
descriptor on exit (1290).
- [psCharStrings] Optimize the charstring's bytecode by encoding as integers
all float values that have no decimal portion (8d7774a).
- [ttFont] Fixed missing import of ``TTLibError`` exception (1285).
- [feaLib] Allow any languages other than ``dflt`` under ``DFLT`` script
(1278, 1292).
```
### 3.28.0
```
----------------------------
- [featureVars] Added experimental module to build ``FeatureVariations``
tables. Still needs to be hooked up to ``varLib.build`` (1240).
- [fixedTools] Added ``otRound`` to round floats to nearest integer towards
positive Infinity. This is now used where we deal with visual data like X/Y
coordinates, advance widths/heights, variation deltas, and similar (1274,
1248).
- [subset] Improved GSUB closure memoize algorithm.
- [varLib.models] Fixed regression in model resolution (180124, 1269).
- [feaLib.ast] Fixed error when converting ``SubtableStatement`` to string
(1275).
- [varLib.mutator] Set ``OS/2.usWeightClass`` and ``usWidthClass``, and
``post.italicAngle`` based on the 'wght', 'wdth' and 'slnt' axis values
(1276, 1264).
- [py23/loggingTools] Don't automatically set ``logging.lastResort`` handler
on py27. Moved ``LastResortLogger`` to the ``loggingTools`` module (1277).
```
### 3.27.1
```
----------------------------
- [ttGlyphPen] Issue a warning and skip building non-existing components
(https://github.com/googlei18n/fontmake/issues/411).
- [tests] Fixed issue running ttx_test.py from a tagged commit.
```
### 3.27.0
```
----------------------------
- [designspaceLib] Added new ``conditionSet`` element to ``rule`` element in
designspace document. Bumped ``format`` attribute to ``4.0`` (previously,
it was formatted as an integer). Removed ``checkDefault``, ``checkAxes``
methods, and any kind of guessing about the axes when the ``<axes>`` element
is missing. The default master is expected at the intersection of all default
values for each axis (1254, 1255, 1267).
- [cffLib] Fixed issues when compiling CFF2 or converting from CFF when the
font has an FDArray (1211, 1271).
- [varLib] Avoid attempting to build ``cvar`` table when ``glyf`` table is not
present, as is the case for CFF2 fonts.
- [subset] Handle None coverages in MarkGlyphSets; revert commit 02616ab that
sets empty Coverage tables in MarkGlyphSets to None, to make OTS happy.
- [ttFont] Allow to build glyph order from ``maxp.numGlyphs`` when ``post`` or
``cmap`` are missing.
- [ttFont] Added ``__len__`` method to ``_TTGlyphSet``.
- [glyf] Ensure ``GlyphCoordinates`` never overflow signed shorts (1230).
- [py23] Added alias for ``itertools.izip`` shadowing the built-in ``zip``.
- [loggingTools] Memoize ``log`` property of ``LogMixin`` class (fbab12).
- [ttx] Impoved test coverage (1261).
- [Snippets] Addded script to append a suffix to all family names in a font.
- [varLib.plot] Make it work with matplotlib >= 2.1 (b38e2b).
```
### 3.26.0
```
----------------------------
- [designspace] Added a new optional ``layer`` attribute to the source element,
and a corresponding ``layerName`` attribute to the ``SourceDescriptor``
object (1253).
Added ``conditionset`` element to the ``rule`` element to the spec, but not
implemented in designspace reader/writer yet (1254).
- [varLib.models] Refine modeling one last time (0ecf5c5).
- [otBase] Fixed sharing of tables referred to by different offset sizes
(795f2f9).
- [subset] Don't drop a GDEF that only has VarStore (fc819d6). Set to None
empty Coverage tables in MarkGlyphSets (02616ab).
- [varLib]: Added ``--master-finder`` command-line option (1249).
- [varLib.mutator] Prune fvar nameIDs from instance's name table (1245).
- [otTables] Allow decompiling bad ClassDef tables with invalid format, with
warning (1236).
- [varLib] Make STAT v1.2 and reuse nameIDs from fvar table (1242).
- [varLib.plot] Show master locations. Set axis limits to -1, +1.
- [subset] Handle HVAR direct mapping. Passthrough 'cvar'.
Added ``--font-number`` command-line option for collections.
- [t1Lib] Allow a text encoding to be specified when parsing a Type 1 font
(1234). Added ``kind`` argument to T1Font constructor (c5c161c).
- [ttLib] Added context manager API to ``TTFont`` class, so it can be used in
``with`` statements to auto-close the file when exiting the context (1232).
```
### 3.25.0
```
----------------------------
- [varLib] Improved support-resolution algorithm. Previously, the on-axis
masters would always cut the space. They don't anymore. That's more
consistent, and fixes the main issue Erik showed at TYPO Labs 2017.
Any varfont built that had an unusual master configuration will change
when rebuilt (42bef17, a523a697,
https://github.com/googlei18n/fontmake/issues/264).
- [varLib.models] Added a ``main()`` entry point, that takes positions and
prints model results.
- [varLib.plot] Added new module to plot a designspace's
VariationModel. Requires ``matplotlib``.
- [varLib.mutator] Added -o option to specify output file path (2ef60fa).
- [otTables] Fixed IndexError while pruning of HVAR pre-write (6b6c34a).
- [varLib.models] Convert delta array to floats if values overflows signed
short integer (0055f94).
```
### 3.24.2
```
----------------------------
- [otBase] Don't fail during ``ValueRecord`` copy if src has more items.
We drop hinting in the subsetter by simply changing ValueFormat, without
cleaning up the actual ValueRecords. This was causing assertion error if
a variable font was subsetted without hinting and then passed directly to
the mutator for instantiation without first it saving to disk.
```
### 3.24.1
```
----------------------------
- [varLib] Don't remap the same ``DeviceTable`` twice in VarStore optimizer
(1206).
- [varLib] Add ``--disable-iup`` option to ``fonttools varLib`` script,
and a ``optimize=True`` keyword argument to ``varLib.build`` function,
to optionally disable IUP optimization while building varfonts.
- [ttCollection] Fixed issue while decompiling ttc with python3 (1207).
```
### 3.24.0
```
----------------------------
- [ttGlyphPen] Decompose composite glyphs if any components' transform is too
large to fit a ``F2Dot14`` value, or clamp transform values that are
(almost) equal to +2.0 to make them fit and avoid decomposing (1200,
1204, 1205).
- [ttx] Added new ``-g`` option to dump glyphs from the ``glyf`` table
splitted as individual ttx files (153, 1035, 1132, 1202).
- Copied ``ufoLib.filenames`` module to ``fontTools.misc.filenames``, used
for the ttx split-glyphs option (1202).
- [feaLib] Added support for ``cvParameters`` blocks in Character Variant
feautures ``cv01-cv99`` (860, 1169).
- [Snippets] Added ``checksum.py`` script to generate/check SHA1 hash of
ttx files (1197).
- [varLib.mutator] Fixed issue while instantiating some variable fonts
whereby the horizontal advance width computed from ``gvar`` phantom points
could turn up to be negative (1198).
- [varLib/subset] Fixed issue with subsetting GPOS variation data not
picking up ``ValueRecord`` ``Device`` objects (54fd71f).
- [feaLib/voltLib] In all AST elements, the ``location`` is no longer a
required positional argument, but an optional kewyord argument (defaults
to ``None``). This will make it easier to construct feature AST from
code (1201).
```
### 3.23.0
```
----------------------------
- [designspaceLib] Added an optional ``lib`` element to the designspace as a
whole, as well as to the instance elements, to store arbitrary data in a
property list dictionary, similar to the UFO's ``lib``. Added an optional
``font`` attribute to the ``SourceDescriptor``, to allow operating on
in-memory font objects (1175).
- [cffLib] Fixed issue with lazy-loading of attributes when attempting to
set the CFF TopDict.Encoding (1177, 1187).
- [ttx] Fixed regression introduced in 3.22.0 that affected the split tables
``-s`` option (1188).
- [feaLib] Added ``IncludedFeaNotFound`` custom exception subclass, raised
when an included feature file cannot be found (1186).
- [otTables] Changed ``VarIdxMap`` to use glyph names internally instead of
glyph indexes. The old ttx dumps of HVAR/VVAR tables that contain indexes
can still be imported (21cbab8, 38a0ffb).
- [varLib] Implemented VarStore optimizer (1184).
- [subset] Implemented pruning of GDEF VarStore, HVAR and MVAR (1179).
- [sfnt] Restore backward compatiblity with ``numFonts`` attribute of
``SFNTReader`` object (1181).
- [merge] Initial support for merging ``LangSysRecords`` (1180).
- [ttCollection] don't seek(0) when writing to possibly unseekable strems.
- [subset] Keep all ``--name-IDs`` from 0 to 6 by default (1170, 605, 114).
- [cffLib] Added ``width`` module to calculate optimal CFF default and
nominal glyph widths.
- [varLib] Don’t fail if STAT already in the master fonts (1166).
```
Links
- PyPI: https://pypi.org/project/fonttools
- Changelog: https://pyup.io/changelogs/fonttools/
- Repo: http://github.com/fonttools/fonttools
Changelog
### 2.3.1
```
Fixed issue whereby python2 `str` (same as `bytes`) objects were written as property list's `<data>` elements instead of `<string>` elements.
Added `use_builtin_types` option to `plistlib.load/dump` to control whether `<data>` elements should be loaded as built-in `bytes` (this is the default when running ufoLib under python3), or whether they should be wrapped in a `plistlib.Data` object (default when running ufoLib under python2); when used with the `dump` function, this option controls whether `bytes` values should be written as `<data>` (python3) or as `<string>` (python2) elements.
https://github.com/unified-font-object/ufoLib/issues/162
https://github.com/unified-font-object/ufoLib/pull/163
https://github.com/unified-font-object/ufoLib/issues/164
```
### 2.3.0
```
- The `lxml` and `singledispatch` requirements are now optional. When not present, the built-in `xml.etree.ElementTree` library is used. To install ufoLib with lxml support you can do like this: `pip install ufoLib[lxml]`.
- Added new `ufoLib.plistlib` implementation that works the same way on both python 2 and python 3, and matches the python3's `plistlib` API (160).
- Added new `ufoLib.etree` module that exports the same ElementTree interface using either `lxml` or `xml.etree` (built-in) as backends, depending on the availability of former (161).
- glifLib: use double quotes in XML declaration like previous ufoLib versions (159).
- Set up test coverage and upload coverage report to codecov.io.
```
### 2.2.4
```
Fixed issue when parsing GLIF xml from a Unicode string containing an explicit XML encoding declaration. The latter is ignored and UTF-8 encoding is always assumed (157).
```
### 2.2.3
```
- Fixed issue introduced in v2.2 whereby the XML declaration was not written at the top of GLIF files and in the string returned from `writeGlyphToString` function (157).
```
### 2.2.2
```
- Minor fixes to validation
- Make validation on the default for read and write (prior it was off for write)
```
### 2.2.1
```
- Fixes issue whereby the required lxml dependency was not correctly specified in the setup.py's `install_requires`.
```
### 2.2.0
```
- Added options to turn validation off on read and write. This can be globally, or per bit of data. For UFOWriter, validation is on by default. For UFOReader, validation is off by default.
- Switched to lxml from ElementTree. lxml is now a required dependency.
- Optimizations to glyphLib (adrientetar)
- When converting to UFO3, ufoLib will now remove the older mmk group prefixes
```
Links
- PyPI: https://pypi.org/project/ufolib
- Changelog: https://pyup.io/changelogs/ufolib/
- Repo: https://github.com/unified-font-object/ufoLib
Changelog
### 0.5.0
```
- Added kerning.find() method, to find a value for a pair, even if the pair is not specifically defined in the kerning; i.e., the method is given a glyph name that has kerning, but only because it is in a kerning group.
```
### 0.4.0
```
- When saving a new font created from scratch, or one loaded from a different path, to the location of another existing UFO, the latter is automatically overwritten with the new one (180).
- When saving a font in-place and the existing UFO is invalid, overwrite the latter (165, 180).
- Allow to rename the default layer when saving in-place (165, 180).
```
Links
- PyPI: https://pypi.org/project/defcon
- Changelog: https://pyup.io/changelogs/defcon/
- Homepage: http://code.typesupply.com
Update fonttools from 3.22.0 to 3.29.0.
Changelog
### 3.29.0 ``` ---------------------------- - [feaLib] In the OTL table builder, when the ``name`` table is excluded from the list of tables to be build, skip compiling ``featureNames`` blocks, as the records referenced in ``FeatureParams`` table don't exist (68951b7). - [otBase] Try ``ExtensionLookup`` if other offset-overflow methods fail (05f95f0). - [feaLib] Added support for explicit ``subtable;`` break statements in PairPos lookups; previously these were ignored (1279, 1300, 1302). - [cffLib.specializer] Make sure the stack depth does not exceed maxstack - 1, so that a subroutinizer can insert subroutine calls (1301, https://github.com/googlei18n/ufo2ft/issues/266). - [otTables] Added support for fixing offset overflow errors occurring inside ``MarkBasePos`` subtables (1297). - [subset] Write the default output file extension based on ``--flavor`` option, or the value of ``TTFont.sfntVersion`` (d7ac0ad). - [unicodedata] Updated Blocks, Scripts and ScriptExtensions for Unicode 11 (452c85e). - [xmlWriter] Added context manager to XMLWriter class to autoclose file descriptor on exit (1290). - [psCharStrings] Optimize the charstring's bytecode by encoding as integers all float values that have no decimal portion (8d7774a). - [ttFont] Fixed missing import of ``TTLibError`` exception (1285). - [feaLib] Allow any languages other than ``dflt`` under ``DFLT`` script (1278, 1292). ``` ### 3.28.0 ``` ---------------------------- - [featureVars] Added experimental module to build ``FeatureVariations`` tables. Still needs to be hooked up to ``varLib.build`` (1240). - [fixedTools] Added ``otRound`` to round floats to nearest integer towards positive Infinity. This is now used where we deal with visual data like X/Y coordinates, advance widths/heights, variation deltas, and similar (1274, 1248). - [subset] Improved GSUB closure memoize algorithm. - [varLib.models] Fixed regression in model resolution (180124, 1269). - [feaLib.ast] Fixed error when converting ``SubtableStatement`` to string (1275). - [varLib.mutator] Set ``OS/2.usWeightClass`` and ``usWidthClass``, and ``post.italicAngle`` based on the 'wght', 'wdth' and 'slnt' axis values (1276, 1264). - [py23/loggingTools] Don't automatically set ``logging.lastResort`` handler on py27. Moved ``LastResortLogger`` to the ``loggingTools`` module (1277). ``` ### 3.27.1 ``` ---------------------------- - [ttGlyphPen] Issue a warning and skip building non-existing components (https://github.com/googlei18n/fontmake/issues/411). - [tests] Fixed issue running ttx_test.py from a tagged commit. ``` ### 3.27.0 ``` ---------------------------- - [designspaceLib] Added new ``conditionSet`` element to ``rule`` element in designspace document. Bumped ``format`` attribute to ``4.0`` (previously, it was formatted as an integer). Removed ``checkDefault``, ``checkAxes`` methods, and any kind of guessing about the axes when the ``<axes>`` element is missing. The default master is expected at the intersection of all default values for each axis (1254, 1255, 1267). - [cffLib] Fixed issues when compiling CFF2 or converting from CFF when the font has an FDArray (1211, 1271). - [varLib] Avoid attempting to build ``cvar`` table when ``glyf`` table is not present, as is the case for CFF2 fonts. - [subset] Handle None coverages in MarkGlyphSets; revert commit 02616ab that sets empty Coverage tables in MarkGlyphSets to None, to make OTS happy. - [ttFont] Allow to build glyph order from ``maxp.numGlyphs`` when ``post`` or ``cmap`` are missing. - [ttFont] Added ``__len__`` method to ``_TTGlyphSet``. - [glyf] Ensure ``GlyphCoordinates`` never overflow signed shorts (1230). - [py23] Added alias for ``itertools.izip`` shadowing the built-in ``zip``. - [loggingTools] Memoize ``log`` property of ``LogMixin`` class (fbab12). - [ttx] Impoved test coverage (1261). - [Snippets] Addded script to append a suffix to all family names in a font. - [varLib.plot] Make it work with matplotlib >= 2.1 (b38e2b). ``` ### 3.26.0 ``` ---------------------------- - [designspace] Added a new optional ``layer`` attribute to the source element, and a corresponding ``layerName`` attribute to the ``SourceDescriptor`` object (1253). Added ``conditionset`` element to the ``rule`` element to the spec, but not implemented in designspace reader/writer yet (1254). - [varLib.models] Refine modeling one last time (0ecf5c5). - [otBase] Fixed sharing of tables referred to by different offset sizes (795f2f9). - [subset] Don't drop a GDEF that only has VarStore (fc819d6). Set to None empty Coverage tables in MarkGlyphSets (02616ab). - [varLib]: Added ``--master-finder`` command-line option (1249). - [varLib.mutator] Prune fvar nameIDs from instance's name table (1245). - [otTables] Allow decompiling bad ClassDef tables with invalid format, with warning (1236). - [varLib] Make STAT v1.2 and reuse nameIDs from fvar table (1242). - [varLib.plot] Show master locations. Set axis limits to -1, +1. - [subset] Handle HVAR direct mapping. Passthrough 'cvar'. Added ``--font-number`` command-line option for collections. - [t1Lib] Allow a text encoding to be specified when parsing a Type 1 font (1234). Added ``kind`` argument to T1Font constructor (c5c161c). - [ttLib] Added context manager API to ``TTFont`` class, so it can be used in ``with`` statements to auto-close the file when exiting the context (1232). ``` ### 3.25.0 ``` ---------------------------- - [varLib] Improved support-resolution algorithm. Previously, the on-axis masters would always cut the space. They don't anymore. That's more consistent, and fixes the main issue Erik showed at TYPO Labs 2017. Any varfont built that had an unusual master configuration will change when rebuilt (42bef17, a523a697, https://github.com/googlei18n/fontmake/issues/264). - [varLib.models] Added a ``main()`` entry point, that takes positions and prints model results. - [varLib.plot] Added new module to plot a designspace's VariationModel. Requires ``matplotlib``. - [varLib.mutator] Added -o option to specify output file path (2ef60fa). - [otTables] Fixed IndexError while pruning of HVAR pre-write (6b6c34a). - [varLib.models] Convert delta array to floats if values overflows signed short integer (0055f94). ``` ### 3.24.2 ``` ---------------------------- - [otBase] Don't fail during ``ValueRecord`` copy if src has more items. We drop hinting in the subsetter by simply changing ValueFormat, without cleaning up the actual ValueRecords. This was causing assertion error if a variable font was subsetted without hinting and then passed directly to the mutator for instantiation without first it saving to disk. ``` ### 3.24.1 ``` ---------------------------- - [varLib] Don't remap the same ``DeviceTable`` twice in VarStore optimizer (1206). - [varLib] Add ``--disable-iup`` option to ``fonttools varLib`` script, and a ``optimize=True`` keyword argument to ``varLib.build`` function, to optionally disable IUP optimization while building varfonts. - [ttCollection] Fixed issue while decompiling ttc with python3 (1207). ``` ### 3.24.0 ``` ---------------------------- - [ttGlyphPen] Decompose composite glyphs if any components' transform is too large to fit a ``F2Dot14`` value, or clamp transform values that are (almost) equal to +2.0 to make them fit and avoid decomposing (1200, 1204, 1205). - [ttx] Added new ``-g`` option to dump glyphs from the ``glyf`` table splitted as individual ttx files (153, 1035, 1132, 1202). - Copied ``ufoLib.filenames`` module to ``fontTools.misc.filenames``, used for the ttx split-glyphs option (1202). - [feaLib] Added support for ``cvParameters`` blocks in Character Variant feautures ``cv01-cv99`` (860, 1169). - [Snippets] Added ``checksum.py`` script to generate/check SHA1 hash of ttx files (1197). - [varLib.mutator] Fixed issue while instantiating some variable fonts whereby the horizontal advance width computed from ``gvar`` phantom points could turn up to be negative (1198). - [varLib/subset] Fixed issue with subsetting GPOS variation data not picking up ``ValueRecord`` ``Device`` objects (54fd71f). - [feaLib/voltLib] In all AST elements, the ``location`` is no longer a required positional argument, but an optional kewyord argument (defaults to ``None``). This will make it easier to construct feature AST from code (1201). ``` ### 3.23.0 ``` ---------------------------- - [designspaceLib] Added an optional ``lib`` element to the designspace as a whole, as well as to the instance elements, to store arbitrary data in a property list dictionary, similar to the UFO's ``lib``. Added an optional ``font`` attribute to the ``SourceDescriptor``, to allow operating on in-memory font objects (1175). - [cffLib] Fixed issue with lazy-loading of attributes when attempting to set the CFF TopDict.Encoding (1177, 1187). - [ttx] Fixed regression introduced in 3.22.0 that affected the split tables ``-s`` option (1188). - [feaLib] Added ``IncludedFeaNotFound`` custom exception subclass, raised when an included feature file cannot be found (1186). - [otTables] Changed ``VarIdxMap`` to use glyph names internally instead of glyph indexes. The old ttx dumps of HVAR/VVAR tables that contain indexes can still be imported (21cbab8, 38a0ffb). - [varLib] Implemented VarStore optimizer (1184). - [subset] Implemented pruning of GDEF VarStore, HVAR and MVAR (1179). - [sfnt] Restore backward compatiblity with ``numFonts`` attribute of ``SFNTReader`` object (1181). - [merge] Initial support for merging ``LangSysRecords`` (1180). - [ttCollection] don't seek(0) when writing to possibly unseekable strems. - [subset] Keep all ``--name-IDs`` from 0 to 6 by default (1170, 605, 114). - [cffLib] Added ``width`` module to calculate optimal CFF default and nominal glyph widths. - [varLib] Don’t fail if STAT already in the master fonts (1166). ```Links
- PyPI: https://pypi.org/project/fonttools - Changelog: https://pyup.io/changelogs/fonttools/ - Repo: http://github.com/fonttools/fonttoolsUpdate ufoLib from 2.1.1 to 2.3.1.
Changelog
### 2.3.1 ``` Fixed issue whereby python2 `str` (same as `bytes`) objects were written as property list's `<data>` elements instead of `<string>` elements. Added `use_builtin_types` option to `plistlib.load/dump` to control whether `<data>` elements should be loaded as built-in `bytes` (this is the default when running ufoLib under python3), or whether they should be wrapped in a `plistlib.Data` object (default when running ufoLib under python2); when used with the `dump` function, this option controls whether `bytes` values should be written as `<data>` (python3) or as `<string>` (python2) elements. https://github.com/unified-font-object/ufoLib/issues/162 https://github.com/unified-font-object/ufoLib/pull/163 https://github.com/unified-font-object/ufoLib/issues/164 ``` ### 2.3.0 ``` - The `lxml` and `singledispatch` requirements are now optional. When not present, the built-in `xml.etree.ElementTree` library is used. To install ufoLib with lxml support you can do like this: `pip install ufoLib[lxml]`. - Added new `ufoLib.plistlib` implementation that works the same way on both python 2 and python 3, and matches the python3's `plistlib` API (160). - Added new `ufoLib.etree` module that exports the same ElementTree interface using either `lxml` or `xml.etree` (built-in) as backends, depending on the availability of former (161). - glifLib: use double quotes in XML declaration like previous ufoLib versions (159). - Set up test coverage and upload coverage report to codecov.io. ``` ### 2.2.4 ``` Fixed issue when parsing GLIF xml from a Unicode string containing an explicit XML encoding declaration. The latter is ignored and UTF-8 encoding is always assumed (157). ``` ### 2.2.3 ``` - Fixed issue introduced in v2.2 whereby the XML declaration was not written at the top of GLIF files and in the string returned from `writeGlyphToString` function (157). ``` ### 2.2.2 ``` - Minor fixes to validation - Make validation on the default for read and write (prior it was off for write) ``` ### 2.2.1 ``` - Fixes issue whereby the required lxml dependency was not correctly specified in the setup.py's `install_requires`. ``` ### 2.2.0 ``` - Added options to turn validation off on read and write. This can be globally, or per bit of data. For UFOWriter, validation is on by default. For UFOReader, validation is off by default. - Switched to lxml from ElementTree. lxml is now a required dependency. - Optimizations to glyphLib (adrientetar) - When converting to UFO3, ufoLib will now remove the older mmk group prefixes ```Links
- PyPI: https://pypi.org/project/ufolib - Changelog: https://pyup.io/changelogs/ufolib/ - Repo: https://github.com/unified-font-object/ufoLibUpdate defcon from 0.3.5 to 0.5.1.
Changelog
### 0.5.0 ``` - Added kerning.find() method, to find a value for a pair, even if the pair is not specifically defined in the kerning; i.e., the method is given a glyph name that has kerning, but only because it is in a kerning group. ``` ### 0.4.0 ``` - When saving a new font created from scratch, or one loaded from a different path, to the location of another existing UFO, the latter is automatically overwritten with the new one (180). - When saving a font in-place and the existing UFO is invalid, overwrite the latter (165, 180). - Allow to rename the default layer when saving in-place (165, 180). ```Links
- PyPI: https://pypi.org/project/defcon - Changelog: https://pyup.io/changelogs/defcon/ - Homepage: http://code.typesupply.com