single |
|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.7
or later.
The package is listed in the Python Package Index (PyPI), so you can
install it with [pip]:
Changelog
~~~~~~~~~
4.38.0 (released 2022-10-21)
----------------------------
- [varLib.instancer] Added support for L4 instancing, i.e. moving the
default value of
an axis while keeping it variable. Thanks Behdad! (#2728, #2861).
It's now also possible to restrict an axis min/max values beyond the
current default
value, e.g. a font wght has min=100, def=400, max=900 and you want a
partial VF that
only varies between 500 and 700, you can now do that.
You can either specify two min/max values (wght=500:700), and the new
default will be
set to either the minimum or maximum, depending on which one is closer to
the current
default (e.g. 500 in this case). Or you can specify three values (e.g.
wght=500:600:700)
to specify the new default value explicitly.
- [otlLib/featureVars] Set a few Count values so one doesn't need to
compile the font
to update them (#2860).
- [varLib.models] Make extrapolation work for 2-master models as well where
one master
is at the default location (#2843, #2846).
Add optional extrapolate=False to normalizeLocation() (#2847, #2849).
- [varLib.cff] Fixed sub-optimal packing of CFF2 deltas by no longer
rounding them to
integer (#2838).
- [scaleUpem] Calculate numShorts in VarData after scale; handle CFF
hintmasks (#2840).
4.37.4 (released 2022-09-30)
----------------------------
- [subset] Keep nameIDs used by CPAL palette entry labels (#2837).
- [varLib] Avoid negative hmtx values when creating font from variable CFF2
font (#2827).
- [instancer] Don't prune stat.ElidedFallbackNameID (#2828).
- [unicodedata] Update Scripts/Blocks to Unicode 15.0 (#2833).
4.37.3 (released 2022-09-20)
----------------------------
- Fix arguments in calls to (glyf) glyph.draw() and drawPoints(), whereby
offset wasn't
correctly passed down; this fix also exposed a second bug, where lsb and
tsb were not
set (#2824, #2825, adobe-type-tools/afdko#1560).
4.37.2 (released 2022-09-15)
----------------------------
- [subset] Keep CPAL table and don't attempt to prune unused color indices
if OT-SVG
table is present even if COLR table was subsetted away; OT-SVG may be
referencing the
CPAL table; for now we assume that's the case (#2814, #2815).
- [varLib.instancer] Downgrade GPOS/GSUB version if there are no more
FeatureVariations
after instancing (#2812).
- [subset] Added ``--no-lazy`` to optionally load fonts eagerly (mostly to
ease
debugging of table lazy loading, no practical effects) (#2807).
- [varLib] Avoid building empty COLR.DeltaSetIndexMap with only identity
mappings (#2803).
- [feaLib] Allow multiple value record types (by promoting to the most
general format)
within the same PairPos subtable; e.g. this allows variable and non
variable kerning
rules to share the same subtable. This also fixes a bug whereby some
kerning pairs
|