|CI Build Status| |Coverage Status| |PyPI| |Gitter Chat|
What is this?
~~~~~~~~~~~~~
| fontTools is a library for manipulating fonts, written in Python. The
project includes the TTX tool, that can convert TrueType and OpenType
fonts to and from an XML text format, which is also called TTX. It
supports TrueType, OpenType, AFM and to an extent Type 1 and some
Mac-specific formats. The project has an `MIT open-source
licence `__.
| Among other things this means you can use it free of charge.
[User documentation] and
[developer documentation]
are available at [Read the Docs].
Installation
~~~~~~~~~~~~
FontTools requires [Python] 3.8
or later. We try to follow the same schedule of minimum Python version
support as
NumPy (see [NEP 29]).
The package is listed in the Python Package Index (PyPI), so you can
install it with [pip]:
Changelog
~~~~~~~~~
4.42.1 (released 2023-08-20)
----------------------------
- [t1Lib] Fixed several Type 1 issues (#3238, #3240).
- [otBase/packer] Allow sharing tables reached by different offset sizes
(#3241, #3236).
- [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 (released 2023-08-02)
----------------------------
- [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 (released 2023-07-21)
----------------------------
- [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).
4.41.0 (released 2023-07-12)
----------------------------
- [fontBuilder] Fixed bug in setupOS2 with default panose attribute
incorrectly being
set to a dict instead of a Panose object (#3201).
- [name] Added method to removeUnusedNameRecords in the user range (#3185).
- [varLib.instancer] Fixed issue with L4 instancing (moving default)
(#3179).
- [cffLib] Use latin1 so we can roundtrip non-ASCII in
{Full,Font,Family}Name (#3202).
- [designspaceLib] Mark