[mtiLib] Optionally add Debg debug info for MTI feature builds (#3018).
[ttx] Support reading input file from standard input using special - character, similar to existing -o - option to write output to standard output (#3020).
[cython] Prevent cython.compiled raise AttributeError if cython not installed properly (#3017).
[OS/2] Guard against ZeroDivisionError when calculating xAvgCharWidth in the unlikely scenario no glyph has non-zero advance (#3015).
[subset] Recompute xAvgCharWidth independently of --no-prune-unicode-ranges, previously the two options were involuntarily bundled together (#3012).
[fontBuilder] Add debug parameter to addOpenTypeFeatures method to add source debugging information to the font in the Debg private table (#3008).
[name] Make NameRecord __lt__ comparison not fail on Unicode encoding errors (#3006).
[featureVars] Fixed bug in overlayBox (#3003, #3005).
[pens]: Added addVarComponent method to pen protocols' base classes, which pens can implement to handle varcomponents (by default they get decomposed).
[misc.transform] Added DecomposedTransform class which implements an affine transformation with separate translate, rotation, scale, skew, and transformation-center components (#2598)
[sbix] Ensure Glyph.referenceGlyphName is set; fixes error after dumping and re-compiling sbix table with 'dupe' glyphs (#2984).
[feaLib] Be cleverer when merging chained single substitutions into same lookup when they are specified using the inline notation (#2150, #2974).
[instancer] Clamp user-inputted axis ranges to those of fvar (#2959).
[otBase/subset] Define __getstate__ for BaseTable so that a copied/pickled 'lazy' object gets its own OTTableReader to read from; incidentally fixes a bug while subsetting COLRv1 table containing ClipBoxes on python 3.11 (#2965, #2968).
[sbix] Handle glyphs with "dupe" graphic type on compile correctly (#2963).
[glyf] endPointsOfContours field should be unsigned! Kudos to behdad for spotting one of the oldest bugs in FT. Probably nobody has ever dared to make glyphs with more than 32767 points... (#2957).
[feaLib] Fixed handling of ignore statements with unmarked glyphs to match makeotf behavior, which assumes the first glyph is marked (#2950).
Reformatted code with black and enforce new code style via CI check (#2925).
[feaLib] Sort name table entries following OT spec prescribed order in the builder (#2927).
[cu2quPen] Add Cu2QuMultiPen that converts multiple outlines at a time in interpolation compatible way; its methods take a list of tuples arguments that would normally be passed to individual segment pens, and at the end it dispatches the converted outlines to each pen (#2912).
[gvar] Avoid expanding all glyphs unnecessarily upon compile (#2918).
[scaleUpem] Fixed bug whereby CFF2 vsindex was scaled; it should not (#2893, #2894).
[designspaceLib] Add DS.getAxisByTag and refactor getAxis (#2891).
[unicodedata] map Zmthmath in ot_tag_{to,from}_script (#1737, #2889).
[woff2] Support encoding/decoding OVERLAP_SIMPLE glyf flags (#2576, #2884).
[instancer] Update OS/2 class and post.italicAngle when default moved (L4)
Dropped support for Python 3.7 which reached EOL, fontTools requires 3.8+.
[instancer] Fixed instantiateFeatureVariations logic when a rule range becomes default-applicable (#2737, #2880).
[ttLib] Add main to ttFont and ttCollection that just decompile and re-compile the input font (#2869).
[featureVars] Insert 'rvrn' lookup at the beginning of LookupList, to work around bug in Apple implementation of 'rvrn' feature which the spec says it should be processed early whereas on macOS 10.15 it follows lookup order (#2140, #2867).
[instancer/mutator] Remove 'DSIG' table if present.
[svgPathPen] Don't close path in endPath(), assume open unless closePath() (#2089, #2865).
4.38.0
[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).
[mtiLib] Optionally add Debg debug info for MTI feature builds (#3018).
[ttx] Support reading input file from standard input using special - character,
similar to existing -o - option to write output to standard output (#3020).
[cython] Prevent cython.compiled raise AttributeError if cython not installed
properly (#3017).
[OS/2] Guard against ZeroDivisionError when calculating xAvgCharWidth in the unlikely
scenario no glyph has non-zero advance (#3015).
[subset] Recompute xAvgCharWidth independently of --no-prune-unicode-ranges,
previously the two options were involuntarily bundled together (#3012).
[fontBuilder] Add debug parameter to addOpenTypeFeatures method to add source
debugging information to the font in the Debg private table (#3008).
[name] Make NameRecord __lt__ comparison not fail on Unicode encoding errors (#3006).
[featureVars] Fixed bug in overlayBox (#3003, #3005).
[pens]: Added addVarComponent method to pen protocols' base classes, which pens can implement
to handle varcomponents (by default they get decomposed) (#2958).
[misc.transform] Added DecomposedTransform class which implements an affine transformation
with separate translate, rotation, scale, skew, and transformation-center components (#2598)
[sbix] Ensure Glyph.referenceGlyphName is set; fixes error after dumping and
re-compiling sbix table with 'dupe' glyphs (#2984).
[feaLib] Be cleverer when merging chained single substitutions into same lookup
when they are specified using the inline notation (#2150, #2974).
[instancer] Clamp user-inputted axis ranges to those of fvar (#2959).
[otBase/subset] Define __getstate__ for BaseTable so that a copied/pickled 'lazy'
object gets its own OTTableReader to read from; incidentally fixes a bug while
subsetting COLRv1 table containing ClipBoxes on python 3.11 (#2965, #2968).
[sbix] Handle glyphs with "dupe" graphic type on compile correctly (#2963).
[glyf] endPointsOfContours field should be unsigned! Kudos to behdad for
spotting one of the oldest bugs in FT. Probably nobody has ever dared to make
glyphs with more than 32767 points... (#2957).
[feaLib] Fixed handling of ignore statements with unmarked glyphs to match
makeotf behavior, which assumes the first glyph is marked (#2950).
Reformatted code with black and enforce new code style via CI check (#2925).
[feaLib] Sort name table entries following OT spec prescribed order in the builder (#2927).
[cu2quPen] Add Cu2QuMultiPen that converts multiple outlines at a time in
interpolation compatible way; its methods take a list of tuples arguments
that would normally be passed to individual segment pens, and at the end it
dispatches the converted outlines to each pen (#2912).
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.37.1 to 4.39.0.
Release notes
Sourced from fonttools's releases.
... (truncated)
Changelog
Sourced from fonttools's changelog.
... (truncated)
Commits
fbc82d9
Release 4.39.085e7ad3
Update changelog8ea7e6c
Update changelog [skip ci]c24558c
Merge pull request #3018 from fonttools/mtilib-debge0177a9
black8d54662
update mtiLib expected test filese26da96
Merge pull request #3020 from fonttools/ttx-stdin6c6373a
error if no -o option provided when reading input from stdin1d6326e
ttx_test: test dumping and compiling from stdin to stdout15b450e
[ttx] support reading font/xml file from standard input as '-'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)