Skip to content

Releases: googlefonts/glyphsLib

v3.1.1

20 Sep 10:07
ca7febe
Compare
Choose a tag to compare
  • More robustly handle public.glyphOrder: It is now generated/recovered in the way Glyphs.app expects it, leading to fewer differences when round-tripping. See 11d1111 for details.
  • Glyph classes are now always placed at the top of generated feature files: custom lookups are usually placed in the "Prefix" of a .glyphs file and may use these classes. Previously, classes were placed after them, breaking them.
  • Fix parsing backslash escaped glyph names in features. Fixes googlefonts/fontmake#445.
  • A GDEF table is now only generated by glyphs2ufo if you pass the --generate-GDEF argument. The GDEF table should only be generated if you are generating final binaries and may need the --propagate-anchors argument to work properly.
  • Make sure fontMasterID lib keys in UFOs are unique and error out otherwise. This can happen if you make a new master outside Glyphs.app.
  • Italic masters aren't named "Regular Italic" anymore.

v3.1.0

10 Sep 14:31
v3.1.0
44af0f8
Compare
Choose a tag to compare
  • [axes] Fixed issue when 'Axes' custom parameter is defined but not all the masters contain a 'Axis Location' custom parameter (#409, #411, #416).
  • [kerning] Round-trip kerning pairs as they are between UFO and glyphs, without performing any conflict resolution (best left to compiler) (#407).
  • [glyphs2ufo] Made normalization of UFOs opt-in, instead of opt-out. Use -N or --normalize-ufos to enable this from the command line script. Requires the ufonormalizer module (#415).
  • [glyphdata] Embed GlyphData.xml And GlyphData_Ideographs.xml as package data files and parse them at run-time. Removed glyphdata_generated module. Expose 'script' and 'description' attributes of GlyphData database (#410).
  • [parser] Always return list of hex strings when parsing unicode attribute (#405, 95dd3cd).
  • Added pre-commit hooks configuration and automatic linting and code reformatting to the CI checks. Reformatted the whole codebase with black. Fixed a few flake8 linter issues (#414).

v3.0.3

10 Aug 10:36
1f2f8a0
Compare
Choose a tag to compare
  • Correct handling of codePageRanges
    • UFO's openTypeOS2CodePageRanges has a few bits that Glyphs doesn't support, save those to a custom parameter on round-tripping.
    • Empty openTypeOS2CodePageRanges lists stay empty instead of being removed.
  • Fix openTypeOS2Selection handling
    • Store unsupported bits in a openTypeOS2SelectionUnsupportedBits custom value on round-tripping
    • Empty lists are preserved on round-tripping
    • openTypeOS2Selection will be sorted
  • Properly handle categorization of glyph variants
    • Non-spacing marks are properly categorized. This helps with proper feature building and zeros their width.
    • Handle not only matches for full glyph names, but also ligatures and glyph
      variants. Opportunistically concatenate uni* values.
    • Comment the code better.
  • Round-trip italicAngle == zero
  • glyphs2ufo: Make creating background layers optional (off by default)

v3.0.2

19 Jul 16:12
a480b86
Compare
Choose a tag to compare

Fix a crash when round-tripping a GSFeaturePrefix containing only a comment

v3.0.1

19 Jul 10:35
v3.0.1
def888e
Compare
Choose a tag to compare

Fixed 'ImportError: no module named interpolation' in fontmake
googlefonts/fontmake#451

v3.0.0

18 Jul 09:20
fe3cb96
Compare
Choose a tag to compare
  • Remove interpolation capabilities and thereby MutatorMath dependency. Use fontmake instead.
  • Repurposed and extended glyphs2ufo and ufo2glyphs command-line scripts to round-trip between formats with as much metadata intact as possible.
  • Fix a roundtrip bug where the Regular would be renamed to Normal

v2.4.0

20 Jun 17:16
v2.4.0
b3c84eb
Compare
Choose a tag to compare
  • Added support for "Reencode Glyphs" instance custom parameter (#378, #205).

v2.3.1

20 Jun 11:32
v2.3.1
1f1fe2e
Compare
Choose a tag to compare
  • Allow to load GSFont from a os.PathLike object on python3 (#359).
  • Fixed parsing and roundtripping of color tuples (#363).
  • Fixed regression in the generated designspace.filename when a custom family_name is provided that could lead to fontmake outputs overwriting each other (#377).

v2.3.0

04 May 11:08
754502e
Compare
Choose a tag to compare

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.

v2.2.1

18 Dec 16:13
Compare
Choose a tag to compare
  • Write the grid master property as gridLength in the *.glyphs file. Make gridLength a read-only property of GSMaster (equal to master.grid/master.gridSubDivisions) (#298).
  • Allow parsing datetime string without explicit timezone (fa9cdc8).
  • [MetaTools] Do not fetch license info when using external xml (#296).