[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 set 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
[subset] Keep nameIDs used by CPAL palette entry labels (#2837).
[varLib] Avoid negative hmtx values when creating font from variable CFF2 font (#2827).
[unicodedata] Update Scripts/Blocks to Unicode 15.0 (#2833).
4.37.3
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
[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 (fonttools/fonttools#2814, fonttools/fonttools#2815).
[varLib.instancer] Downgrade GPOS/GSUB version if there are no more FeatureVariations after instancing (fonttools/fonttools#2812).
[subset] Added --no-lazy to optionally load fonts eagerly (mostly to ease debugging of table lazy loading, no practical effects) (fonttools/fonttools#2807).
[varLib] Avoid building empty COLR.DeltaSetIndexMap with only identity mappings (fonttools/fonttools#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 would become unreachable while shapiong because of premature subtable splitting (fonttools/fonttools#2772, fonttools/fonttools#2776).
[feaLib] Speed up VarScalar by caching models for recurring master locations (fonttools/fonttools#2798).
[feaLib] Optionally cythonize feaLib.lexer, speeds up parsing FEA a bit (fonttools/fonttools#2799).
[designspaceLib] Avoid crash when handling unbounded rule conditions (fonttools/fonttools#2797).
[post] Don't crash if post legacy format 1 is malformed/improperly used (fonttools/fonttools#2786)
[gvar] Don't be "lazy" (load all glyph variations up front) when TTFont.lazy=False (fonttools/fonttools#2771).
[TTFont] Added normalizeLocation method to normalize a location dict from the font's defined axes space (also known as "user space") into the normalized (-1..+1) space. It applies avar mapping if the font contains an avar table (fonttools/fonttools#2789).
[TTVarGlyphSet] Support drawing glyph instances from CFF2 variable glyph set (fonttools/fonttools#2784).
[fontBuilder] Do not error when building cmap if there are zero code points (fonttools/fonttools#2785).
[varLib.plot] Added ability to plot a variation model and set of accompaning master values corresponding to the model's master locations into a pyplot figure (fonttools/fonttools#2767).
[TTVarGlyphSet] implement drawPoints natively, avoiding going through SegmentToPointPen (fonttools/fonttools#2778).
[TTVarGlyphSet] Fixed bug whereby drawing a composite glyph multiple times, its components would shif; needed an extra copy (fonttools/fonttools#2774).
4.37.1
[subset] Fixed regression introduced with v4.37.0 while subsetting the VarStore of HVAR and VVAR tables, whereby an AttributeError: subset_varidxes was thrown because an apparently unused import statement (with the side-effect of dynamically binding that subset_varidxes method to the VarStore class) had been accidentally deleted in an unrelated PR (#2769, #2773).
[ttGlyphSet] Ensure the newly added _TTVarGlyphSet inherits from _TTGlyphSet to keep backward compatibility with existing API (fonttools/fonttools#2762).
[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).
[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
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Bumps fonttools from 4.34.4 to 4.38.0.
Release notes
Sourced from fonttools's releases.
... (truncated)
Changelog
Sourced from fonttools's changelog.
... (truncated)
Commits
111d2c5
Release 4.38.063cea88
Update changelog [skip ci]65a65b5
Merge pull request #2861 from fonttools/l4-fixesb74d098
add custom repr to AxisTriple so they print nicer in the logging output0c30d96
Update instancer tests to use triples as axis limits86e1202
[instancer] expand singles/tuples to triples upfront and use triples throughout40b2473
Merge pull request #2728 from fonttools/instancer-l43d2fa8a
[glyf] Return component transform as part of control data6fd5bc2
Merge pull request #2860 from fonttools/set-redundant-attrsc41cda3
featureVars: set FeatureCount/LangSysCount, even if 0Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase
.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)