Fonttools Versions Save

A library to manipulate font files from Python.

4.45.0

6 months ago
  • [varLib.interpolator] Vastly improved algorithms. Also available now is --pdf and --html options to generate a PDF or HTML report of the interpolation issues.
    The PDF/HTML report showcases the problematic masters, the interpolated broken glyph, as well as the proposed fixed version.

4.44.3

6 months ago
  • [subset] Only prune codepage ranges for OS/2.version >= 1, ignore otherwise (#3334).
  • [instancer] Ensure hhea vertical metrics stay in sync with OS/2 ones after instancing MVAR table containing 'hasc', 'hdsc' or 'hlgp' tags (#3297).

4.44.2

6 months ago
  • [glyf] Have Glyph.recalcBounds skip empty components (base glyph with no contours) when computing the bounding box of composite glyphs. This simply restores the existing behavior before some changes were introduced in fonttools 4.44.0 (#3333).

4.44.1

6 months ago
  • [feaLib] Ensure variable mark anchors are deep-copied while building since they get modified in-place and later reused (#3330).
  • [OS/2|subset] Added method to recalcCodePageRanges to OS/2 table class; added --prune-codepage-ranges to fonttools subset command (#3328, #2607).

NOTE: this release was "yanked" from PyPI because it introduced a regression: https://github.com/fonttools/fonttools/issues/3334

4.44.0

6 months ago
  • [instancer] Recalc OS/2 AvgCharWidth after instancing if default changes (#3317).
  • [otlLib] Make ClassDefBuilder class order match varLib.merger's, i.e. large classes first, then glyph lexicographic order (#3321, #3324).
  • [instancer] Allow not specifying any of min:default:max values and let be filled up with fvar's values (#3322, #3323).
  • [instancer] When running --update-name-table ignore axes that have no STAT axis values (#3318, #3319).
  • [Debg] When dumping to ttx, write the embedded JSON as multi-line string with indentation (92cbfee0d).
  • [varStore] Handle > 65535 items per encoding by splitting VarData subtable (#3310).
  • [subset] Handle null-offsets in MarkLigPos subtables.
  • [subset] Keep East Asian spacing fatures vhal, halt, chws, vchw by default (#3305).
  • [instancer.solver] Fixed case where axisDef < lower and upper < axisMax (#3304).
  • [glyf] Speed up compilation, mostly around recalcBounds (#3301).
  • [varLib.interpolatable] Speed it up when working on variable fonts, plus various micro-optimizations (#3300).
  • Require unicodedata2 >= 15.1.0 when installed with 'unicode' extra, contains UCD 15.1.

4.43.1

7 months ago
  • [EBDT] Fixed TypeError exception in _reverseBytes method triggered when dumping some bitmap fonts with ttx -z bitwise option (#3162).
  • [v/hhea] Fixed UnboundLocalError exception in recalc method when no vmtx or hmtx tables are present (#3290).
  • [bezierTools] Fixed incorrectly typed cython local variable leading to TypeError when calling calcQuadraticArcLength (#3288).
  • [feaLib/otlLib] Better error message when building Coverage table with missing glyph (#3286).

4.43.0

8 months ago
  • [subset] Set up lxml XMLParser(resolve_entities=False) when parsing OT-SVG documents to prevent XML External Entity (XXE) attacks (9f61271dc): https://codeql.github.com/codeql-query-help/python/py-xxe/
  • [varLib.iup] Added workaround for a Cython bug in iup_delta_optimize that was leading to IUP tolerance being incorrectly initialised, resulting in sub-optimal deltas (60126435d, cython/cython#5732).
  • [varLib] Added new command-line entry point fonttools varLib.avar to add an avar table to an existing VF from axes mappings in a .designspace file (0a3360e52).
  • [instancer] Fixed bug whereby no longer used variation regions were not correctly pruned after VarData optimization (#3268).
  • Added support for Python 3.12 (#3283).

4.42.1

9 months ago
  • [t1Lib] Fixed several Type 1 issues (#3238, #3240).
  • [otBase/packer] Allow sharing tables reached by different offset sizes (#3241, #3236, 457f11c2).
  • [varLib/merger] Fix Cursive attachment merging error when all anchors are NULL (#3248, #3247).
  • [ttLib] Fixed warning when calling addMultilingualName and ttFont parameter was not passed on to findMultilingualName (#3253).

4.42.0

9 months ago
  • [varLib] Use sentinel value 0xFFFF to mark a glyph advance in hmtx/vmtx as non participating, allowing sparse masters to contain glyphs for variation purposes other than {H,V}VAR (#3235).
  • [varLib/cff] Treat empty glyphs in non-default masters as missing, thus not participating in CFF2 delta computation, similarly to how varLib already treats them for gvar (#3234).
  • Added varLib.avarPlanner script to deduce 'correct' avar v1 axis mappings based on glyph average weights (#3223).

4.41.1

10 months ago
  • [subset] Fixed perf regression in v4.41.0 by making NameRecordVisitor only visit tables that do contain nameID references (#3213, #3214).
  • [varLib.instancer] Support instancing fonts containing null ConditionSet offsets in FeatureVariationRecords (#3211, #3212).
  • [statisticsPen] Report font glyph-average weight/width and font-wide slant.
  • [fontBuilder] Fixed head.created date incorrectly set to 0 instead of the current timestamp, regression introduced in v4.40.0 (#3210).
  • [varLib.merger] Support sparse CursivePos masters (#3209).