[ttLib/otTables] Cleaned up virtual GID handling: allow virtual GIDs in Coverage and ClassDef readers; removed unused allowVID argument from TTFont constructor, and requireReal argument in TTFont.getGlyphID method.
Make TTFont.setGlyphOrder clear reverse glyphOrder map, and assume glyphOrder internal attribute is never modified outside setGlyphOrder; added TTFont.getGlyphNameMany and getGlyphIDMany (#1536, #1654, #2334, #2398).
[py23] Dropped internal use of fontTools.py23 module to fix deprecation warnings in client code that imports from fontTools (#2232, #2399, #2400).
[subset] Fix subsetting COLRv1 clip boxes when font is loaded lazily (#2408).
[transform] Added transformVector and transformVectors methods to the Transform class. Similar to transformPoint but ignore the translation part (#2386).
4.26.0
[xmlWriter] Default to "\n" for newlinestr instead of platform-specific os.linesep (#2384).
[otData] Define COLRv1 ClipList and ClipBox (#2379).
[removeOverlaps/instancer] Added --ignore-overlap-errors option to work around Skia PathOps.Simplify bug (#2382, #2363, google/fonts#3365).
NOTE: This will be the last version to support Python 3.6. FontTools will require Python 3.7 or above from the next release (#2350).
4.25.2
[COLRv1] Various changes to sync with the latest CORLv1 draft spec. In particular:
define COLR.VarIndexMap, remove/inline ColorIndex struct, add VarIndexBase to PaintVar* tables (#2372);
add reduced-precicion specialized transform Paints;
define Angle as fraction of half circle encoded as F2Dot14;
use FWORD (int16) for all Paint center coordinates;
change PaintTransform to have an offset to Affine2x3 (#2359).
[ttLib] when importing XML, only set sfntVersion if the font has no reader and is empty (#2376)
4.25.1
[ttGlyphPen] Fixed bug in TTGlyphPointPen, whereby open contours (i.e. starting with segmentType "move") would throw NotImplementedError. They are now treated as if they are closed, like with the TTGlyphPen (#2365, #2366).
4.25.0
[tfmLib] Added new library for parsing TeX Font Metric (TFM) files (#2354).
[TupleVariation] Make shared tuples order deterministic on python < 3.7 where Counter (subclass of dict) doesn't remember insertion order (#2351, #2353).
[otData] Renamed COLRv1 structs to remove 'v1' suffix and match the updated draft spec: 'LayerV1List' -> 'LayerList', 'BaseGlyphV1List' -> 'BaseGlyphList', 'BaseGlyphV1Record' -> 'BaseGlyphPaintRecord' (#2346).
Added 8 new PaintScale* tables: with/without centers, uniform vs non-uniform.
Added *AroundCenter variants to PaintRotate and PaintSkew: the default versions no longer have centerX/Y, but default to origin.
PaintRotate, PaintSkew and PaintComposite formats were re-numbered.
NOTE: these are breaking changes; clients using the experimental COLRv1 API will have to be updated (#2348).
[pointPens] Allow GuessSmoothPointPen to accept a tolerance. Fixed call to math.atan2 with x/y parameters inverted. Sync the code with fontPens (#2344).
[post] Fixed parsing post table format 2.0 when it contains extra garbage at the end of the stringData array (#2314).
[subset] drop empty features unless 'size' with FeatureParams table (#2324).
[otlLib] Added otlLib.optimize module; added GPOS compaction algorithm. The compaction can be run on existing fonts with fonttools otlLib.optimize or using the snippet compact_gpos.py. There's experimental support for compacting fonts at compilation time using an environment variable, but that might be removed later (#2326).
4.24.4
[subset/instancer] Fixed AttributeError when instantiating a VF that contains GPOS ValueRecords with Device tables but without the respective non-Device values (e.g. XAdvDevice without XAdvance). When not explicitly set, the latter are assumed to be 0 (#2323).
4.24.3
[otTables] Fixed AttributeError in methods that split LigatureSubst, MultipleSubst and AlternateSubst subtables when an offset overflow occurs. The Format attribute was removed in v4.22.0 (#2319).
[ttLib/otTables] Cleaned up virtual GID handling: allow virtual GIDs in Coverage
and ClassDef readers; removed unused allowVID argument from TTFont
constructor, and requireReal argument in TTFont.getGlyphID method.
Make TTFont.setGlyphOrder clear reverse glyphOrder map, and assume glyphOrder
internal attribute is never modified outside setGlyphOrder; added TTFont.getGlyphNameMany
and getGlyphIDMany (#1536, #1654, #2334, #2398).
[py23] Dropped internal use of fontTools.py23 module to fix deprecation warnings
in client code that imports from fontTools (#2234, #2399, #2400).
[subset] Fix subsetting COLRv1 clip boxes when font is loaded lazily (#2408).
[transform] Added transformVector and transformVectors methods to the
Transform class. Similar to transformPoint but ignore the translation
part (#2386).
4.26.0 (released 2021-08-03)
[xmlWriter] Default to "\n" for newlinestr instead of platform-specific
os.linesep (#2384).
[otData] Define COLRv1 ClipList and ClipBox (#2379).
[removeOverlaps/instancer] Added --ignore-overlap-errors option to work around
Skia PathOps.Simplify bug (#2382, #2363, google/fonts#3365).
NOTE: This will be the last version to support Python 3.6. FontTools will require
Python 3.7 or above from the next release (#2350)
4.25.2 (released 2021-07-26)
[COLRv1] Various changes to sync with the latest CORLv1 draft spec. In particular:
define COLR.VarIndexMap, remove/inline ColorIndex struct, add VarIndexBase to PaintVar* tables (#2372);
add reduced-precicion specialized transform Paints;
define Angle as fraction of half circle encoded as F2Dot14;
use FWORD (int16) for all Paint center coordinates;
change PaintTransform to have an offset to Affine2x3;
[ttLib] when importing XML, only set sfntVersion if the font has no reader and is empty (#2376)
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[woff] from 4.23.0 to 4.27.0.
Release notes
Sourced from fonttools[woff]'s releases.
... (truncated)
Changelog
Sourced from fonttools[woff]'s changelog.
... (truncated)
Commits
eab1d6f
Release 4.27.0f68bf0b
Update changelog [skip ci]a3f988f
Merge pull request #2398 from fonttools/vidd867397
Remove residual allowVID stuff3eef446
[ttFont] Address review commentsca06c95
[ttFont] Assume GlyphOrder is never modified after settingd5de11d
[ttFont] Make setGlyphOrder() clear reverseGlyphOrderMape5bf2a7
[ttFont] Apply review comments7a22c0f
[ttFont] Add getGlyphIDMany(); use in otLayout3ec7699
[ttFont] Add getGlyphNameMany()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)