robotools / fontMath

A collection of objects that implement fast font, glyph, etc. math.
MIT License
42 stars 17 forks source link

Scheduled weekly dependency update for week 48 #303

Closed pyup-bot closed 1 year ago

pyup-bot commented 1 year ago

Update fonttools from 4.33.3 to 4.38.0.

Changelog ### 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 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 ``` ---------------------------- - [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 ``` ---------------------------- - 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/afdko1560). ``` ### 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 (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 would become unreachable while shapiong because of premature subtable splitting (2772, 2776). - [feaLib] Speed up ``VarScalar`` by caching models for recurring master locations (2798). - [feaLib] Optionally cythonize ``feaLib.lexer``, speeds up parsing FEA a bit (2799). - [designspaceLib] Avoid crash when handling unbounded rule conditions (2797). - [post] Don't crash if ``post`` legacy format 1 is malformed/improperly used (2786) - [gvar] Don't be "lazy" (load all glyph variations up front) when TTFont.lazy=False (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 (2789). - [TTVarGlyphSet] Support drawing glyph instances from CFF2 variable glyph set (2784). - [fontBuilder] Do not error when building cmap if there are zero code points (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 (2767). - [Snippets] Added ``statShape.py`` script to draw statistical shape of a glyph as an ellips (requires pycairo) (baecd88). - [TTVarGlyphSet] implement drawPoints natively, avoiding going through SegmentToPointPen (2778). - [TTVarGlyphSet] Fixed bug whereby drawing a composite glyph multiple times, its components would shif; needed an extra copy (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 (2679, 2773). - [pens] Added ``cairoPen`` (2678). - [gvar] Read ``gvar`` more lazily by not parsing all of the ``glyf`` table (2771). - [ttGlyphSet] Make ``drawPoints(pointPen)`` method work for CFF fonts as well via adapter pen (2770). ``` ### 4.37.0 ``` ---------------------------- - [varLib.models] Reverted PR 2717 which added support for "narrow tents" in v4.36.0, as it introduced a regression (2764, 2765). It will be restored in upcoming release once we found a solution to the bug. - [cff.specializer] Fixed issue in charstring generalizer with the ``blend`` operator (2750, 1975). - [varLib.models] Added support for extrapolation (2757). - [ttGlyphSet] Ensure the newly added ``_TTVarGlyphSet`` inherits from ``_TTGlyphSet`` to keep backward compatibility with existing API (2762). - [kern] Allow compiling legacy kern tables with more than 64k entries (d21cfdede). - [visitor] Added new visitor API to traverse tree of objects and dispatch based on the attribute type: cf. ``fontTools.misc.visitor`` and ``fontTools.ttLib.ttVisitor``. Added ``fontTools.ttLib.scaleUpem`` module that uses the latter to change a font's units-per-em and scale all the related fields accordingly (2718, 2755). ``` ### 4.36.0 ``` ---------------------------- - [varLib.models] Use a simpler model that generates narrower "tents" (regions, master supports) whenever possible: specifically when any two axes that actively "cooperate" (have masters at non-zero positions for both axes) have a complete set of intermediates. The simpler algorithm produces fewer overlapping regions and behaves better with respect to rounding at the peak positions than the generic solver, always matching intermediate masters exactly, instead of maximally 0.5 units off. This may be useful when 100% metrics compatibility is desired (2218, 2717). - [feaLib] Remove warning when about ``GDEF`` not being built when explicitly not requested; don't build one unconditonally even when not requested (2744, also works around 2747). - [ttFont] ``TTFont.getGlyphSet`` method now supports selecting a location that represents an instance of a variable font (supports both user-scale and normalized axes coordinates via the ``normalized=False`` parameter). Currently this only works for TrueType-flavored variable fonts (2738). ``` ### 4.35.0 ``` ---------------------------- - [otData/otConverters] Added support for 'biased' PaintSweepGradient start/end angles to match latest COLRv1 spec (2743). - [varLib.instancer] Fixed bug in ``_instantiateFeatureVariations`` when at the same time pinning one axis and restricting the range of a subsequent axis; the wrong axis tag was being used in the latter step (as the records' axisIdx was updated in the preceding step but looked up using the old axes order in the following step) (2733, 2734). - [mtiLib] Pad script tags with space when less than 4 char long (1727). - [merge] Use ``'.'`` instead of ``''`` in duplicate glyph names (2742). - [gvar] Added support for lazily loading glyph variations (2741). - [varLib] In ``build_many``, we forgot to pass on ``colr_layer_reuse`` parameter to the ``build`` method (2730). - [svgPathPen] Add a main that prints SVG for input text (6df779fd). - [cffLib.width] Fixed off-by-one in optimized values; previous code didn't match the code block above it (2963fa50). - [varLib.interpolatable] Support reading .designspace and .glyphs files (via optional ``glyphsLib``). - Compile some modules with Cython when available and building/installing fonttools from source: ``varLib.iup`` (35% faster), ``pens.momentsPen`` (makes ``varLib.interpolatable`` 3x faster). - [feaLib] Allow features to be built for VF without also building a GDEF table (e.g. only build GSUB); warn when GDEF would be needed but isn't requested (2705, 2694). - [otBase] Fixed ``AttributeError`` when uharfbuzz < 0.23.0 and 'repack' method is missing (32aa8eaf). Use new ``uharfbuzz.repack_with_tag`` when available (since uharfbuzz>=0.30.0), enables table-specific optimizations to be performed during repacking (2724). - [statisticsPen] By default report all glyphs (4139d891). Avoid division-by-zero (52b28f90). - [feaLib] Added missing required argument to FeatureLibError exception (2693) - [varLib.merge] Fixed error during error reporting (2689). Fixed undefined ``NotANone`` variable (2714). ``` ### 4.34.4 ``` ---------------------------- - Fixed typo in varLib/merger.py that causes NameError merging COLR glyphs containing more than 255 layers (2685). ``` ### 4.34.3 ``` ---------------------------- - [designspaceLib] Don't make up bad PS names when no STAT data (2684) ``` ### 4.34.2 ``` ---------------------------- - [varStore/subset] fixed KeyError exception to do with NO_VARIATION_INDEX while subsetting varidxes in GPOS/GDEF (a08140d). ``` ### 4.34.1 ``` ---------------------------- - [instancer] When optimizing HVAR/VVAR VarStore, use_NO_VARIATION_INDEX=False to avoid including NO_VARIATION_INDEX in AdvWidthMap, RsbMap, LsbMap mappings, which would push the VarIdx width to maximum (4bytes), which is not desirable. This also fixes a hard crash when attempting to subset a varfont after it had been partially instanced with use_NO_VARIATION_INDEX=True. ``` ### 4.34.0 ``` ---------------------------- - [instancer] Set RIBBI bits in head and OS/2 table when cutting instances and the subfamily nameID=2 contains strings like 'Italic' or 'Bold' (2673). - [otTraverse] Addded module containing methods for traversing trees of otData tables (2660). - [otTables] Made DeltaSetIndexMap TTX dump less verbose by omitting no-op entries (2660). - [colorLib.builder] Added option to disable PaintColrLayers's reuse of layers from LayerList (2660). - [varLib] Added support for merging multiple master COLRv1 tables into a variable COLR table (2660, 2328). Base color glyphs of same name in different masters must have identical paint graph structure (incl. number of layers, palette indices, number of color line stops, corresponding paint formats at each level of the graph), but can differ in the variable fields (e.g. PaintSolid.Alpha). PaintVar* tables are produced when this happens and a VarStore/DeltaSetIndexMap is added to the variable COLR table. It is possible for non-default masters to be 'sparse', i.e. omit some of the color glyphs present in the default master. - [feaLib] Let the Parser set nameIDs 1 through 6 that were previously reserved (2675). - [varLib.varStore] Support NO_VARIATION_INDEX in optimizer and instancer. - [feaLib] Show all missing glyphs at once at end of parsing (2665). - [varLib.iup] Rewrite force-set conditions and limit DP loopback length (2651). For Noto Sans, IUP time drops from 23s down to 9s, with only a slight size increase in the final font. This basically turns the algorithm from O(n^3) into O(n). - [featureVars] Report about missing glyphs in substitution rules (2654). - [mutator/instancer] Added CLI flag to --no-recalc-timestamp (2649). - [SVG] Allow individual SVG documents in SVG OT table to be compressed on uncompressed, and remember that when roundtripping to/from ttx. The SVG.docList is now a list of SVGDocument namedtuple-like dataclass containing an extra ``compressed`` field, and no longer a bare 3-tuple (2645). - [designspaceLib] Check for descriptor types with hasattr() to allow custom classes that don't inherit the default descriptors (2634). - [subset] Enable sharing across subtables of extension lookups for harfbuzz packing (2626). Updated how table packing falls back to fontTools from harfbuzz (2668). - [subset] Updated default feature tags following current Harfbuzz (2637). - [svgLib] Fixed regex for real number to support e.g. 1e-4 in addition to 1.0e-4. Support parsing negative rx, ry on arc commands (2596, 2611). - [subset] Fixed subsetting SinglePosFormat2 when ValueFormat=0 (2603). ```
Links - PyPI: https://pypi.org/project/fonttools - Changelog: https://pyup.io/changelogs/fonttools/ - Repo: http://github.com/fonttools/fonttools
pyup-bot commented 1 year ago

Closing this in favor of #304