Repository navigation
chore(deps): update dependency fonttools to v4.67.0 - #72
Open
renovate[bot] wants to merge 1 commit into
Open
renovate[bot] wants to merge 1 commit into
renovate[bot] wants to merge 1 commit into
Conversation
Pull Request Test Coverage Report for Build 21628903661Details
💛 - Coveralls |
renovate
Bot
force-pushed
the
renovate/fonttools-4.x
branch
from
December 16, 2025 09:03
1ad0855 to
a4844d9
Compare
renovate
Bot
force-pushed
the
renovate/fonttools-4.x
branch
from
February 3, 2026 11:44
a4844d9 to
0c92477
Compare
renovate
Bot
force-pushed
the
renovate/fonttools-4.x
branch
2 times, most recently
from
March 13, 2026 23:54
eecfe17 to
15a3ff8
Compare
renovate
Bot
force-pushed
the
renovate/fonttools-4.x
branch
from
May 16, 2026 06:36
15a3ff8 to
239c8df
Compare
renovate
Bot
force-pushed
the
renovate/fonttools-4.x
branch
from
September 4, 2026 19:57
239c8df to
ebfe518
Compare
renovate
Bot
force-pushed
the
renovate/fonttools-4.x
branch
from
September 12, 2026 07:54
ebfe518 to
4e1f356
Compare
renovate
Bot
force-pushed
the
renovate/fonttools-4.x
branch
from
September 19, 2026 23:42
4e1f356 to
ce0af92
Compare
renovate
Bot
force-pushed
the
renovate/fonttools-4.x
branch
from
September 27, 2026 04:13
ce0af92 to
29f87d9
Compare
renovate
Bot
force-pushed
the
renovate/fonttools-4.x
branch
from
October 3, 2026 11:39
29f87d9 to
0a85381
Compare
renovate
Bot
force-pushed
the
renovate/fonttools-4.x
branch
from
October 15, 2026 02:34
0a85381 to
1d7f43d
Compare
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
==4.61.0→==4.67.0Release Notes
fonttools/fonttools (fonttools)
v4.67.0Compare Source
allow_decreasingargument tomodels.normalizeValue(#3970, #4217, #4243).<axis-subset>are taken from the parent axis, as the spec says (#4205).DesignSpaceDocument.normalize()for mapped axes: axis bounds and rule conditions are now normalized from their original values (#4218).splitInterpolableandsplitVariableFontsnow warn when a source or instance is dropped because it lies outside the document's own axes, instead of silently discarding it (#4244).VORG, and use OpenType rounding for instanced advances and vertical origins (#4221).Devicecorrections in GDEF, BASE, GPOS and JSTF instead of asserting on them (#4290).VariationIndexdevices when instancing, subsetting the GDEF store or optimizing it (#4288).ValueError: Missing required table fvarfromvarLib.mutatorand the instancer CLI on a static font, instead of a bareKeyError(#3751, #4300).rvrn, also shift lookup indices inside existing FeatureVariations (#4233). Handle nullConditionSetandFeatureTableSubstitutionoffsets when building, subsetting and instancing (#4234, #4235). KeepFeatureTableSubstitutionrecords sorted after merging new ones into an existing record (#4248).size,ssXX,cvXX) in FeatureVariations alternate feature tables, which failed to compile and round-trip (#3623, #4278).SinglePosandPairPosarrays during recursive decompilation, soreorderGlyphs()on a lazy font no longer corrupts or asserts on them (#4231, #4232).SparseVarRegionList.RegionCountis uint32, sparse axes use Offset32 andMultiVarDataitems are stored in an INDEX. VARC fonts built with earlier fontTools versions must be rebuilt (#4219).conditionIndex(#4237), set the implicitscaleYwhen importing XML (#4238), report the font's current coordinates for components that reset unspecified axes (#4239), and keep inherited coordinates when drawing CFF2 VARC components (#4236).buildMultiVarDataaccepts flattened per-region vector tuples (#4245).offSizeon read, raisingTTLibErrorinstead of allocating huge lazy lists (#4220).OPTIMIZE_FONT_SPEEDis set (#4241).VORGorigins (#4222); fix VARC scaling for static fonts and condition variations (#4223); don't mutate the shared default CFFFontMatrix(#4251, #4252)..notdef(#4215). Formats 2 and 4 now reject glyph IDs above 65535 instead of wrapping them (#4226). Split format 14 default UVS ranges longer than 256 codepoints (#4229). Empty format 12 and 13 subtables round-trip (#4246).TTGlyphPointPenacross contour starts (#4224).Glyph.drawPoints()now raisesNotImplementedErrorfor an all-off-curve cubic contour, which the point pen protocol cannot express (#3191, #4225).RoundingPenpasses the all-off-curveNonesentinel through (#4311, #4312).Vendorwith spaces (#4259).FeatureLibErrorwith a location, instead of a bare Python error, for: a BASE script list without a matching tag list (#4263), aUnicodeRangebit outside 0-127 (#4266), a name string that cannot be decoded (#4267), a STAT axislocationwith no or too many values (#4268), and a non-ASCII OS/2Vendor(#4269).eswas mapped to Mac Estonian (#3733, #4256).getDebugNameprefers the Windows English name over the Mac one (#3969, #4273).numGlyphsset to 0 (#3060, #4274).numRecsandnumRatioswhen compiling (#4293).Silftable that was decompiled from binary (#4294).minorVersionwhen copying flavor data (#4249, #4250)..widthis correct before drawing (#3964, #4260).--jsonoutput with SciPy (#3870, #4276).ValueErrorinstead ofIndexErroron a truncated path command (#4254).Tag.__ne__returnsNotImplementedfor unsupported types (#4305, #4306).hashdictrejects in-place union (|=) (#4313, #4314).WriteZipFS.close()can be called more than once (#4309, #4310).v4.66.1Compare Source
makeNames=True(asvarLib.build_manydoes), family and style names set explicitly on an instance now take precedence over the ones computed from the STAT labels, in all languages, and a PostScript name is no longer made up from the labels for an instance that has its own style name (#3131, #4206, #4208).idRangeOffsetpoints outsideglyphIndexArraynow raisesTTLibError. A negative index used to silently map the code point to the wrong glyph, and one past the end raised a bareAssertionError(#4209).struct.error(#4210).v4.66.0Compare Source
fontTools.misc.enumToolsnow only re-exportsenum.StrEnumand is deprecated. Explicitly test and declare support for Python 3.15 (#4183, #4196).unicodedata218.0.0 when it is used (#4192, #4197).languagestatements listing multiple language tags, e.g.language AZE CRT;, as Glyphs does and as proposed for the spec (adobe-type-tools/feature_file_workshops#8): the following rules and lookup references are registered under every listed language.dfltcannot be combined with other tags.LanguageStatement.languageis still the first tag; all of them are in the newlanguagesattribute (#4201, #4202).script/languagepair is repeated within a feature block: the repeated statement replaced the language system's lookups with a fresh copy of the default ones (#4189).FeatureLibErrorinstead ofUnboundLocalErrorwhen aSTATtable block lacksElidedFallbackNameorElidedFallbackNameID(#3834, #4179).VarStorewhen saving. Previously the bytes compiled by an earlier save were reused, so a CFF2 variable font that was saved and then modified in place, e.g. by the instancer, was written with a staleVarStorenext to its updated charstrings (#4199).VARCfonts that omitfvarwhile retaininggvaror CFF2 variation data for component-internal axes: hidden axes are addressed by index andgvarcan compile, decompile and round-trip through TTX withoutfvar, reading the axis count from a newaxisCountelement (#4187, #4188).VARCcomponents whose condition is negated (format 5), which raisedAttributeError(#4191).VARCaxis references left stale when removing an unrelated axis, reject pinning or restricting axes referenced byVARCcomponents, and stop culling avar2 ranges for component-internal variations, which can reach outside the font-level ranges (#4190, #4193).splitQuadraticAtTandsplitCubicAtTCas well, likesplitCubicAtTsince 4.55.4 (#3742, #4194).ZeroDivisionErrorinlineLineIntersectionsfor collinear vertical lines; they are now treated as parallel like horizontal ones (#3515, #4181).pyftsubsetnow preserves the input font's flavor (WOFF, WOFF2) when--flavoris omitted, instead of writing uncompressed sfnt data under the same extension; pass--flavor=noneto force uncompressed output (#3630, #4182).unitsPerEmvalues by name, with the input values, instead of a bare assertion (#2844, #4184).DesignSpaceDocument.default, which holds aSourceDescriptor, not a source name (#2994, #4186).TTLibErrorinstead ofAssertionErrorfor inconsistent WOFF table, metadata and private-data lengths, so the checks also hold underpython -O(#4178).resolve_entities="internal"still fetched external parameter entities before lxml 6.1.3, so a crafted DTD could read local files into parsed XML content (#4195).varLib.avar.unbuildemits its designspace snippet, so a crafted font cannot inject markup (#4203).v4.65.0Compare Source
__iter__,itemsandvaluesmethods to theglyftable to make it more dict-like (#4156).<variable-font name="..."/>when deriving the output filename in thevarLibcommand line, so a designspace cannot write outside the output directory (#4168).scriptstatements. Rules following ascriptstatement that names the first declared language system no longer end up under theDFLTscript, and ascriptstatement naming the already-current script still narrows the language systems and terminates the current lookup while leaving thelookupflagalone, matching makeotf (#1824, #2522, #4169).OTLOffsetOverflowErrorinstead ofAttributeErrorso another contextual format can be tried (regression from #3439). When all formats overflow, split the ruleset in halves until it fits (#4171).v4.64.0Compare Source
IDEF[ ], like function definitions (#4093).paltby default (#4094).__setitem__membership (#4103).fixLookupOverFlows()reporting success when it had not promoted any lookup to Extension, masking unresolvable overflows.TTCollection.save(#4111).bhed,bdat,bloc, variants ofhead,EBDT,EBLCused in legacy Apple bitmap-only fonts (#4115).OS/2fsSelection/macStyle consistency againstbhedas well ashead(#4118, #4119).BASEtable (#4137).vsindexhandling ininstantiateCFF2(#4129, #4132).TTLibErrorinstead ofAssertionErrororstruct.errorwhen reading a font truncated within the table directory or a table entry (#4147, #4149).]]>terminator inside CDATA sections, so an SVG document containing it can no longer smuggle markup past a TTX round trip (#4139).(100 wght=900:120)means(wght=400:100 wght=900:120)when the wght default is 400 (#4024).TTLibErrorfor a truncated or out-of-bounds cmap subtable header (#4151).<lib>element as an empty lib instead of raisingIndexError(#4142, #4144).splitSinglePosso GPOS lookup type 1 offset overflows can be recovered by splitting the subtable (#4091, #4108).TTLibErrorinstead ofRecursionErrorwhenrecalcBounds()hits a composite-component reference cycle (#3899, #4116).Z Z) (#4122).DefaultTabletype annotations (#4126).EBSC(Embedded Bitmap Scaling) table (#4113).TypeErrorin the Cython-compiled build whenQu2CuPenpasses tuple splines (#4160)...components incontents.plist, and a crafted.ufozcould create files outside its temporary mirror (#4124).ttx -z extfileexport, preventing arbitrary file writes from untrusted fonts (#4128).XMLParserwhen lxml is used, preventing XXE file disclosure on lxml < 5.0 (#4145).VARCauxiliary data: collect and remap variation indices referenced by condition tables when subsetting theMultiVarStore, and drop theAxisIndicesList,ConditionList, andMultiVarStorewhen they end up empty (#4162).v4.63.0Compare Source
bgcltable (#4065).IFTandIFTXtables (Incremental Font Transfer, PatchMapFormat2) (#4070, #4072).FieldSpecdataclass for OpenType table schema definitions, replacing raw tuples inotData.py(#4076).nametable strings as comments next to label IDs in TTX output, matching the convention used byfvar,STAT,trak(#4089).split_cubic_into_threethat could cause ±1 off-curve coordinate shifts (#3928, #4083).map_backwardfor many-to-one (flat-segment) axis maps that silently dropped entries via dict comprehension (googlefonts/ufo2ft#978, #4085).setUnicodeRangesto accept reserved bits 123-127, restoring round-trip withgetUnicodeRangesand fixingrecalcUnicodeRangescrash in the subsetter (#4087, #4088).v4.62.1Compare Source
v4.62.0Compare Source
fonttools diffcommand for comparing font files, imported from thefdiffproject and heavily reworked (#1190, #4007, #4009, #4011, #4013, #4019).VariableScalarinterpolation bug with non-linear avar mappings. Also decoupleVariableScalarfrom compiled fonts, allowing it to work with designspace data before compilation (#3938, #4054).VariableScalaraxis ordering and iterative delta rounding to match fontc behavior (#4053).ConditionsetStatementto fix glyphsLib round-tripping (fontra/fontra-glyphs#130, #4057).0xFFFFinstead of0for missing nameIDs incvfeature params (#4010, #4012).CmapSubtable.__lt__()TypeErroron Python 3 when subtables share the same encoding record, and add compile-time validation for unique encoding records (#4035, #4055).glyphObject=None(#4030, #4031).SegmentToPointPenedge case: only remove a duplicate final point onclosePath()if it is an on-curve point (#4014, #4015).eval()withsafeEval()inparseBlendList()to prevent arbitrary code execution from crafted TTX files (#4039, #4040).META,SING,GMAP,GPKG) (#4044).getSubModelnot forwardingextrapolate/axisRanges; check location uniqueness after stripping zeros (#4047).--variable-fontsfilter inbuild_many; remove dead code and fix comments (#4048).unbuildreturn types consistent; validatemapCLI coordinates (#4051).ColorLibErrorwhen base glyphs are missing from glyphMap, instead of a confusingKeyError(#4041).fvartable dependency (#4017).nametable dependency (#4018).saveXMLregression with empty table lists, clarify docstring (#4025, #4026, #4056).libmfor Cython extensions using math functions (#4028, #4029).DSIG,DefaultTable,ttProgram(#4033).v4.61.1Compare Source
avar2full instancing (#4002).setupOS2()default params globally polluted (#3996, #3997).Configuration
📅 Schedule: (UTC)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.