Added:
- `glyphsLib.to_glyphs(DesignSpaceDocument | list<defcon.Font>) -> GSFont` has been implemented and can create a Glyphs font from either a designspace document + source UFOs, or from a list of UFOs.
- `glyphsLib.to_designspace(GSFont) -> DesignSpaceDocument` can translate a Glyphs font into a designspace document and UFOs (reachable via `document.sources[i].font`)
- `to_ufos()` / `to_designspace()` (resp. `to_glyphs()`) have a new parameter `minimize_glyphs_diffs` (resp. `minimize_ufo_diffs`) which can be set to True when round-tripping. When true, glyphsLib stores more information in the produced file, in order to minimize diffs when coming back to the original file. It's interesting when using glyphsLib on files that are under version control.
- Handle `Axes` and masters' `Axis Location` custom parameters.
- Handle Glyphs "annotations" (under a lib key in generated UFOs).
- Handle background images.
- Handle smart components axes and values (but NOT outlines: there is no interpolation of smart components yet).
- Handle multiple unicode values per glyph.
- Handle guidelines.
- Handle Glyphs hints (under a lib key in generated UFOs).
- Support Glyphs API methods: `GSFont.kerningForPair`, `GSFont.setKerningForPair`, `GSFont.removeKerningForPair`
Fixed:
- Don't crash on references to components that don't exist
- Parse various formats for multiple unicode values.
- Parse binary data as hex-encoded bytes.
Changed:
- The command line argument `-R/--no-round` is now `-r/--round-instances` and does the opposite.
- The default names for the width and weight axes is now "Width" and "Weight" in the generated designspace documents.