1*e1fe3e4aSElliott Hughes4.49.0 (released 2024-02-15) 2*e1fe3e4aSElliott Hughes---------------------------- 3*e1fe3e4aSElliott Hughes 4*e1fe3e4aSElliott Hughes- [otlLib] Add API for building ``MATH`` table (#3446) 5*e1fe3e4aSElliott Hughes 6*e1fe3e4aSElliott Hughes4.48.1 (released 2024-02-06) 7*e1fe3e4aSElliott Hughes---------------------------- 8*e1fe3e4aSElliott Hughes 9*e1fe3e4aSElliott Hughes- Fixed uploading wheels to PyPI, no code changes since v4.48.0. 10*e1fe3e4aSElliott Hughes 11*e1fe3e4aSElliott Hughes4.48.0 (released 2024-02-06) 12*e1fe3e4aSElliott Hughes---------------------------- 13*e1fe3e4aSElliott Hughes 14*e1fe3e4aSElliott Hughes- [varLib] Do not log when there are no OTL tables to be merged. 15*e1fe3e4aSElliott Hughes- [setup.py] Do not restrict lxml<5 any more, tests pass just fine with lxml>=5. 16*e1fe3e4aSElliott Hughes- [feaLib] Remove glyph and class names length restrictions in FEA (#3424). 17*e1fe3e4aSElliott Hughes- [roundingPens] Added ``transformRoundFunc`` parameter to the rounding pens to allow 18*e1fe3e4aSElliott Hughes for custom rounding of the components' transforms (#3426). 19*e1fe3e4aSElliott Hughes- [feaLib] Keep declaration order of ligature components within a ligature set, instead 20*e1fe3e4aSElliott Hughes of sorting by glyph name (#3429). 21*e1fe3e4aSElliott Hughes- [feaLib] Fixed ordering of alternates in ``aalt`` lookups, following the declaration 22*e1fe3e4aSElliott Hughes order of feature references within the ``aalt`` feature block (#3430). 23*e1fe3e4aSElliott Hughes- [varLib.instancer] Fixed a bug in the instancer's IUP optimization (#3432). 24*e1fe3e4aSElliott Hughes- [sbix] Support sbix glyphs with new graphicType "flip" (#3433). 25*e1fe3e4aSElliott Hughes- [svgPathPen] Added ``--glyphs`` option to dump the SVG paths for the named glyphs 26*e1fe3e4aSElliott Hughes in the font (0572f78). 27*e1fe3e4aSElliott Hughes- [designspaceLib] Added "description" attribute to ``<mappings>`` and ``<mapping>`` 28*e1fe3e4aSElliott Hughes elements, and allow multiple ``<mappings>`` elements to group ``<mapping>`` elements 29*e1fe3e4aSElliott Hughes that are logically related (#3435, #3437). 30*e1fe3e4aSElliott Hughes- [otlLib] Correctly choose the most compact GSUB contextual lookup format (#3439). 31*e1fe3e4aSElliott Hughes 32*e1fe3e4aSElliott Hughes4.47.2 (released 2024-01-11) 33*e1fe3e4aSElliott Hughes---------------------------- 34*e1fe3e4aSElliott Hughes 35*e1fe3e4aSElliott HughesMinor release to fix uploading wheels to PyPI. 36*e1fe3e4aSElliott Hughes 37*e1fe3e4aSElliott Hughes4.47.1 (released 2024-01-11) 38*e1fe3e4aSElliott Hughes---------------------------- 39*e1fe3e4aSElliott Hughes 40*e1fe3e4aSElliott Hughes- [merge] Improve help message and add standard command line options (#3408) 41*e1fe3e4aSElliott Hughes- [otlLib] Pass ``ttFont`` to ``name.addName`` in ``buildStatTable`` (#3406) 42*e1fe3e4aSElliott Hughes- [featureVars] Re-use ``FeatureVariationRecord``'s when possible (#3413) 43*e1fe3e4aSElliott Hughes 44*e1fe3e4aSElliott Hughes4.47.0 (released 2023-12-18) 45*e1fe3e4aSElliott Hughes---------------------------- 46*e1fe3e4aSElliott Hughes 47*e1fe3e4aSElliott Hughes- [varLib.models] New API for VariationModel: ``getMasterScalars`` and 48*e1fe3e4aSElliott Hughes ``interpolateFromValuesAndScalars``. 49*e1fe3e4aSElliott Hughes- [varLib.interpolatable] Various bugfixes and rendering improvements. In particular, 50*e1fe3e4aSElliott Hughes add a Summary page in the front, and an Index and Table-of-Contents in the back. 51*e1fe3e4aSElliott Hughes Change the page size to Letter. 52*e1fe3e4aSElliott Hughes- [Docs/designspaceLib] Defined a new ``public.fontInfo`` lib key, not used anywhere yet (#3358). 53*e1fe3e4aSElliott Hughes 54*e1fe3e4aSElliott Hughes4.46.0 (released 2023-12-02) 55*e1fe3e4aSElliott Hughes---------------------------- 56*e1fe3e4aSElliott Hughes 57*e1fe3e4aSElliott Hughes- [featureVars] Allow to register the same set of substitution rules to multiple features. 58*e1fe3e4aSElliott Hughes The ``addFeatureVariations`` function can now take a list of featureTags; similarly, the 59*e1fe3e4aSElliott Hughes lib key 'com.github.fonttools.varLib.featureVarsFeatureTag' can now take a 60*e1fe3e4aSElliott Hughes comma-separateed string of feature tags (e.g. "salt,ss01") instead of a single tag (#3360). 61*e1fe3e4aSElliott Hughes- [featureVars] Don't overwrite GSUB FeatureVariations, but append new records to it 62*e1fe3e4aSElliott Hughes for features which are not already there. But raise ``VarLibError`` if the feature tag 63*e1fe3e4aSElliott Hughes already has feature variations associated with it (#3363). 64*e1fe3e4aSElliott Hughes- [varLib] Added ``addGSUBFeatureVariations`` function to add GSUB Feature Variations 65*e1fe3e4aSElliott Hughes to an existing variable font from rules defined in a DesignSpace document (#3362). 66*e1fe3e4aSElliott Hughes- [varLib.interpolatable] Various bugfixes and rendering improvements. In particular, 67*e1fe3e4aSElliott Hughes a new test for "underweight" glyphs. The new test reports quite a few false-positives 68*e1fe3e4aSElliott Hughes though. Please send feedback. 69*e1fe3e4aSElliott Hughes 70*e1fe3e4aSElliott Hughes4.45.1 (released 2023-11-23) 71*e1fe3e4aSElliott Hughes---------------------------- 72*e1fe3e4aSElliott Hughes 73*e1fe3e4aSElliott Hughes- [varLib.interpolatable] Various bugfixes and improvements, better reporting, reduced 74*e1fe3e4aSElliott Hughes false positives. 75*e1fe3e4aSElliott Hughes- [ttGlyphSet] Added option to not recalculate glyf bounds (#3348). 76*e1fe3e4aSElliott Hughes 77*e1fe3e4aSElliott Hughes4.45.0 (released 2023-11-20) 78*e1fe3e4aSElliott Hughes---------------------------- 79*e1fe3e4aSElliott Hughes 80*e1fe3e4aSElliott Hughes- [varLib.interpolatable] Vastly improved algorithms. Also available now is ``--pdf`` 81*e1fe3e4aSElliott Hughes and ``--html`` options to generate a PDF or HTML report of the interpolation issues. 82*e1fe3e4aSElliott Hughes The PDF/HTML report showcases the problematic masters, the interpolated broken 83*e1fe3e4aSElliott Hughes glyph, as well as the proposed fixed version. 84*e1fe3e4aSElliott Hughes 85*e1fe3e4aSElliott Hughes4.44.3 (released 2023-11-15) 86*e1fe3e4aSElliott Hughes---------------------------- 87*e1fe3e4aSElliott Hughes 88*e1fe3e4aSElliott Hughes- [subset] Only prune codepage ranges for OS/2.version >= 1, ignore otherwise (#3334). 89*e1fe3e4aSElliott Hughes- [instancer] Ensure hhea vertical metrics stay in sync with OS/2 ones after instancing 90*e1fe3e4aSElliott Hughes MVAR table containing 'hasc', 'hdsc' or 'hlgp' tags (#3297). 91*e1fe3e4aSElliott Hughes 92*e1fe3e4aSElliott Hughes4.44.2 (released 2023-11-14) 93*e1fe3e4aSElliott Hughes---------------------------- 94*e1fe3e4aSElliott Hughes 95*e1fe3e4aSElliott Hughes- [glyf] Have ``Glyph.recalcBounds`` skip empty components (base glyph with no contours) 96*e1fe3e4aSElliott Hughes when computing the bounding box of composite glyphs. This simply restores the existing 97*e1fe3e4aSElliott Hughes behavior before some changes were introduced in fonttools 4.44.0 (#3333). 98*e1fe3e4aSElliott Hughes 99*e1fe3e4aSElliott Hughes4.44.1 (released 2023-11-14) 100*e1fe3e4aSElliott Hughes---------------------------- 101*e1fe3e4aSElliott Hughes 102*e1fe3e4aSElliott Hughes- [feaLib] Ensure variable mark anchors are deep-copied while building since they 103*e1fe3e4aSElliott Hughes get modified in-place and later reused (#3330). 104*e1fe3e4aSElliott Hughes- [OS/2|subset] Added method to ``recalcCodePageRanges`` to OS/2 table class; added 105*e1fe3e4aSElliott Hughes ``--prune-codepage-ranges`` to `fonttools subset` command (#3328, #2607). 106*e1fe3e4aSElliott Hughes 107*e1fe3e4aSElliott Hughes4.44.0 (released 2023-11-03) 108*e1fe3e4aSElliott Hughes---------------------------- 109*e1fe3e4aSElliott Hughes 110*e1fe3e4aSElliott Hughes- [instancer] Recalc OS/2 AvgCharWidth after instancing if default changes (#3317). 111*e1fe3e4aSElliott Hughes- [otlLib] Make ClassDefBuilder class order match varLib.merger's, i.e. large 112*e1fe3e4aSElliott Hughes classes first, then glyph lexicographic order (#3321, #3324). 113*e1fe3e4aSElliott Hughes- [instancer] Allow not specifying any of min:default:max values and let be filled 114*e1fe3e4aSElliott Hughes up with fvar's values (#3322, #3323). 115*e1fe3e4aSElliott Hughes- [instancer] When running --update-name-table ignore axes that have no STAT axis 116*e1fe3e4aSElliott Hughes values (#3318, #3319). 117*e1fe3e4aSElliott Hughes- [Debg] When dumping to ttx, write the embedded JSON as multi-line string with 118*e1fe3e4aSElliott Hughes indentation (92cbfee0d). 119*e1fe3e4aSElliott Hughes- [varStore] Handle > 65535 items per encoding by splitting VarData subtable (#3310). 120*e1fe3e4aSElliott Hughes- [subset] Handle null-offsets in MarkLigPos subtables. 121*e1fe3e4aSElliott Hughes- [subset] Keep East Asian spacing fatures vhal, halt, chws, vchw by default (#3305). 122*e1fe3e4aSElliott Hughes- [instancer.solver] Fixed case where axisDef < lower and upper < axisMax (#3304). 123*e1fe3e4aSElliott Hughes- [glyf] Speed up compilation, mostly around ``recalcBounds`` (#3301). 124*e1fe3e4aSElliott Hughes- [varLib.interpolatable] Speed it up when working on variable fonts, plus various 125*e1fe3e4aSElliott Hughes micro-optimizations (#3300). 126*e1fe3e4aSElliott Hughes- Require unicodedata2 >= 15.1.0 when installed with 'unicode' extra, contains UCD 15.1. 127*e1fe3e4aSElliott Hughes 128*e1fe3e4aSElliott Hughes4.43.1 (released 2023-10-06) 129*e1fe3e4aSElliott Hughes---------------------------- 130*e1fe3e4aSElliott Hughes 131*e1fe3e4aSElliott Hughes- [EBDT] Fixed TypeError exception in `_reverseBytes` method triggered when dumping 132*e1fe3e4aSElliott Hughes some bitmap fonts with `ttx -z bitwise` option (#3162). 133*e1fe3e4aSElliott Hughes- [v/hhea] Fixed UnboundLocalError exception in ``recalc`` method when no vmtx or hmtx 134*e1fe3e4aSElliott Hughes tables are present (#3290). 135*e1fe3e4aSElliott Hughes- [bezierTools] Fixed incorrectly typed cython local variable leading to TypeError when 136*e1fe3e4aSElliott Hughes calling ``calcQuadraticArcLength`` (#3288). 137*e1fe3e4aSElliott Hughes- [feaLib/otlLib] Better error message when building Coverage table with missing glyph (#3286). 138*e1fe3e4aSElliott Hughes 139*e1fe3e4aSElliott Hughes4.43.0 (released 2023-09-29) 140*e1fe3e4aSElliott Hughes---------------------------- 141*e1fe3e4aSElliott Hughes 142*e1fe3e4aSElliott Hughes- [subset] Set up lxml ``XMLParser(resolve_entities=False)`` when parsing OT-SVG documents 143*e1fe3e4aSElliott Hughes to prevent XML External Entity (XXE) attacks (9f61271dc): 144*e1fe3e4aSElliott Hughes https://codeql.github.com/codeql-query-help/python/py-xxe/ 145*e1fe3e4aSElliott Hughes- [varLib.iup] Added workaround for a Cython bug in ``iup_delta_optimize`` that was 146*e1fe3e4aSElliott Hughes leading to IUP tolerance being incorrectly initialised, resulting in sub-optimal deltas 147*e1fe3e4aSElliott Hughes (60126435d, cython/cython#5732). 148*e1fe3e4aSElliott Hughes- [varLib] Added new command-line entry point ``fonttools varLib.avar`` to add an 149*e1fe3e4aSElliott Hughes ``avar`` table to an existing VF from axes mappings in a .designspace file (0a3360e52). 150*e1fe3e4aSElliott Hughes- [instancer] Fixed bug whereby no longer used variation regions were not correctly pruned 151*e1fe3e4aSElliott Hughes after VarData optimization (#3268). 152*e1fe3e4aSElliott Hughes- Added support for Python 3.12 (#3283). 153*e1fe3e4aSElliott Hughes 154*e1fe3e4aSElliott Hughes4.42.1 (released 2023-08-20) 155*e1fe3e4aSElliott Hughes---------------------------- 156*e1fe3e4aSElliott Hughes 157*e1fe3e4aSElliott Hughes- [t1Lib] Fixed several Type 1 issues (#3238, #3240). 158*e1fe3e4aSElliott Hughes- [otBase/packer] Allow sharing tables reached by different offset sizes (#3241, #3236). 159*e1fe3e4aSElliott Hughes- [varLib/merger] Fix Cursive attachment merging error when all anchors are NULL (#3248, #3247). 160*e1fe3e4aSElliott Hughes- [ttLib] Fixed warning when calling ``addMultilingualName`` and ``ttFont`` parameter was not 161*e1fe3e4aSElliott Hughes passed on to ``findMultilingualName`` (#3253). 162*e1fe3e4aSElliott Hughes 163*e1fe3e4aSElliott Hughes4.42.0 (released 2023-08-02) 164*e1fe3e4aSElliott Hughes---------------------------- 165*e1fe3e4aSElliott Hughes 166*e1fe3e4aSElliott Hughes- [varLib] Use sentinel value 0xFFFF to mark a glyph advance in hmtx/vmtx as non 167*e1fe3e4aSElliott Hughes participating, allowing sparse masters to contain glyphs for variation purposes other 168*e1fe3e4aSElliott Hughes than {H,V}VAR (#3235). 169*e1fe3e4aSElliott Hughes- [varLib/cff] Treat empty glyphs in non-default masters as missing, thus not participating 170*e1fe3e4aSElliott Hughes in CFF2 delta computation, similarly to how varLib already treats them for gvar (#3234). 171*e1fe3e4aSElliott Hughes- Added varLib.avarPlanner script to deduce 'correct' avar v1 axis mappings based on 172*e1fe3e4aSElliott Hughes glyph average weights (#3223). 173*e1fe3e4aSElliott Hughes 174*e1fe3e4aSElliott Hughes4.41.1 (released 2023-07-21) 175*e1fe3e4aSElliott Hughes---------------------------- 176*e1fe3e4aSElliott Hughes 177*e1fe3e4aSElliott Hughes- [subset] Fixed perf regression in v4.41.0 by making ``NameRecordVisitor`` only visit 178*e1fe3e4aSElliott Hughes tables that do contain nameID references (#3213, #3214). 179*e1fe3e4aSElliott Hughes- [varLib.instancer] Support instancing fonts containing null ConditionSet offsets in 180*e1fe3e4aSElliott Hughes FeatureVariationRecords (#3211, #3212). 181*e1fe3e4aSElliott Hughes- [statisticsPen] Report font glyph-average weight/width and font-wide slant. 182*e1fe3e4aSElliott Hughes- [fontBuilder] Fixed head.created date incorrectly set to 0 instead of the current 183*e1fe3e4aSElliott Hughes timestamp, regression introduced in v4.40.0 (#3210). 184*e1fe3e4aSElliott Hughes- [varLib.merger] Support sparse ``CursivePos`` masters (#3209). 185*e1fe3e4aSElliott Hughes 186*e1fe3e4aSElliott Hughes4.41.0 (released 2023-07-12) 187*e1fe3e4aSElliott Hughes---------------------------- 188*e1fe3e4aSElliott Hughes 189*e1fe3e4aSElliott Hughes- [fontBuilder] Fixed bug in setupOS2 with default panose attribute incorrectly being 190*e1fe3e4aSElliott Hughes set to a dict instead of a Panose object (#3201). 191*e1fe3e4aSElliott Hughes- [name] Added method to ``removeUnusedNameRecords`` in the user range (#3185). 192*e1fe3e4aSElliott Hughes- [varLib.instancer] Fixed issue with L4 instancing (moving default) (#3179). 193*e1fe3e4aSElliott Hughes- [cffLib] Use latin1 so we can roundtrip non-ASCII in {Full,Font,Family}Name (#3202). 194*e1fe3e4aSElliott Hughes- [designspaceLib] Mark <source name="..."> as optional in docs (as it is in the code). 195*e1fe3e4aSElliott Hughes- [glyf-1] Fixed drawPoints() bug whereby last cubic segment becomes quadratic (#3189, #3190). 196*e1fe3e4aSElliott Hughes- [fontBuilder] Propagate the 'hidden' flag to the fvar Axis instance (#3184). 197*e1fe3e4aSElliott Hughes- [fontBuilder] Update setupAvar() to also support avar 2, fixing ``_add_avar()`` call 198*e1fe3e4aSElliott Hughes site (#3183). 199*e1fe3e4aSElliott Hughes- Added new ``voltLib.voltToFea`` submodule (originally Tiro Typeworks' "Volto") for 200*e1fe3e4aSElliott Hughes converting VOLT OpenType Layout sources to FEA format (#3164). 201*e1fe3e4aSElliott Hughes 202*e1fe3e4aSElliott Hughes4.40.0 (released 2023-06-12) 203*e1fe3e4aSElliott Hughes---------------------------- 204*e1fe3e4aSElliott Hughes 205*e1fe3e4aSElliott Hughes- Published native binary wheels to PyPI for all the python minor versions and platform 206*e1fe3e4aSElliott Hughes and architectures currently supported that would benefit from this. They will include 207*e1fe3e4aSElliott Hughes precompiled Cython-accelerated modules (e.g. cu2qu) without requiring to compile them 208*e1fe3e4aSElliott Hughes from source. The pure-python wheel and source distribution will continue to be 209*e1fe3e4aSElliott Hughes published as always (pip will automatically chose them when no binary wheel is 210*e1fe3e4aSElliott Hughes available for the given platform, e.g. pypy). Use ``pip install --no-binary=fonttools fonttools`` 211*e1fe3e4aSElliott Hughes to expliclity request pip to install from the pure-python source. 212*e1fe3e4aSElliott Hughes- [designspaceLib|varLib] Add initial support for specifying axis mappings and build 213*e1fe3e4aSElliott Hughes ``avar2`` table from those (#3123). 214*e1fe3e4aSElliott Hughes- [feaLib] Support variable ligature caret position (#3130). 215*e1fe3e4aSElliott Hughes- [varLib|glyf] Added option to --drop-implied-oncurves; test for impliable oncurve 216*e1fe3e4aSElliott Hughes points either before or after rounding (#3146, #3147, #3155, #3156). 217*e1fe3e4aSElliott Hughes- [TTGlyphPointPen] Don't error with empty contours, simply ignore them (#3145). 218*e1fe3e4aSElliott Hughes- [sfnt] Fixed str vs bytes remnant of py3 transition in code dealing with de/compiling 219*e1fe3e4aSElliott Hughes WOFF metadata (#3129). 220*e1fe3e4aSElliott Hughes- [instancer-solver] Fixed bug when moving default instance with sparse masters (#3139, #3140). 221*e1fe3e4aSElliott Hughes- [feaLib] Simplify variable scalars that don’t vary (#3132). 222*e1fe3e4aSElliott Hughes- [pens] Added filter pen that explicitly emits closing line when lastPt != movePt (#3100). 223*e1fe3e4aSElliott Hughes- [varStore] Improve optimize algorithm and better document the algorithm (#3124, #3127). 224*e1fe3e4aSElliott Hughes Added ``quantization`` option (#3126). 225*e1fe3e4aSElliott Hughes- Added CI workflow config file for building native binary wheels (#3121). 226*e1fe3e4aSElliott Hughes- [fontBuilder] Added glyphDataFormat=0 option; raise error when glyphs contain cubic 227*e1fe3e4aSElliott Hughes outlines but glyphDataFormat was not explicitly set to 1 (#3113, #3119). 228*e1fe3e4aSElliott Hughes- [subset] Prune emptied GDEF.MarkGlyphSetsDef and remap indices; ensure GDEF is 229*e1fe3e4aSElliott Hughes subsetted before GSUB and GPOS (#3114, #3118). 230*e1fe3e4aSElliott Hughes- [xmlReader] Fixed issue whereby DSIG table data was incorrectly parsed (#3115, #2614). 231*e1fe3e4aSElliott Hughes- [varLib/merger] Fixed merging of SinglePos with pos=0 (#3111, #3112). 232*e1fe3e4aSElliott Hughes- [feaLib] Demote "Feature has not been defined" error to a warning when building aalt 233*e1fe3e4aSElliott Hughes and referenced feature is empty (#3110). 234*e1fe3e4aSElliott Hughes- [feaLib] Dedupe multiple substitutions with classes (#3105). 235*e1fe3e4aSElliott Hughes 236*e1fe3e4aSElliott Hughes4.39.4 (released 2023-05-10) 237*e1fe3e4aSElliott Hughes---------------------------- 238*e1fe3e4aSElliott Hughes 239*e1fe3e4aSElliott Hughes- [varLib.interpolatable] Allow for sparse masters (#3075) 240*e1fe3e4aSElliott Hughes- [merge] Handle differing default/nominalWidthX in CFF (#3070) 241*e1fe3e4aSElliott Hughes- [ttLib] Add missing main.py file to ttLib package (#3088) 242*e1fe3e4aSElliott Hughes- [ttx] Fix missing composite instructions in XML (#3092) 243*e1fe3e4aSElliott Hughes- [ttx] Fix split tables option to work on filenames containing '%' (#3096) 244*e1fe3e4aSElliott Hughes- [featureVars] Process lookups for features other than rvrn last (#3099) 245*e1fe3e4aSElliott Hughes- [feaLib] support multiple substitution with classes (#3103) 246*e1fe3e4aSElliott Hughes 247*e1fe3e4aSElliott Hughes4.39.3 (released 2023-03-28) 248*e1fe3e4aSElliott Hughes---------------------------- 249*e1fe3e4aSElliott Hughes 250*e1fe3e4aSElliott Hughes- [sbix] Fixed TypeError when compiling empty glyphs whose imageData is None, regression 251*e1fe3e4aSElliott Hughes was introduced in v4.39 (#3059). 252*e1fe3e4aSElliott Hughes- [ttFont] Fixed AttributeError on python <= 3.10 when opening a TTFont from a tempfile 253*e1fe3e4aSElliott Hughes SpooledTemporaryFile, seekable method only added on python 3.11 (#3052). 254*e1fe3e4aSElliott Hughes 255*e1fe3e4aSElliott Hughes4.39.2 (released 2023-03-16) 256*e1fe3e4aSElliott Hughes---------------------------- 257*e1fe3e4aSElliott Hughes 258*e1fe3e4aSElliott Hughes- [varLib] Fixed regression introduced in 4.39.1 whereby an incomplete 'STAT' table 259*e1fe3e4aSElliott Hughes would be built even though a DesignSpace v5 did contain 'STAT' definitions (#3045, #3046). 260*e1fe3e4aSElliott Hughes 261*e1fe3e4aSElliott Hughes4.39.1 (released 2023-03-16) 262*e1fe3e4aSElliott Hughes---------------------------- 263*e1fe3e4aSElliott Hughes 264*e1fe3e4aSElliott Hughes- [avar2] Added experimental support for reading/writing avar version 2 as specified in 265*e1fe3e4aSElliott Hughes this draft proposal: https://github.com/harfbuzz/boring-expansion-spec/blob/main/avar2.md 266*e1fe3e4aSElliott Hughes- [glifLib] Wrap underlying XML library exceptions with GlifLibError when parsing GLIFs, 267*e1fe3e4aSElliott Hughes and also print the name and path of the glyph that fails to be parsed (#3042). 268*e1fe3e4aSElliott Hughes- [feaLib] Consult avar for normalizing user-space values in ConditionSets and in 269*e1fe3e4aSElliott Hughes VariableScalars (#3042, #3043). 270*e1fe3e4aSElliott Hughes- [ttProgram] Handle string input to Program.fromAssembly() (#3038). 271*e1fe3e4aSElliott Hughes- [otlLib] Added a config option to emit GPOS 7 lookups, currently disabled by default 272*e1fe3e4aSElliott Hughes because of a macOS bug (#3034). 273*e1fe3e4aSElliott Hughes- [COLRv1] Added method to automatically compute ClipBoxes (#3027). 274*e1fe3e4aSElliott Hughes- [ttFont] Fixed getGlyphID to raise KeyError on missing glyphs instead of returning 275*e1fe3e4aSElliott Hughes None. The regression was introduced in v4.27.0 (#3032). 276*e1fe3e4aSElliott Hughes- [sbix] Fixed UnboundLocalError: cannot access local variable 'rawdata' (#3031). 277*e1fe3e4aSElliott Hughes- [varLib] When building VF, do not overwrite a pre-existing ``STAT`` table that was built 278*e1fe3e4aSElliott Hughes with feaLib from FEA feature file. Also, added support for building multiple VFs 279*e1fe3e4aSElliott Hughes defined in Designspace v5 from ``fonttools varLib`` script (#3024). 280*e1fe3e4aSElliott Hughes- [mtiLib] Only add ``Debg`` table with lookup names when ``FONTTOOLS_LOOKUP_DEBUGGING`` 281*e1fe3e4aSElliott Hughes env variable is set (#3023). 282*e1fe3e4aSElliott Hughes 283*e1fe3e4aSElliott Hughes4.39.0 (released 2023-03-06) 284*e1fe3e4aSElliott Hughes---------------------------- 285*e1fe3e4aSElliott Hughes 286*e1fe3e4aSElliott Hughes- [mtiLib] Optionally add `Debg` debug info for MTI feature builds (#3018). 287*e1fe3e4aSElliott Hughes- [ttx] Support reading input file from standard input using special `-` character, 288*e1fe3e4aSElliott Hughes similar to existing `-o -` option to write output to standard output (#3020). 289*e1fe3e4aSElliott Hughes- [cython] Prevent ``cython.compiled`` raise AttributeError if cython not installed 290*e1fe3e4aSElliott Hughes properly (#3017). 291*e1fe3e4aSElliott Hughes- [OS/2] Guard against ZeroDivisionError when calculating xAvgCharWidth in the unlikely 292*e1fe3e4aSElliott Hughes scenario no glyph has non-zero advance (#3015). 293*e1fe3e4aSElliott Hughes- [subset] Recompute xAvgCharWidth independently of --no-prune-unicode-ranges, 294*e1fe3e4aSElliott Hughes previously the two options were involuntarily bundled together (#3012). 295*e1fe3e4aSElliott Hughes- [fontBuilder] Add ``debug`` parameter to addOpenTypeFeatures method to add source 296*e1fe3e4aSElliott Hughes debugging information to the font in the ``Debg`` private table (#3008). 297*e1fe3e4aSElliott Hughes- [name] Make NameRecord `__lt__` comparison not fail on Unicode encoding errors (#3006). 298*e1fe3e4aSElliott Hughes- [featureVars] Fixed bug in ``overlayBox`` (#3003, #3005). 299*e1fe3e4aSElliott Hughes- [glyf] Added experimental support for cubic bezier curves in TrueType glyf table, as 300*e1fe3e4aSElliott Hughes outlined in glyf v1 proposal (#2988): 301*e1fe3e4aSElliott Hughes https://github.com/harfbuzz/boring-expansion-spec/blob/main/glyf1-cubicOutlines.md 302*e1fe3e4aSElliott Hughes- Added new qu2cu module and related qu2cuPen, the reverse of cu2qu for converting 303*e1fe3e4aSElliott Hughes TrueType quadratic splines to cubic bezier curves (#2993). 304*e1fe3e4aSElliott Hughes- [glyf] Added experimental support for reading and writing Variable Composites/Components 305*e1fe3e4aSElliott Hughes as defined in glyf v1 spec proposal (#2958): 306*e1fe3e4aSElliott Hughes https://github.com/harfbuzz/boring-expansion-spec/blob/main/glyf1-varComposites.md. 307*e1fe3e4aSElliott Hughes- [pens]: Added `addVarComponent` method to pen protocols' base classes, which pens can implement 308*e1fe3e4aSElliott Hughes to handle varcomponents (by default they get decomposed) (#2958). 309*e1fe3e4aSElliott Hughes- [misc.transform] Added DecomposedTransform class which implements an affine transformation 310*e1fe3e4aSElliott Hughes with separate translate, rotation, scale, skew, and transformation-center components (#2598) 311*e1fe3e4aSElliott Hughes- [sbix] Ensure Glyph.referenceGlyphName is set; fixes error after dumping and 312*e1fe3e4aSElliott Hughes re-compiling sbix table with 'dupe' glyphs (#2984). 313*e1fe3e4aSElliott Hughes- [feaLib] Be cleverer when merging chained single substitutions into same lookup 314*e1fe3e4aSElliott Hughes when they are specified using the inline notation (#2150, #2974). 315*e1fe3e4aSElliott Hughes- [instancer] Clamp user-inputted axis ranges to those of fvar (#2959). 316*e1fe3e4aSElliott Hughes- [otBase/subset] Define ``__getstate__`` for BaseTable so that a copied/pickled 'lazy' 317*e1fe3e4aSElliott Hughes object gets its own OTTableReader to read from; incidentally fixes a bug while 318*e1fe3e4aSElliott Hughes subsetting COLRv1 table containing ClipBoxes on python 3.11 (#2965, #2968). 319*e1fe3e4aSElliott Hughes- [sbix] Handle glyphs with "dupe" graphic type on compile correctly (#2963). 320*e1fe3e4aSElliott Hughes- [glyf] ``endPointsOfContours`` field should be unsigned! Kudos to behdad for 321*e1fe3e4aSElliott Hughes spotting one of the oldest bugs in FT. Probably nobody has ever dared to make 322*e1fe3e4aSElliott Hughes glyphs with more than 32767 points... (#2957). 323*e1fe3e4aSElliott Hughes- [feaLib] Fixed handling of ``ignore`` statements with unmarked glyphs to match 324*e1fe3e4aSElliott Hughes makeotf behavior, which assumes the first glyph is marked (#2950). 325*e1fe3e4aSElliott Hughes- Reformatted code with ``black`` and enforce new code style via CI check (#2925). 326*e1fe3e4aSElliott Hughes- [feaLib] Sort name table entries following OT spec prescribed order in the builder (#2927). 327*e1fe3e4aSElliott Hughes- [cu2quPen] Add Cu2QuMultiPen that converts multiple outlines at a time in 328*e1fe3e4aSElliott Hughes interpolation compatible way; its methods take a list of tuples arguments 329*e1fe3e4aSElliott Hughes that would normally be passed to individual segment pens, and at the end it 330*e1fe3e4aSElliott Hughes dispatches the converted outlines to each pen (#2912). 331*e1fe3e4aSElliott Hughes- [reverseContourPen/ttGlyphPen] Add outputImpliedClosingLine option (#2913, #2914, 332*e1fe3e4aSElliott Hughes #2921, #2922, #2995). 333*e1fe3e4aSElliott Hughes- [gvar] Avoid expanding all glyphs unnecessarily upon compile (#2918). 334*e1fe3e4aSElliott Hughes- [scaleUpem] Fixed bug whereby CFF2 vsindex was scaled; it should not (#2893, #2894). 335*e1fe3e4aSElliott Hughes- [designspaceLib] Add DS.getAxisByTag and refactor getAxis (#2891). 336*e1fe3e4aSElliott Hughes- [unicodedata] map Zmth<->math in ot_tag_{to,from}_script (#1737, #2889). 337*e1fe3e4aSElliott Hughes- [woff2] Support encoding/decoding OVERLAP_SIMPLE glyf flags (#2576, #2884). 338*e1fe3e4aSElliott Hughes- [instancer] Update OS/2 class and post.italicAngle when default moved (L4) 339*e1fe3e4aSElliott Hughes- Dropped support for Python 3.7 which reached EOL, fontTools requires 3.8+. 340*e1fe3e4aSElliott Hughes- [instancer] Fixed instantiateFeatureVariations logic when a rule range becomes 341*e1fe3e4aSElliott Hughes default-applicable (#2737, #2880). 342*e1fe3e4aSElliott Hughes- [ttLib] Add main to ttFont and ttCollection that just decompile and re-compile the 343*e1fe3e4aSElliott Hughes input font (#2869). 344*e1fe3e4aSElliott Hughes- [featureVars] Insert 'rvrn' lookup at the beginning of LookupList, to work around bug 345*e1fe3e4aSElliott Hughes in Apple implementation of 'rvrn' feature which the spec says it should be processed 346*e1fe3e4aSElliott Hughes early whereas on macOS 10.15 it follows lookup order (#2140, #2867). 347*e1fe3e4aSElliott Hughes- [instancer/mutator] Remove 'DSIG' table if present. 348*e1fe3e4aSElliott Hughes- [svgPathPen] Don't close path in endPath(), assume open unless closePath() (#2089, #2865). 349*e1fe3e4aSElliott Hughes 350*e1fe3e4aSElliott Hughes4.38.0 (released 2022-10-21) 351*e1fe3e4aSElliott Hughes---------------------------- 352*e1fe3e4aSElliott Hughes 353*e1fe3e4aSElliott Hughes- [varLib.instancer] Added support for L4 instancing, i.e. moving the default value of 354*e1fe3e4aSElliott Hughes an axis while keeping it variable. Thanks Behdad! (#2728, #2861). 355*e1fe3e4aSElliott Hughes It's now also possible to restrict an axis min/max values beyond the current default 356*e1fe3e4aSElliott Hughes value, e.g. a font wght has min=100, def=400, max=900 and you want a partial VF that 357*e1fe3e4aSElliott Hughes only varies between 500 and 700, you can now do that. 358*e1fe3e4aSElliott Hughes You can either specify two min/max values (wght=500:700), and the new default will be 359*e1fe3e4aSElliott Hughes set to either the minimum or maximum, depending on which one is closer to the current 360*e1fe3e4aSElliott Hughes default (e.g. 500 in this case). Or you can specify three values (e.g. wght=500:600:700) 361*e1fe3e4aSElliott Hughes to specify the new default value explicitly. 362*e1fe3e4aSElliott Hughes- [otlLib/featureVars] Set a few Count values so one doesn't need to compile the font 363*e1fe3e4aSElliott Hughes to update them (#2860). 364*e1fe3e4aSElliott Hughes- [varLib.models] Make extrapolation work for 2-master models as well where one master 365*e1fe3e4aSElliott Hughes is at the default location (#2843, #2846). 366*e1fe3e4aSElliott Hughes Add optional extrapolate=False to normalizeLocation() (#2847, #2849). 367*e1fe3e4aSElliott Hughes- [varLib.cff] Fixed sub-optimal packing of CFF2 deltas by no longer rounding them to 368*e1fe3e4aSElliott Hughes integer (#2838). 369*e1fe3e4aSElliott Hughes- [scaleUpem] Calculate numShorts in VarData after scale; handle CFF hintmasks (#2840). 370*e1fe3e4aSElliott Hughes 371*e1fe3e4aSElliott Hughes4.37.4 (released 2022-09-30) 372*e1fe3e4aSElliott Hughes---------------------------- 373*e1fe3e4aSElliott Hughes 374*e1fe3e4aSElliott Hughes- [subset] Keep nameIDs used by CPAL palette entry labels (#2837). 375*e1fe3e4aSElliott Hughes- [varLib] Avoid negative hmtx values when creating font from variable CFF2 font (#2827). 376*e1fe3e4aSElliott Hughes- [instancer] Don't prune stat.ElidedFallbackNameID (#2828). 377*e1fe3e4aSElliott Hughes- [unicodedata] Update Scripts/Blocks to Unicode 15.0 (#2833). 378*e1fe3e4aSElliott Hughes 379*e1fe3e4aSElliott Hughes4.37.3 (released 2022-09-20) 380*e1fe3e4aSElliott Hughes---------------------------- 381*e1fe3e4aSElliott Hughes 382*e1fe3e4aSElliott Hughes- Fix arguments in calls to (glyf) glyph.draw() and drawPoints(), whereby offset wasn't 383*e1fe3e4aSElliott Hughes correctly passed down; this fix also exposed a second bug, where lsb and tsb were not 384*e1fe3e4aSElliott Hughes set (#2824, #2825, adobe-type-tools/afdko#1560). 385*e1fe3e4aSElliott Hughes 386*e1fe3e4aSElliott Hughes4.37.2 (released 2022-09-15) 387*e1fe3e4aSElliott Hughes---------------------------- 388*e1fe3e4aSElliott Hughes 389*e1fe3e4aSElliott Hughes- [subset] Keep CPAL table and don't attempt to prune unused color indices if OT-SVG 390*e1fe3e4aSElliott Hughes table is present even if COLR table was subsetted away; OT-SVG may be referencing the 391*e1fe3e4aSElliott Hughes CPAL table; for now we assume that's the case (#2814, #2815). 392*e1fe3e4aSElliott Hughes- [varLib.instancer] Downgrade GPOS/GSUB version if there are no more FeatureVariations 393*e1fe3e4aSElliott Hughes after instancing (#2812). 394*e1fe3e4aSElliott Hughes- [subset] Added ``--no-lazy`` to optionally load fonts eagerly (mostly to ease 395*e1fe3e4aSElliott Hughes debugging of table lazy loading, no practical effects) (#2807). 396*e1fe3e4aSElliott Hughes- [varLib] Avoid building empty COLR.DeltaSetIndexMap with only identity mappings (#2803). 397*e1fe3e4aSElliott Hughes- [feaLib] Allow multiple value record types (by promoting to the most general format) 398*e1fe3e4aSElliott Hughes within the same PairPos subtable; e.g. this allows variable and non variable kerning 399*e1fe3e4aSElliott Hughes rules to share the same subtable. This also fixes a bug whereby some kerning pairs 400*e1fe3e4aSElliott Hughes would become unreachable while shapiong because of premature subtable splitting (#2772, #2776). 401*e1fe3e4aSElliott Hughes- [feaLib] Speed up ``VarScalar`` by caching models for recurring master locations (#2798). 402*e1fe3e4aSElliott Hughes- [feaLib] Optionally cythonize ``feaLib.lexer``, speeds up parsing FEA a bit (#2799). 403*e1fe3e4aSElliott Hughes- [designspaceLib] Avoid crash when handling unbounded rule conditions (#2797). 404*e1fe3e4aSElliott Hughes- [post] Don't crash if ``post`` legacy format 1 is malformed/improperly used (#2786) 405*e1fe3e4aSElliott Hughes- [gvar] Don't be "lazy" (load all glyph variations up front) when TTFont.lazy=False (#2771). 406*e1fe3e4aSElliott Hughes- [TTFont] Added ``normalizeLocation`` method to normalize a location dict from the 407*e1fe3e4aSElliott Hughes font's defined axes space (also known as "user space") into the normalized (-1..+1) 408*e1fe3e4aSElliott Hughes space. It applies ``avar`` mapping if the font contains an ``avar`` table (#2789). 409*e1fe3e4aSElliott Hughes- [TTVarGlyphSet] Support drawing glyph instances from CFF2 variable glyph set (#2784). 410*e1fe3e4aSElliott Hughes- [fontBuilder] Do not error when building cmap if there are zero code points (#2785). 411*e1fe3e4aSElliott Hughes- [varLib.plot] Added ability to plot a variation model and set of accompaning master 412*e1fe3e4aSElliott Hughes values corresponding to the model's master locations into a pyplot figure (#2767). 413*e1fe3e4aSElliott Hughes- [Snippets] Added ``statShape.py`` script to draw statistical shape of a glyph as an 414*e1fe3e4aSElliott Hughes ellips (requires pycairo) (baecd88). 415*e1fe3e4aSElliott Hughes- [TTVarGlyphSet] implement drawPoints natively, avoiding going through 416*e1fe3e4aSElliott Hughes SegmentToPointPen (#2778). 417*e1fe3e4aSElliott Hughes- [TTVarGlyphSet] Fixed bug whereby drawing a composite glyph multiple times, its 418*e1fe3e4aSElliott Hughes components would shif; needed an extra copy (#2774). 419*e1fe3e4aSElliott Hughes 420*e1fe3e4aSElliott Hughes4.37.1 (released 2022-08-24) 421*e1fe3e4aSElliott Hughes---------------------------- 422*e1fe3e4aSElliott Hughes 423*e1fe3e4aSElliott Hughes- [subset] Fixed regression introduced with v4.37.0 while subsetting the VarStore of 424*e1fe3e4aSElliott Hughes ``HVAR`` and ``VVAR`` tables, whereby an ``AttributeError: subset_varidxes`` was 425*e1fe3e4aSElliott Hughes thrown because an apparently unused import statement (with the side-effect of 426*e1fe3e4aSElliott Hughes dynamically binding that ``subset_varidxes`` method to the VarStore class) had been 427*e1fe3e4aSElliott Hughes accidentally deleted in an unrelated PR (#2679, #2773). 428*e1fe3e4aSElliott Hughes- [pens] Added ``cairoPen`` (#2678). 429*e1fe3e4aSElliott Hughes- [gvar] Read ``gvar`` more lazily by not parsing all of the ``glyf`` table (#2771). 430*e1fe3e4aSElliott Hughes- [ttGlyphSet] Make ``drawPoints(pointPen)`` method work for CFF fonts as well via 431*e1fe3e4aSElliott Hughes adapter pen (#2770). 432*e1fe3e4aSElliott Hughes 433*e1fe3e4aSElliott Hughes4.37.0 (released 2022-08-23) 434*e1fe3e4aSElliott Hughes---------------------------- 435*e1fe3e4aSElliott Hughes 436*e1fe3e4aSElliott Hughes- [varLib.models] Reverted PR #2717 which added support for "narrow tents" in v4.36.0, 437*e1fe3e4aSElliott Hughes as it introduced a regression (#2764, #2765). It will be restored in upcoming release 438*e1fe3e4aSElliott Hughes once we found a solution to the bug. 439*e1fe3e4aSElliott Hughes- [cff.specializer] Fixed issue in charstring generalizer with the ``blend`` operator 440*e1fe3e4aSElliott Hughes (#2750, #1975). 441*e1fe3e4aSElliott Hughes- [varLib.models] Added support for extrapolation (#2757). 442*e1fe3e4aSElliott Hughes- [ttGlyphSet] Ensure the newly added ``_TTVarGlyphSet`` inherits from ``_TTGlyphSet`` 443*e1fe3e4aSElliott Hughes to keep backward compatibility with existing API (#2762). 444*e1fe3e4aSElliott Hughes- [kern] Allow compiling legacy kern tables with more than 64k entries (d21cfdede). 445*e1fe3e4aSElliott Hughes- [visitor] Added new visitor API to traverse tree of objects and dispatch based 446*e1fe3e4aSElliott Hughes on the attribute type: cf. ``fontTools.misc.visitor`` and ``fontTools.ttLib.ttVisitor``. Added ``fontTools.ttLib.scaleUpem`` module that uses the latter to 447*e1fe3e4aSElliott Hughes change a font's units-per-em and scale all the related fields accordingly (#2718, 448*e1fe3e4aSElliott Hughes #2755). 449*e1fe3e4aSElliott Hughes 450*e1fe3e4aSElliott Hughes4.36.0 (released 2022-08-17) 451*e1fe3e4aSElliott Hughes---------------------------- 452*e1fe3e4aSElliott Hughes 453*e1fe3e4aSElliott Hughes- [varLib.models] Use a simpler model that generates narrower "tents" (regions, master 454*e1fe3e4aSElliott Hughes supports) whenever possible: specifically when any two axes that actively "cooperate" 455*e1fe3e4aSElliott Hughes (have masters at non-zero positions for both axes) have a complete set of intermediates. 456*e1fe3e4aSElliott Hughes The simpler algorithm produces fewer overlapping regions and behaves better with 457*e1fe3e4aSElliott Hughes respect to rounding at the peak positions than the generic solver, always matching 458*e1fe3e4aSElliott Hughes intermediate masters exactly, instead of maximally 0.5 units off. This may be useful 459*e1fe3e4aSElliott Hughes when 100% metrics compatibility is desired (#2218, #2717). 460*e1fe3e4aSElliott Hughes- [feaLib] Remove warning when about ``GDEF`` not being built when explicitly not 461*e1fe3e4aSElliott Hughes requested; don't build one unconditonally even when not requested (#2744, also works 462*e1fe3e4aSElliott Hughes around #2747). 463*e1fe3e4aSElliott Hughes- [ttFont] ``TTFont.getGlyphSet`` method now supports selecting a location that 464*e1fe3e4aSElliott Hughes represents an instance of a variable font (supports both user-scale and normalized 465*e1fe3e4aSElliott Hughes axes coordinates via the ``normalized=False`` parameter). Currently this only works 466*e1fe3e4aSElliott Hughes for TrueType-flavored variable fonts (#2738). 467*e1fe3e4aSElliott Hughes 468*e1fe3e4aSElliott Hughes4.35.0 (released 2022-08-15) 469*e1fe3e4aSElliott Hughes---------------------------- 470*e1fe3e4aSElliott Hughes 471*e1fe3e4aSElliott Hughes- [otData/otConverters] Added support for 'biased' PaintSweepGradient start/end angles 472*e1fe3e4aSElliott Hughes to match latest COLRv1 spec (#2743). 473*e1fe3e4aSElliott Hughes- [varLib.instancer] Fixed bug in ``_instantiateFeatureVariations`` when at the same 474*e1fe3e4aSElliott Hughes time pinning one axis and restricting the range of a subsequent axis; the wrong axis 475*e1fe3e4aSElliott Hughes tag was being used in the latter step (as the records' axisIdx was updated in the 476*e1fe3e4aSElliott Hughes preceding step but looked up using the old axes order in the following step) (#2733, 477*e1fe3e4aSElliott Hughes #2734). 478*e1fe3e4aSElliott Hughes- [mtiLib] Pad script tags with space when less than 4 char long (#1727). 479*e1fe3e4aSElliott Hughes- [merge] Use ``'.'`` instead of ``'#'`` in duplicate glyph names (#2742). 480*e1fe3e4aSElliott Hughes- [gvar] Added support for lazily loading glyph variations (#2741). 481*e1fe3e4aSElliott Hughes- [varLib] In ``build_many``, we forgot to pass on ``colr_layer_reuse`` parameter to 482*e1fe3e4aSElliott Hughes the ``build`` method (#2730). 483*e1fe3e4aSElliott Hughes- [svgPathPen] Add a main that prints SVG for input text (6df779fd). 484*e1fe3e4aSElliott Hughes- [cffLib.width] Fixed off-by-one in optimized values; previous code didn't match the 485*e1fe3e4aSElliott Hughes code block above it (2963fa50). 486*e1fe3e4aSElliott Hughes- [varLib.interpolatable] Support reading .designspace and .glyphs files (via optional 487*e1fe3e4aSElliott Hughes ``glyphsLib``). 488*e1fe3e4aSElliott Hughes- Compile some modules with Cython when available and building/installing fonttools 489*e1fe3e4aSElliott Hughes from source: ``varLib.iup`` (35% faster), ``pens.momentsPen`` (makes 490*e1fe3e4aSElliott Hughes ``varLib.interpolatable`` 3x faster). 491*e1fe3e4aSElliott Hughes- [feaLib] Allow features to be built for VF without also building a GDEF table (e.g. 492*e1fe3e4aSElliott Hughes only build GSUB); warn when GDEF would be needed but isn't requested (#2705, 2694). 493*e1fe3e4aSElliott Hughes- [otBase] Fixed ``AttributeError`` when uharfbuzz < 0.23.0 and 'repack' method is 494*e1fe3e4aSElliott Hughes missing (32aa8eaf). Use new ``uharfbuzz.repack_with_tag`` when available (since 495*e1fe3e4aSElliott Hughes uharfbuzz>=0.30.0), enables table-specific optimizations to be performed during 496*e1fe3e4aSElliott Hughes repacking (#2724). 497*e1fe3e4aSElliott Hughes- [statisticsPen] By default report all glyphs (4139d891). Avoid division-by-zero 498*e1fe3e4aSElliott Hughes (52b28f90). 499*e1fe3e4aSElliott Hughes- [feaLib] Added missing required argument to FeatureLibError exception (#2693) 500*e1fe3e4aSElliott Hughes- [varLib.merge] Fixed error during error reporting (#2689). Fixed undefined 501*e1fe3e4aSElliott Hughes ``NotANone`` variable (#2714). 502*e1fe3e4aSElliott Hughes 503*e1fe3e4aSElliott Hughes4.34.4 (released 2022-07-07) 504*e1fe3e4aSElliott Hughes---------------------------- 505*e1fe3e4aSElliott Hughes 506*e1fe3e4aSElliott Hughes- Fixed typo in varLib/merger.py that causes NameError merging COLR glyphs 507*e1fe3e4aSElliott Hughes containing more than 255 layers (#2685). 508*e1fe3e4aSElliott Hughes 509*e1fe3e4aSElliott Hughes4.34.3 (released 2022-07-07) 510*e1fe3e4aSElliott Hughes---------------------------- 511*e1fe3e4aSElliott Hughes 512*e1fe3e4aSElliott Hughes- [designspaceLib] Don't make up bad PS names when no STAT data (#2684) 513*e1fe3e4aSElliott Hughes 514*e1fe3e4aSElliott Hughes4.34.2 (released 2022-07-06) 515*e1fe3e4aSElliott Hughes---------------------------- 516*e1fe3e4aSElliott Hughes 517*e1fe3e4aSElliott Hughes- [varStore/subset] fixed KeyError exception to do with NO_VARIATION_INDEX while 518*e1fe3e4aSElliott Hughes subsetting varidxes in GPOS/GDEF (a08140d). 519*e1fe3e4aSElliott Hughes 520*e1fe3e4aSElliott Hughes4.34.1 (released 2022-07-06) 521*e1fe3e4aSElliott Hughes---------------------------- 522*e1fe3e4aSElliott Hughes 523*e1fe3e4aSElliott Hughes- [instancer] When optimizing HVAR/VVAR VarStore, use_NO_VARIATION_INDEX=False to avoid 524*e1fe3e4aSElliott Hughes including NO_VARIATION_INDEX in AdvWidthMap, RsbMap, LsbMap mappings, which would 525*e1fe3e4aSElliott Hughes push the VarIdx width to maximum (4bytes), which is not desirable. This also fixes 526*e1fe3e4aSElliott Hughes a hard crash when attempting to subset a varfont after it had been partially instanced 527*e1fe3e4aSElliott Hughes with use_NO_VARIATION_INDEX=True. 528*e1fe3e4aSElliott Hughes 529*e1fe3e4aSElliott Hughes4.34.0 (released 2022-07-06) 530*e1fe3e4aSElliott Hughes---------------------------- 531*e1fe3e4aSElliott Hughes 532*e1fe3e4aSElliott Hughes- [instancer] Set RIBBI bits in head and OS/2 table when cutting instances and the 533*e1fe3e4aSElliott Hughes subfamily nameID=2 contains strings like 'Italic' or 'Bold' (#2673). 534*e1fe3e4aSElliott Hughes- [otTraverse] Addded module containing methods for traversing trees of otData tables 535*e1fe3e4aSElliott Hughes (#2660). 536*e1fe3e4aSElliott Hughes- [otTables] Made DeltaSetIndexMap TTX dump less verbose by omitting no-op entries 537*e1fe3e4aSElliott Hughes (#2660). 538*e1fe3e4aSElliott Hughes- [colorLib.builder] Added option to disable PaintColrLayers's reuse of layers from 539*e1fe3e4aSElliott Hughes LayerList (#2660). 540*e1fe3e4aSElliott Hughes- [varLib] Added support for merging multiple master COLRv1 tables into a variable 541*e1fe3e4aSElliott Hughes COLR table (#2660, #2328). Base color glyphs of same name in different masters must have 542*e1fe3e4aSElliott Hughes identical paint graph structure (incl. number of layers, palette indices, number 543*e1fe3e4aSElliott Hughes of color line stops, corresponding paint formats at each level of the graph), 544*e1fe3e4aSElliott Hughes but can differ in the variable fields (e.g. PaintSolid.Alpha). PaintVar* tables 545*e1fe3e4aSElliott Hughes are produced when this happens and a VarStore/DeltaSetIndexMap is added to the 546*e1fe3e4aSElliott Hughes variable COLR table. It is possible for non-default masters to be 'sparse', i.e. 547*e1fe3e4aSElliott Hughes omit some of the color glyphs present in the default master. 548*e1fe3e4aSElliott Hughes- [feaLib] Let the Parser set nameIDs 1 through 6 that were previously reserved (#2675). 549*e1fe3e4aSElliott Hughes- [varLib.varStore] Support NO_VARIATION_INDEX in optimizer and instancer. 550*e1fe3e4aSElliott Hughes- [feaLib] Show all missing glyphs at once at end of parsing (#2665). 551*e1fe3e4aSElliott Hughes- [varLib.iup] Rewrite force-set conditions and limit DP loopback length (#2651). 552*e1fe3e4aSElliott Hughes For Noto Sans, IUP time drops from 23s down to 9s, with only a slight size increase 553*e1fe3e4aSElliott Hughes in the final font. This basically turns the algorithm from O(n^3) into O(n). 554*e1fe3e4aSElliott Hughes- [featureVars] Report about missing glyphs in substitution rules (#2654). 555*e1fe3e4aSElliott Hughes- [mutator/instancer] Added CLI flag to --no-recalc-timestamp (#2649). 556*e1fe3e4aSElliott Hughes- [SVG] Allow individual SVG documents in SVG OT table to be compressed on uncompressed, 557*e1fe3e4aSElliott Hughes and remember that when roundtripping to/from ttx. The SVG.docList is now a list 558*e1fe3e4aSElliott Hughes of SVGDocument namedtuple-like dataclass containing an extra ``compressed`` field, 559*e1fe3e4aSElliott Hughes and no longer a bare 3-tuple (#2645). 560*e1fe3e4aSElliott Hughes- [designspaceLib] Check for descriptor types with hasattr() to allow custom classes 561*e1fe3e4aSElliott Hughes that don't inherit the default descriptors (#2634). 562*e1fe3e4aSElliott Hughes- [subset] Enable sharing across subtables of extension lookups for harfbuzz packing 563*e1fe3e4aSElliott Hughes (#2626). Updated how table packing falls back to fontTools from harfbuzz (#2668). 564*e1fe3e4aSElliott Hughes- [subset] Updated default feature tags following current Harfbuzz (#2637). 565*e1fe3e4aSElliott Hughes- [svgLib] Fixed regex for real number to support e.g. 1e-4 in addition to 1.0e-4. 566*e1fe3e4aSElliott Hughes Support parsing negative rx, ry on arc commands (#2596, #2611). 567*e1fe3e4aSElliott Hughes- [subset] Fixed subsetting SinglePosFormat2 when ValueFormat=0 (#2603). 568*e1fe3e4aSElliott Hughes 569*e1fe3e4aSElliott Hughes4.33.3 (released 2022-04-26) 570*e1fe3e4aSElliott Hughes---------------------------- 571*e1fe3e4aSElliott Hughes 572*e1fe3e4aSElliott Hughes- [designspaceLib] Fixed typo in ``deepcopyExceptFonts`` method, preventing font 573*e1fe3e4aSElliott Hughes references to be transferred (#2600). Fixed another typo in the name of ``Range`` 574*e1fe3e4aSElliott Hughes dataclass's ``__post_init__`` magic method (#2597). 575*e1fe3e4aSElliott Hughes 576*e1fe3e4aSElliott Hughes4.33.2 (released 2022-04-22) 577*e1fe3e4aSElliott Hughes---------------------------- 578*e1fe3e4aSElliott Hughes 579*e1fe3e4aSElliott Hughes- [otBase] Make logging less verbose when harfbuzz fails to serialize. Do not exit 580*e1fe3e4aSElliott Hughes at the first failure but continue attempting to fix offset overflow error using 581*e1fe3e4aSElliott Hughes the pure-python serializer even when the ``USE_HARFBUZZ_REPACKER`` option was 582*e1fe3e4aSElliott Hughes explicitly set to ``True``. This is normal with fonts with relatively large 583*e1fe3e4aSElliott Hughes tables, at least until hb.repack implements proper table splitting. 584*e1fe3e4aSElliott Hughes 585*e1fe3e4aSElliott Hughes4.33.1 (released 2022-04-22) 586*e1fe3e4aSElliott Hughes---------------------------- 587*e1fe3e4aSElliott Hughes 588*e1fe3e4aSElliott Hughes- [otlLib] Put back the ``FONTTOOLS_GPOS_COMPACT_MODE`` environment variable to fix 589*e1fe3e4aSElliott Hughes regression in ufo2ft (and thus fontmake) introduced with v4.33.0 (#2592, #2593). 590*e1fe3e4aSElliott Hughes This is deprecated and will be removed one ufo2ft gets updated to use the new 591*e1fe3e4aSElliott Hughes config setup. 592*e1fe3e4aSElliott Hughes 593*e1fe3e4aSElliott Hughes4.33.0 (released 2022-04-21) 594*e1fe3e4aSElliott Hughes---------------------------- 595*e1fe3e4aSElliott Hughes 596*e1fe3e4aSElliott Hughes- [OS/2 / merge] Automatically recalculate ``OS/2.xAvgCharWidth`` after merging 597*e1fe3e4aSElliott Hughes fonts with ``fontTools.merge`` (#2591, #2538). 598*e1fe3e4aSElliott Hughes- [misc/config] Added ``fontTools.misc.configTools`` module, a generic configuration 599*e1fe3e4aSElliott Hughes system (#2416, #2439). 600*e1fe3e4aSElliott Hughes Added ``fontTools.config`` module, a fontTools-specific configuration 601*e1fe3e4aSElliott Hughes system using ``configTools`` above. 602*e1fe3e4aSElliott Hughes Attached a ``Config`` object to ``TTFont``. 603*e1fe3e4aSElliott Hughes- [otlLib] Replaced environment variable for GPOS compression level with an 604*e1fe3e4aSElliott Hughes equivalent option using the new config system. 605*e1fe3e4aSElliott Hughes- [designspaceLib] Incremented format version to 5.0 (#2436). 606*e1fe3e4aSElliott Hughes Added discrete axes, variable fonts, STAT information, either design- or 607*e1fe3e4aSElliott Hughes user-space location on instances. 608*e1fe3e4aSElliott Hughes Added ``fontTools.designspaceLib.split`` module to split a designspace 609*e1fe3e4aSElliott Hughes into sub-spaces that interpolate and that represent the variable fonts 610*e1fe3e4aSElliott Hughes listed in the document. 611*e1fe3e4aSElliott Hughes Made instance names optional and allow computing them from STAT data instead. 612*e1fe3e4aSElliott Hughes Added ``fontTools.designspaceLib.statNames`` module. 613*e1fe3e4aSElliott Hughes Allow instances to have the same location as a previously defined STAT label. 614*e1fe3e4aSElliott Hughes Deprecated some attributes: 615*e1fe3e4aSElliott Hughes ``SourceDescriptor``: ``copyLib``, ``copyInfo``, ``copyGroups``, ``copyFeatures``. 616*e1fe3e4aSElliott Hughes ``InstanceDescriptor``: ``kerning``, ``info``; ``glyphs``: use rules or sparse 617*e1fe3e4aSElliott Hughes sources. 618*e1fe3e4aSElliott Hughes For both, ``location``: use the more explicit designLocation. 619*e1fe3e4aSElliott Hughes Note: all are soft deprecations and existing code should keep working. 620*e1fe3e4aSElliott Hughes Updated documentation for Python methods and the XML format. 621*e1fe3e4aSElliott Hughes- [varLib] Added ``build_many`` to build several variable fonts from a single 622*e1fe3e4aSElliott Hughes designspace document (#2436). 623*e1fe3e4aSElliott Hughes Added ``fontTools.varLib.stat`` module to build STAT tables from a designspace 624*e1fe3e4aSElliott Hughes document. 625*e1fe3e4aSElliott Hughes- [otBase] Try to use the Harfbuzz Repacker for packing GSUB/GPOS tables when 626*e1fe3e4aSElliott Hughes ``uharfbuzz`` python bindings are available (#2552). Disable it by setting the 627*e1fe3e4aSElliott Hughes "fontTools.ttLib.tables.otBase:USE_HARFBUZZ_REPACKER" config option to ``False``. 628*e1fe3e4aSElliott Hughes If the option is set explicitly to ``True`` but ``uharfbuzz`` can't be imported 629*e1fe3e4aSElliott Hughes or fails to serialize for any reasons, an error will be raised (ImportError or 630*e1fe3e4aSElliott Hughes uharfbuzz errors). 631*e1fe3e4aSElliott Hughes- [CFF/T2] Ensure that ``pen.closePath()`` gets called for CFF2 charstrings (#2577). 632*e1fe3e4aSElliott Hughes Handle implicit CFF2 closePath within ``T2OutlineExtractor`` (#2580). 633*e1fe3e4aSElliott Hughes 634*e1fe3e4aSElliott Hughes4.32.0 (released 2022-04-08) 635*e1fe3e4aSElliott Hughes---------------------------- 636*e1fe3e4aSElliott Hughes 637*e1fe3e4aSElliott Hughes- [otlLib] Disable GPOS7 optimization to work around bug in Apple CoreText. 638*e1fe3e4aSElliott Hughes Always force Chaining GPOS8 for now (#2540). 639*e1fe3e4aSElliott Hughes- [glifLib] Added ``outputImpliedClosingLine=False`` parameter to ``Glyph.draw()``, 640*e1fe3e4aSElliott Hughes to control behaviour of ``PointToSegmentPen`` (6b4e2e7). 641*e1fe3e4aSElliott Hughes- [varLib.interpolatable] Check for wrong contour starting point (#2571). 642*e1fe3e4aSElliott Hughes- [cffLib] Remove leftover ``GlobalState`` class and fix calls to ``TopDictIndex()`` 643*e1fe3e4aSElliott Hughes (#2569, #2570). 644*e1fe3e4aSElliott Hughes- [instancer] Clear ``AxisValueArray`` if it is empty after instantiating (#2563). 645*e1fe3e4aSElliott Hughes 646*e1fe3e4aSElliott Hughes4.31.2 (released 2022-03-22) 647*e1fe3e4aSElliott Hughes---------------------------- 648*e1fe3e4aSElliott Hughes 649*e1fe3e4aSElliott Hughes- [varLib] fix instantiation of GPOS SinglePos values (#2555). 650*e1fe3e4aSElliott Hughes 651*e1fe3e4aSElliott Hughes4.31.1 (released 2022-03-18) 652*e1fe3e4aSElliott Hughes---------------------------- 653*e1fe3e4aSElliott Hughes 654*e1fe3e4aSElliott Hughes- [subset] fix subsetting OT-SVG when glyph id attribute is on the root ``<svg>`` 655*e1fe3e4aSElliott Hughes element (#2553). 656*e1fe3e4aSElliott Hughes 657*e1fe3e4aSElliott Hughes4.31.0 (released 2022-03-18) 658*e1fe3e4aSElliott Hughes---------------------------- 659*e1fe3e4aSElliott Hughes 660*e1fe3e4aSElliott Hughes- [ttCollection] Fixed 'ResourceWarning: unclosed file' warning (#2549). 661*e1fe3e4aSElliott Hughes- [varLib.merger] Handle merging SinglePos with valueformat=0 (#2550). 662*e1fe3e4aSElliott Hughes- [ttFont] Update glyf's glyphOrder when calling TTFont.setGlyphOrder() (#2544). 663*e1fe3e4aSElliott Hughes- [ttFont] Added ``ensureDecompiled`` method to load all tables irrespective 664*e1fe3e4aSElliott Hughes of the ``lazy`` attribute (#2551). 665*e1fe3e4aSElliott Hughes- [otBase] Added ``iterSubTable`` method to iterate over BaseTable's children of 666*e1fe3e4aSElliott Hughes type BaseTable; useful for traversing a tree of otTables (#2551). 667*e1fe3e4aSElliott Hughes 668*e1fe3e4aSElliott Hughes4.30.0 (released 2022-03-10) 669*e1fe3e4aSElliott Hughes---------------------------- 670*e1fe3e4aSElliott Hughes 671*e1fe3e4aSElliott Hughes- [varLib] Added debug logger showing the glyph name for which ``gvar`` is built (#2542). 672*e1fe3e4aSElliott Hughes- [varLib.errors] Fixed undefined names in ``FoundANone`` and ``UnsupportedFormat`` 673*e1fe3e4aSElliott Hughes exceptions (ac4d5611). 674*e1fe3e4aSElliott Hughes- [otlLib.builder] Added ``windowsNames`` and ``macNames`` (bool) parameters to the 675*e1fe3e4aSElliott Hughes ``buildStatTabe`` function, so that one can select whether to only add one or both 676*e1fe3e4aSElliott Hughes of the two sets (#2528). 677*e1fe3e4aSElliott Hughes- [t1Lib] Added the ability to recreate PostScript stream (#2504). 678*e1fe3e4aSElliott Hughes- [name] Added ``getFirstDebugName``, ``getBest{Family,SubFamily,Full}Name`` methods (#2526). 679*e1fe3e4aSElliott Hughes 680*e1fe3e4aSElliott Hughes4.29.1 (released 2022-02-01) 681*e1fe3e4aSElliott Hughes---------------------------- 682*e1fe3e4aSElliott Hughes 683*e1fe3e4aSElliott Hughes- [colorLib] Fixed rounding issue with radial gradient's start/end circles inside 684*e1fe3e4aSElliott Hughes one another (#2521). 685*e1fe3e4aSElliott Hughes- [freetypePen] Handle rotate/skew transform when auto-computing width/height of the 686*e1fe3e4aSElliott Hughes buffer; raise PenError wen missing moveTo (#2517) 687*e1fe3e4aSElliott Hughes 688*e1fe3e4aSElliott Hughes4.29.0 (released 2022-01-24) 689*e1fe3e4aSElliott Hughes---------------------------- 690*e1fe3e4aSElliott Hughes 691*e1fe3e4aSElliott Hughes- [ufoLib] Fixed illegal characters and expanded reserved filenames (#2506). 692*e1fe3e4aSElliott Hughes- [COLRv1] Don't emit useless PaintColrLayers of lenght=1 in LayerListBuilder (#2513). 693*e1fe3e4aSElliott Hughes- [ttx] Removed legacy ``waitForKeyPress`` method on Windows (#2509). 694*e1fe3e4aSElliott Hughes- [pens] Added FreeTypePen that uses ``freetype-py`` and the pen protocol for 695*e1fe3e4aSElliott Hughes rasterizating outline paths (#2494). 696*e1fe3e4aSElliott Hughes- [unicodedata] Updated the script direction list to Unicode 14.0 (#2484). 697*e1fe3e4aSElliott Hughes Bumped unicodedata2 dependency to 14.0 (#2499). 698*e1fe3e4aSElliott Hughes- [psLib] Fixed type of ``fontName`` in ``suckfont`` (#2496). 699*e1fe3e4aSElliott Hughes 700*e1fe3e4aSElliott Hughes4.28.5 (released 2021-12-19) 701*e1fe3e4aSElliott Hughes---------------------------- 702*e1fe3e4aSElliott Hughes 703*e1fe3e4aSElliott Hughes- [svgPathPen] Continuation of #2471: make sure all occurrences of ``str()`` are now 704*e1fe3e4aSElliott Hughes replaced with user-defined ``ntos`` callable. 705*e1fe3e4aSElliott Hughes- [merge] Refactored code into submodules, plus several bugfixes and improvements: 706*e1fe3e4aSElliott Hughes fixed duplicate-glyph-resolution GSUB-lookup generation code; use tolerance in glyph 707*e1fe3e4aSElliott Hughes comparison for empty glyph's width; ignore space of default ignorable glyphs; 708*e1fe3e4aSElliott Hughes downgrade duplicates-resolution missing-GSUB from assert to warn; added --drop-tables 709*e1fe3e4aSElliott Hughes option (#2473, #2475, #2476). 710*e1fe3e4aSElliott Hughes 711*e1fe3e4aSElliott Hughes4.28.4 (released 2021-12-15) 712*e1fe3e4aSElliott Hughes---------------------------- 713*e1fe3e4aSElliott Hughes 714*e1fe3e4aSElliott Hughes- [merge] Merge GDEF marksets in Lookups properly (#2474). 715*e1fe3e4aSElliott Hughes- [feaLib] Have ``fontTools feaLib`` script exit with error code when build fails (#2459) 716*e1fe3e4aSElliott Hughes- [svgPathPen] Added ``ntos`` option to customize number formatting (e.g. rounding) (#2471). 717*e1fe3e4aSElliott Hughes- [subset] Speed up subsetting of large CFF fonts (#2467). 718*e1fe3e4aSElliott Hughes- [otTables] Speculatively promote lookups to extension to speed up compilation. If the 719*e1fe3e4aSElliott Hughes offset to lookup N is too big to fit in a ushort, the offset to lookup N+1 is going to 720*e1fe3e4aSElliott Hughes be too big as well, so we promote to extension all lookups from lookup N onwards (#2465). 721*e1fe3e4aSElliott Hughes 722*e1fe3e4aSElliott Hughes4.28.3 (released 2021-12-03) 723*e1fe3e4aSElliott Hughes---------------------------- 724*e1fe3e4aSElliott Hughes 725*e1fe3e4aSElliott Hughes- [subset] Fixed bug while subsetting ``COLR`` table, whereby incomplete layer records 726*e1fe3e4aSElliott Hughes pointing to missing glyphs were being retained leading to ``struct.error`` upon 727*e1fe3e4aSElliott Hughes compiling. Make it so that ``glyf`` glyph closure, which follows the ``COLR`` glyph 728*e1fe3e4aSElliott Hughes closure, does not influence the ``COLR`` table subsetting (#2461, #2462). 729*e1fe3e4aSElliott Hughes- [docs] Fully document the ``cmap`` and ``glyf`` tables (#2454, #2457). 730*e1fe3e4aSElliott Hughes- [colorLib.unbuilder] Fixed CLI by deleting no longer existing parameter (180bb1867). 731*e1fe3e4aSElliott Hughes 732*e1fe3e4aSElliott Hughes4.28.2 (released 2021-11-22) 733*e1fe3e4aSElliott Hughes---------------------------- 734*e1fe3e4aSElliott Hughes 735*e1fe3e4aSElliott Hughes- [otlLib] Remove duplicates when building coverage (#2433). 736*e1fe3e4aSElliott Hughes- [docs] Add interrogate configuration (#2443). 737*e1fe3e4aSElliott Hughes- [docs] Remove comment about missing “start” optional argument to ``calcChecksum`` (#2448). 738*e1fe3e4aSElliott Hughes- [cu2qu/cli] Adapt to the latest ufoLib2. 739*e1fe3e4aSElliott Hughes- [subset] Support subsetting SVG table and remove it from the list of drop by default tables (#534). 740*e1fe3e4aSElliott Hughes- [subset] add ``--pretty-svg`` option to pretty print SVG table contents (#2452). 741*e1fe3e4aSElliott Hughes- [merge] Support merging ``CFF`` tables (CID-keyed ``CFF`` is still not supported) (#2447). 742*e1fe3e4aSElliott Hughes- [merge] Support ``--output-file`` (#2447). 743*e1fe3e4aSElliott Hughes- [docs] Split table docs into individual pages (#2444). 744*e1fe3e4aSElliott Hughes- [feaLib] Forbid empty classes (#2446). 745*e1fe3e4aSElliott Hughes- [docs] Improve documentation for ``fontTools.ttLib.ttFont`` (#2442). 746*e1fe3e4aSElliott Hughes 747*e1fe3e4aSElliott Hughes4.28.1 (released 2021-11-08) 748*e1fe3e4aSElliott Hughes---------------------------- 749*e1fe3e4aSElliott Hughes 750*e1fe3e4aSElliott Hughes- [subset] Fixed AttributeError while traversing a color glyph's Paint graph when there is no 751*e1fe3e4aSElliott Hughes LayerList, which is optional (#2441). 752*e1fe3e4aSElliott Hughes 753*e1fe3e4aSElliott Hughes4.28.0 (released 2021-11-05) 754*e1fe3e4aSElliott Hughes---------------------------- 755*e1fe3e4aSElliott Hughes 756*e1fe3e4aSElliott Hughes- Dropped support for EOL Python 3.6, require Python 3.7 (#2417). 757*e1fe3e4aSElliott Hughes- [ufoLib/glifLib] Make filename-clash checks faster by using a set instead of a list (#2422). 758*e1fe3e4aSElliott Hughes- [subset] Don't crash if optional ClipList and LayerList are ``None`` (empty) (#2424, 2439). 759*e1fe3e4aSElliott Hughes- [OT-SVG] Removed support for old deprecated version 1 and embedded color palettes, 760*e1fe3e4aSElliott Hughes which were never officially part of the OpenType SVG spec. Upon compile, reuse offsets 761*e1fe3e4aSElliott Hughes to SVG documents that are identical (#2430). 762*e1fe3e4aSElliott Hughes- [feaLib] Added support for Variable Feature File syntax. This is experimental and subject 763*e1fe3e4aSElliott Hughes to change until it is finalized in the Adobe FEA spec (#2432). 764*e1fe3e4aSElliott Hughes- [unicodedata] Update Scripts/ScriptExtensions/Blocks to UnicodeData 14.0 (#2437). 765*e1fe3e4aSElliott Hughes 766*e1fe3e4aSElliott Hughes4.27.1 (released 2021-09-23) 767*e1fe3e4aSElliott Hughes---------------------------- 768*e1fe3e4aSElliott Hughes 769*e1fe3e4aSElliott Hughes- [otlLib] Fixed error when chained contextual lookup builder overflows (#2404, #2411). 770*e1fe3e4aSElliott Hughes- [bezierTools] Fixed two floating-point bugs: one when computing `t` for a point 771*e1fe3e4aSElliott Hughes lying on an almost horizontal/vertical line; another when computing the intersection 772*e1fe3e4aSElliott Hughes point between a curve and a line (#2413). 773*e1fe3e4aSElliott Hughes 774*e1fe3e4aSElliott Hughes4.27.0 (released 2021-09-14) 775*e1fe3e4aSElliott Hughes---------------------------- 776*e1fe3e4aSElliott Hughes 777*e1fe3e4aSElliott Hughes- [ttLib/otTables] Cleaned up virtual GID handling: allow virtual GIDs in ``Coverage`` 778*e1fe3e4aSElliott Hughes and ``ClassDef`` readers; removed unused ``allowVID`` argument from ``TTFont`` 779*e1fe3e4aSElliott Hughes constructor, and ``requireReal`` argument in ``TTFont.getGlyphID`` method. 780*e1fe3e4aSElliott Hughes Make ``TTFont.setGlyphOrder`` clear reverse glyphOrder map, and assume ``glyphOrder`` 781*e1fe3e4aSElliott Hughes internal attribute is never modified outside setGlyphOrder; added ``TTFont.getGlyphNameMany`` 782*e1fe3e4aSElliott Hughes and ``getGlyphIDMany`` (#1536, #1654, #2334, #2398). 783*e1fe3e4aSElliott Hughes- [py23] Dropped internal use of ``fontTools.py23`` module to fix deprecation warnings 784*e1fe3e4aSElliott Hughes in client code that imports from fontTools (#2234, #2399, #2400). 785*e1fe3e4aSElliott Hughes- [subset] Fix subsetting COLRv1 clip boxes when font is loaded lazily (#2408). 786*e1fe3e4aSElliott Hughes 787*e1fe3e4aSElliott Hughes4.26.2 (released 2021-08-09) 788*e1fe3e4aSElliott Hughes---------------------------- 789*e1fe3e4aSElliott Hughes 790*e1fe3e4aSElliott Hughes- [otTables] Added missing ``CompositeMode.PLUS`` operator (#2390). 791*e1fe3e4aSElliott Hughes 792*e1fe3e4aSElliott Hughes4.26.1 (released 2021-08-03) 793*e1fe3e4aSElliott Hughes---------------------------- 794*e1fe3e4aSElliott Hughes 795*e1fe3e4aSElliott Hughes- [transform] Added ``transformVector`` and ``transformVectors`` methods to the 796*e1fe3e4aSElliott Hughes ``Transform`` class. Similar to ``transformPoint`` but ignore the translation 797*e1fe3e4aSElliott Hughes part (#2386). 798*e1fe3e4aSElliott Hughes 799*e1fe3e4aSElliott Hughes4.26.0 (released 2021-08-03) 800*e1fe3e4aSElliott Hughes---------------------------- 801*e1fe3e4aSElliott Hughes 802*e1fe3e4aSElliott Hughes- [xmlWriter] Default to ``"\n"`` for ``newlinestr`` instead of platform-specific 803*e1fe3e4aSElliott Hughes ``os.linesep`` (#2384). 804*e1fe3e4aSElliott Hughes- [otData] Define COLRv1 ClipList and ClipBox (#2379). 805*e1fe3e4aSElliott Hughes- [removeOverlaps/instancer] Added --ignore-overlap-errors option to work around 806*e1fe3e4aSElliott Hughes Skia PathOps.Simplify bug (#2382, #2363, google/fonts#3365). 807*e1fe3e4aSElliott Hughes- NOTE: This will be the last version to support Python 3.6. FontTools will require 808*e1fe3e4aSElliott Hughes Python 3.7 or above from the next release (#2350) 809*e1fe3e4aSElliott Hughes 810*e1fe3e4aSElliott Hughes4.25.2 (released 2021-07-26) 811*e1fe3e4aSElliott Hughes---------------------------- 812*e1fe3e4aSElliott Hughes 813*e1fe3e4aSElliott Hughes- [COLRv1] Various changes to sync with the latest CORLv1 draft spec. In particular: 814*e1fe3e4aSElliott Hughes define COLR.VarIndexMap, remove/inline ColorIndex struct, add VarIndexBase to ``PaintVar*`` tables (#2372); 815*e1fe3e4aSElliott Hughes add reduced-precicion specialized transform Paints; 816*e1fe3e4aSElliott Hughes define Angle as fraction of half circle encoded as F2Dot14; 817*e1fe3e4aSElliott Hughes use FWORD (int16) for all Paint center coordinates; 818*e1fe3e4aSElliott Hughes change PaintTransform to have an offset to Affine2x3; 819*e1fe3e4aSElliott Hughes- [ttLib] when importing XML, only set sfntVersion if the font has no reader and is empty (#2376) 820*e1fe3e4aSElliott Hughes 821*e1fe3e4aSElliott Hughes4.25.1 (released 2021-07-16) 822*e1fe3e4aSElliott Hughes---------------------------- 823*e1fe3e4aSElliott Hughes 824*e1fe3e4aSElliott Hughes- [ttGlyphPen] Fixed bug in ``TTGlyphPointPen``, whereby open contours (i.e. starting 825*e1fe3e4aSElliott Hughes with segmentType "move") would throw ``NotImplementedError``. They are now treated 826*e1fe3e4aSElliott Hughes as if they are closed, like with the ``TTGlyphPen`` (#2364, #2366). 827*e1fe3e4aSElliott Hughes 828*e1fe3e4aSElliott Hughes4.25.0 (released 2021-07-05) 829*e1fe3e4aSElliott Hughes---------------------------- 830*e1fe3e4aSElliott Hughes 831*e1fe3e4aSElliott Hughes- [tfmLib] Added new library for parsing TeX Font Metric (TFM) files (#2354). 832*e1fe3e4aSElliott Hughes- [TupleVariation] Make shared tuples order deterministic on python < 3.7 where 833*e1fe3e4aSElliott Hughes Counter (subclass of dict) doesn't remember insertion order (#2351, #2353). 834*e1fe3e4aSElliott Hughes- [otData] Renamed COLRv1 structs to remove 'v1' suffix and match the updated draft 835*e1fe3e4aSElliott Hughes spec: 'LayerV1List' -> 'LayerList', 'BaseGlyphV1List' -> 'BaseGlyphList', 836*e1fe3e4aSElliott Hughes 'BaseGlyphV1Record' -> 'BaseGlyphPaintRecord' (#2346). 837*e1fe3e4aSElliott Hughes Added 8 new ``PaintScale*`` tables: with/without centers, uniform vs non-uniform. 838*e1fe3e4aSElliott Hughes Added ``*AroundCenter`` variants to ``PaintRotate`` and ``PaintSkew``: the default 839*e1fe3e4aSElliott Hughes versions no longer have centerX/Y, but default to origin. 840*e1fe3e4aSElliott Hughes ``PaintRotate``, ``PaintSkew`` and ``PaintComposite`` formats were re-numbered. 841*e1fe3e4aSElliott Hughes NOTE: these are breaking changes; clients using the experimental COLRv1 API will 842*e1fe3e4aSElliott Hughes have to be updated (#2348). 843*e1fe3e4aSElliott Hughes- [pointPens] Allow ``GuessSmoothPointPen`` to accept a tolerance. Fixed call to 844*e1fe3e4aSElliott Hughes ``math.atan2`` with x/y parameters inverted. Sync the code with fontPens (#2344). 845*e1fe3e4aSElliott Hughes- [post] Fixed parsing ``post`` table format 2.0 when it contains extra garbage 846*e1fe3e4aSElliott Hughes at the end of the stringData array (#2314). 847*e1fe3e4aSElliott Hughes- [subset] drop empty features unless 'size' with FeatureParams table (#2324). 848*e1fe3e4aSElliott Hughes- [otlLib] Added ``otlLib.optimize`` module; added GPOS compaction algorithm. 849*e1fe3e4aSElliott Hughes The compaction can be run on existing fonts with ``fonttools otlLib.optimize`` 850*e1fe3e4aSElliott Hughes or using the snippet ``compact_gpos.py``. There's experimental support for 851*e1fe3e4aSElliott Hughes compacting fonts at compilation time using an environment variable, but that 852*e1fe3e4aSElliott Hughes might be removed later (#2326). 853*e1fe3e4aSElliott Hughes 854*e1fe3e4aSElliott Hughes4.24.4 (released 2021-05-25) 855*e1fe3e4aSElliott Hughes---------------------------- 856*e1fe3e4aSElliott Hughes 857*e1fe3e4aSElliott Hughes- [subset/instancer] Fixed ``AttributeError`` when instantiating a VF that 858*e1fe3e4aSElliott Hughes contains GPOS ValueRecords with ``Device`` tables but without the respective 859*e1fe3e4aSElliott Hughes non-Device values (e.g. ``XAdvDevice`` without ``XAdvance``). When not 860*e1fe3e4aSElliott Hughes explicitly set, the latter are assumed to be 0 (#2323). 861*e1fe3e4aSElliott Hughes 862*e1fe3e4aSElliott Hughes4.24.3 (released 2021-05-20) 863*e1fe3e4aSElliott Hughes---------------------------- 864*e1fe3e4aSElliott Hughes 865*e1fe3e4aSElliott Hughes- [otTables] Fixed ``AttributeError`` in methods that split LigatureSubst, 866*e1fe3e4aSElliott Hughes MultipleSubst and AlternateSubst subtables when an offset overflow occurs. 867*e1fe3e4aSElliott Hughes The ``Format`` attribute was removed in v4.22.0 (#2319). 868*e1fe3e4aSElliott Hughes 869*e1fe3e4aSElliott Hughes4.24.2 (released 2021-05-20) 870*e1fe3e4aSElliott Hughes---------------------------- 871*e1fe3e4aSElliott Hughes 872*e1fe3e4aSElliott Hughes- [ttGlyphPen] Fixed typing annotation of TTGlyphPen glyphSet parameter (#2315). 873*e1fe3e4aSElliott Hughes- Fixed two instances of DeprecationWarning: invalid escape sequence (#2311). 874*e1fe3e4aSElliott Hughes 875*e1fe3e4aSElliott Hughes4.24.1 (released 2021-05-20) 876*e1fe3e4aSElliott Hughes---------------------------- 877*e1fe3e4aSElliott Hughes 878*e1fe3e4aSElliott Hughes- [subset] Fixed AttributeError when SinglePos subtable has None Value (ValueFormat 0) 879*e1fe3e4aSElliott Hughes (#2312, #2313). 880*e1fe3e4aSElliott Hughes 881*e1fe3e4aSElliott Hughes4.24.0 (released 2021-05-17) 882*e1fe3e4aSElliott Hughes---------------------------- 883*e1fe3e4aSElliott Hughes 884*e1fe3e4aSElliott Hughes- [pens] Add ``ttGlyphPen.TTGlyphPointPen`` similar to ``TTGlyphPen`` (#2205). 885*e1fe3e4aSElliott Hughes 886*e1fe3e4aSElliott Hughes4.23.1 (released 2021-05-14) 887*e1fe3e4aSElliott Hughes---------------------------- 888*e1fe3e4aSElliott Hughes 889*e1fe3e4aSElliott Hughes- [subset] Fix ``KeyError`` after subsetting ``COLR`` table that initially contains 890*e1fe3e4aSElliott Hughes both v0 and v1 color glyphs when the subset only requested v1 glyphs; we were 891*e1fe3e4aSElliott Hughes not pruning the v0 portion of the table (#2308). 892*e1fe3e4aSElliott Hughes- [colorLib] Set ``LayerV1List`` attribute to ``None`` when empty, it's optional 893*e1fe3e4aSElliott Hughes in CORLv1 (#2308). 894*e1fe3e4aSElliott Hughes 895*e1fe3e4aSElliott Hughes4.23.0 (released 2021-05-13) 896*e1fe3e4aSElliott Hughes---------------------------- 897*e1fe3e4aSElliott Hughes 898*e1fe3e4aSElliott Hughes- [designspaceLib] Allow to use ``\\UNC`` absolute paths on Windows (#2299, #2306). 899*e1fe3e4aSElliott Hughes- [varLib.merger] Fixed bug where ``VarLibMergeError`` was raised with incorrect 900*e1fe3e4aSElliott Hughes parameters (#2300). 901*e1fe3e4aSElliott Hughes- [feaLib] Allow substituting a glyph class with ``NULL`` to delete multiple glyphs 902*e1fe3e4aSElliott Hughes (#2303). 903*e1fe3e4aSElliott Hughes- [glyf] Fixed ``NameError`` exception in ``getPhantomPoints`` (#2295, #2305). 904*e1fe3e4aSElliott Hughes- [removeOverlaps] Retry pathops.simplify after rounding path coordinates to integers 905*e1fe3e4aSElliott Hughes if it fails the first time using floats, to work around a rare and hard to debug 906*e1fe3e4aSElliott Hughes Skia bug (#2288). 907*e1fe3e4aSElliott Hughes- [varLib] Added support for building, reading, writing and optimizing 32-bit 908*e1fe3e4aSElliott Hughes ``ItemVariationStore`` as used in COLRv1 table (#2285). 909*e1fe3e4aSElliott Hughes- [otBase/otConverters] Add array readers/writers for int types (#2285). 910*e1fe3e4aSElliott Hughes- [feaLib] Allow more than one lookahead glyph/class in contextual positioning with 911*e1fe3e4aSElliott Hughes "value at end" (#2293, #2294). 912*e1fe3e4aSElliott Hughes- [COLRv1] Default varIdx should be 0xFFFFFFFF (#2297, #2298). 913*e1fe3e4aSElliott Hughes- [pens] Make RecordingPointPen actually pass on identifiers; replace asserts with 914*e1fe3e4aSElliott Hughes explicit ``PenError`` exception (#2284). 915*e1fe3e4aSElliott Hughes- [mutator] Round lsb for CF2 fonts as well (#2286). 916*e1fe3e4aSElliott Hughes 917*e1fe3e4aSElliott Hughes4.22.1 (released 2021-04-26) 918*e1fe3e4aSElliott Hughes---------------------------- 919*e1fe3e4aSElliott Hughes 920*e1fe3e4aSElliott Hughes- [feaLib] Skip references to named lookups if the lookup block definition 921*e1fe3e4aSElliott Hughes is empty, similarly to makeotf. This also fixes an ``AttributeError`` while 922*e1fe3e4aSElliott Hughes generating ``aalt`` feature (#2276, #2277). 923*e1fe3e4aSElliott Hughes- [subset] Fixed bug with ``--no-hinting`` implementation for Device tables (#2272, 924*e1fe3e4aSElliott Hughes #2275). The previous code was alwyas dropping Device tables if no-hinting was 925*e1fe3e4aSElliott Hughes requested, but some Device tables (DeltaFormat=0x8000) are also used to encode 926*e1fe3e4aSElliott Hughes variation indices and need to be retained. 927*e1fe3e4aSElliott Hughes- [otBase] Fixed bug in getting the ValueRecordSize when decompiling ``MVAR`` 928*e1fe3e4aSElliott Hughes table with ``lazy=True`` (#2273, #2274). 929*e1fe3e4aSElliott Hughes- [varLib/glyf/gvar] Optimized and simplified ``GlyphCoordinates`` and 930*e1fe3e4aSElliott Hughes ``TupleVariation`` classes, use ``bytearray`` where possible, refactored 931*e1fe3e4aSElliott Hughes phantom-points calculations. We measured about 30% speedup in total time 932*e1fe3e4aSElliott Hughes of loading master ttfs, building gvar, and saving (#2261, #2266). 933*e1fe3e4aSElliott Hughes- [subset] Fixed ``AssertionError`` while pruning unused CPAL palettes when 934*e1fe3e4aSElliott Hughes ``0xFFFF`` is present (#2257, #2259). 935*e1fe3e4aSElliott Hughes 936*e1fe3e4aSElliott Hughes4.22.0 (released 2021-04-01) 937*e1fe3e4aSElliott Hughes---------------------------- 938*e1fe3e4aSElliott Hughes 939*e1fe3e4aSElliott Hughes- [ttLib] Remove .Format from Coverage, ClassDef, SingleSubst, LigatureSubst, 940*e1fe3e4aSElliott Hughes AlternateSubst, MultipleSubst (#2238). 941*e1fe3e4aSElliott Hughes ATTENTION: This will change your TTX dumps! 942*e1fe3e4aSElliott Hughes- [misc.arrayTools] move Vector to its own submodule, and rewrite as a tuple 943*e1fe3e4aSElliott Hughes subclass (#2201). 944*e1fe3e4aSElliott Hughes- [docs] Added a terminology section for varLib (#2209). 945*e1fe3e4aSElliott Hughes- [varLib] Move rounding to VariationModel, to avoid error accumulation from 946*e1fe3e4aSElliott Hughes multiple deltas (#2214) 947*e1fe3e4aSElliott Hughes- [varLib] Explain merge errors in more human-friendly terms (#2223, #2226) 948*e1fe3e4aSElliott Hughes- [otlLib] Correct some documentation (#2225) 949*e1fe3e4aSElliott Hughes- [varLib/otlLib] Allow merging into VariationFont without first saving GPOS 950*e1fe3e4aSElliott Hughes PairPos2 (#2229) 951*e1fe3e4aSElliott Hughes- [subset] Improve PairPosFormat2 subsetting (#2221) 952*e1fe3e4aSElliott Hughes- [ttLib] TTFont.save: create file on disk as late as possible (#2253) 953*e1fe3e4aSElliott Hughes- [cffLib] Add missing CFF2 dict operators LanguageGroup and ExpansionFactor 954*e1fe3e4aSElliott Hughes (#2249) 955*e1fe3e4aSElliott Hughes ATTENTION: This will change your TTX dumps! 956*e1fe3e4aSElliott Hughes 957*e1fe3e4aSElliott Hughes4.21.1 (released 2021-02-26) 958*e1fe3e4aSElliott Hughes---------------------------- 959*e1fe3e4aSElliott Hughes 960*e1fe3e4aSElliott Hughes- [pens] Reverted breaking change that turned ``AbstractPen`` and ``AbstractPointPen`` 961*e1fe3e4aSElliott Hughes into abstract base classes (#2164, #2198). 962*e1fe3e4aSElliott Hughes 963*e1fe3e4aSElliott Hughes4.21.0 (released 2021-02-26) 964*e1fe3e4aSElliott Hughes---------------------------- 965*e1fe3e4aSElliott Hughes 966*e1fe3e4aSElliott Hughes- [feaLib] Indent anchor statements in ``asFea()`` to make them more legible and 967*e1fe3e4aSElliott Hughes diff-able (#2193). 968*e1fe3e4aSElliott Hughes- [pens] Turn ``AbstractPen`` and ``AbstractPointPen`` into abstract base classes 969*e1fe3e4aSElliott Hughes (#2164). 970*e1fe3e4aSElliott Hughes- [feaLib] Added support for parsing and building ``STAT`` table from AFDKO feature 971*e1fe3e4aSElliott Hughes files (#2039). 972*e1fe3e4aSElliott Hughes- [instancer] Added option to update name table of generated instance using ``STAT`` 973*e1fe3e4aSElliott Hughes table's axis values (#2189). 974*e1fe3e4aSElliott Hughes- [bezierTools] Added functions to compute bezier point-at-time, as well as line-line, 975*e1fe3e4aSElliott Hughes curve-line and curve-curve intersections (#2192). 976*e1fe3e4aSElliott Hughes 977*e1fe3e4aSElliott Hughes4.20.0 (released 2021-02-15) 978*e1fe3e4aSElliott Hughes---------------------------- 979*e1fe3e4aSElliott Hughes 980*e1fe3e4aSElliott Hughes- [COLRv1] Added ``unbuildColrV1`` to deconstruct COLRv1 otTables to raw json-able 981*e1fe3e4aSElliott Hughes data structure; it does the reverse of ``buildColrV1`` (#2171). 982*e1fe3e4aSElliott Hughes- [feaLib] Allow ``sub X by NULL`` sequence to delete a glyph (#2170). 983*e1fe3e4aSElliott Hughes- [arrayTools] Fixed ``Vector`` division (#2173). 984*e1fe3e4aSElliott Hughes- [COLRv1] Define new ``PaintSweepGradient`` (#2172). 985*e1fe3e4aSElliott Hughes- [otTables] Moved ``Paint.Format`` enum class outside of ``Paint`` class definition, 986*e1fe3e4aSElliott Hughes now named ``PaintFormat``. It was clashing with paint instance ``Format`` attribute 987*e1fe3e4aSElliott Hughes and thus was breaking lazy load of COLR table which relies on magic ``__getattr__`` 988*e1fe3e4aSElliott Hughes (#2175). 989*e1fe3e4aSElliott Hughes- [COLRv1] Replace hand-coded builder functions with otData-driven dynamic 990*e1fe3e4aSElliott Hughes implementation (#2181). 991*e1fe3e4aSElliott Hughes- [COLRv1] Define additional static (non-variable) Paint formats (#2181). 992*e1fe3e4aSElliott Hughes- [subset] Added support for subsetting COLR v1 and CPAL tables (#2174, #2177). 993*e1fe3e4aSElliott Hughes- [fontBuilder] Allow ``setupFvar`` to optionally take ``designspaceLib.AxisDescriptor`` 994*e1fe3e4aSElliott Hughes objects. Added new ``setupAvar`` method. Support localised names for axes and 995*e1fe3e4aSElliott Hughes named instances (#2185). 996*e1fe3e4aSElliott Hughes 997*e1fe3e4aSElliott Hughes4.19.1 (released 2021-01-28) 998*e1fe3e4aSElliott Hughes---------------------------- 999*e1fe3e4aSElliott Hughes 1000*e1fe3e4aSElliott Hughes- [woff2] An initial off-curve point with an overlap flag now stays an off-curve 1001*e1fe3e4aSElliott Hughes point after compression. 1002*e1fe3e4aSElliott Hughes 1003*e1fe3e4aSElliott Hughes4.19.0 (released 2021-01-25) 1004*e1fe3e4aSElliott Hughes---------------------------- 1005*e1fe3e4aSElliott Hughes 1006*e1fe3e4aSElliott Hughes- [codecs] Handle ``errors`` parameter different from 'strict' for the custom 1007*e1fe3e4aSElliott Hughes extended mac encodings (#2137, #2132). 1008*e1fe3e4aSElliott Hughes- [featureVars] Raise better error message when a script is missing the required 1009*e1fe3e4aSElliott Hughes default language system (#2154). 1010*e1fe3e4aSElliott Hughes- [COLRv1] Avoid abrupt change caused by rounding ``PaintRadialGradient.c0`` when 1011*e1fe3e4aSElliott Hughes the start circle almost touches the end circle's perimeter (#2148). 1012*e1fe3e4aSElliott Hughes- [COLRv1] Support building unlimited lists of paints as 255-ary trees of 1013*e1fe3e4aSElliott Hughes ``PaintColrLayers`` tables (#2153). 1014*e1fe3e4aSElliott Hughes- [subset] Prune redundant format-12 cmap subtables when all non-BMP characters 1015*e1fe3e4aSElliott Hughes are dropped (#2146). 1016*e1fe3e4aSElliott Hughes- [basePen] Raise ``MissingComponentError`` instead of bare ``KeyError`` when a 1017*e1fe3e4aSElliott Hughes referenced component is missing (#2145). 1018*e1fe3e4aSElliott Hughes 1019*e1fe3e4aSElliott Hughes4.18.2 (released 2020-12-16) 1020*e1fe3e4aSElliott Hughes---------------------------- 1021*e1fe3e4aSElliott Hughes 1022*e1fe3e4aSElliott Hughes- [COLRv1] Implemented ``PaintTranslate`` paint format (#2129). 1023*e1fe3e4aSElliott Hughes- [varLib.cff] Fixed unbound local variable error (#1787). 1024*e1fe3e4aSElliott Hughes- [otlLib] Don't crash when creating OpenType class definitions if some glyphs 1025*e1fe3e4aSElliott Hughes occur more than once (#2125). 1026*e1fe3e4aSElliott Hughes 1027*e1fe3e4aSElliott Hughes4.18.1 (released 2020-12-09) 1028*e1fe3e4aSElliott Hughes---------------------------- 1029*e1fe3e4aSElliott Hughes 1030*e1fe3e4aSElliott Hughes- [colorLib] Speed optimization for ``LayerV1ListBuilder`` (#2119). 1031*e1fe3e4aSElliott Hughes- [mutator] Fixed missing tab in ``interpolate_cff2_metrics`` (0957dc7a). 1032*e1fe3e4aSElliott Hughes 1033*e1fe3e4aSElliott Hughes4.18.0 (released 2020-12-04) 1034*e1fe3e4aSElliott Hughes---------------------------- 1035*e1fe3e4aSElliott Hughes 1036*e1fe3e4aSElliott Hughes- [COLRv1] Update to latest draft: added ``PaintRotate`` and ``PaintSkew`` (#2118). 1037*e1fe3e4aSElliott Hughes- [woff2] Support new ``brotlicffi`` bindings for PyPy (#2117). 1038*e1fe3e4aSElliott Hughes- [glifLib] Added ``expectContentsFile`` parameter to ``GlyphSet``, for use when 1039*e1fe3e4aSElliott Hughes reading existing UFOs, to comply with the specification stating that a 1040*e1fe3e4aSElliott Hughes ``contents.plist`` file must exist in a glyph set (#2114). 1041*e1fe3e4aSElliott Hughes- [subset] Allow ``LangSys`` tags in ``--layout-scripts`` option (#2112). For example: 1042*e1fe3e4aSElliott Hughes ``--layout-scripts=arab.dflt,arab.URD,latn``; this will keep ``DefaultLangSys`` 1043*e1fe3e4aSElliott Hughes and ``URD`` language for ``arab`` script, and all languages for ``latn`` script. 1044*e1fe3e4aSElliott Hughes- [varLib.interpolatable] Allow UFOs to be checked; report open paths, non existant 1045*e1fe3e4aSElliott Hughes glyphs; add a ``--json`` option to produce a machine-readable list of 1046*e1fe3e4aSElliott Hughes incompatibilities 1047*e1fe3e4aSElliott Hughes- [pens] Added ``QuartzPen`` to create ``CGPath`` from glyph outlines on macOS. 1048*e1fe3e4aSElliott Hughes Requires pyobjc (#2107). 1049*e1fe3e4aSElliott Hughes- [feaLib] You can export ``FONTTOOLS_LOOKUP_DEBUGGING=1`` to enable feature file 1050*e1fe3e4aSElliott Hughes debugging info stored in ``Debg`` table (#2106). 1051*e1fe3e4aSElliott Hughes- [otlLib] Build more efficient format 1 and format 2 contextual lookups whenever 1052*e1fe3e4aSElliott Hughes possible (#2101). 1053*e1fe3e4aSElliott Hughes 1054*e1fe3e4aSElliott Hughes4.17.1 (released 2020-11-16) 1055*e1fe3e4aSElliott Hughes---------------------------- 1056*e1fe3e4aSElliott Hughes 1057*e1fe3e4aSElliott Hughes- [colorLib] Fixed regression in 4.17.0 when building COLR v0 table; when color 1058*e1fe3e4aSElliott Hughes layers are stored in UFO lib plist, we can't distinguish tuples from lists so 1059*e1fe3e4aSElliott Hughes we need to accept either types (e5439eb9, googlefonts/ufo2ft/issues#426). 1060*e1fe3e4aSElliott Hughes 1061*e1fe3e4aSElliott Hughes4.17.0 (released 2020-11-12) 1062*e1fe3e4aSElliott Hughes---------------------------- 1063*e1fe3e4aSElliott Hughes 1064*e1fe3e4aSElliott Hughes- [colorLib/otData] Updated to latest draft ``COLR`` v1 spec (#2092). 1065*e1fe3e4aSElliott Hughes- [svgLib] Fixed parsing error when arc commands' boolean flags are not separated 1066*e1fe3e4aSElliott Hughes by space or comma (#2094). 1067*e1fe3e4aSElliott Hughes- [varLib] Interpret empty non-default glyphs as 'missing', if the default glyph is 1068*e1fe3e4aSElliott Hughes not empty (#2082). 1069*e1fe3e4aSElliott Hughes- [feaLib.builder] Only stash lookup location for ``Debg`` if ``Builder.buildLookups_`` 1070*e1fe3e4aSElliott Hughes has cooperated (#2065, #2067). 1071*e1fe3e4aSElliott Hughes- [varLib] Fixed bug in VarStore optimizer (#2073, #2083). 1072*e1fe3e4aSElliott Hughes- [varLib] Add designspace lib key for custom feavar feature tag (#2080). 1073*e1fe3e4aSElliott Hughes- Add HashPointPen adapted from psautohint. With this pen, a hash value of a glyph 1074*e1fe3e4aSElliott Hughes can be computed, which can later be used to detect glyph changes (#2005). 1075*e1fe3e4aSElliott Hughes 1076*e1fe3e4aSElliott Hughes4.16.1 (released 2020-10-05) 1077*e1fe3e4aSElliott Hughes---------------------------- 1078*e1fe3e4aSElliott Hughes 1079*e1fe3e4aSElliott Hughes- [varLib.instancer] Fixed ``TypeError`` exception when instantiating a VF with 1080*e1fe3e4aSElliott Hughes a GSUB table 1.1 in which ``FeatureVariations`` attribute is present but set to 1081*e1fe3e4aSElliott Hughes ``None`` -- indicating that optional ``FeatureVariations`` is missing (#2077). 1082*e1fe3e4aSElliott Hughes- [glifLib] Make ``x`` and ``y`` attributes of the ``point`` element required 1083*e1fe3e4aSElliott Hughes even when validation is turned off, and raise a meaningful ``GlifLibError`` 1084*e1fe3e4aSElliott Hughes message when that happens (#2075). 1085*e1fe3e4aSElliott Hughes 1086*e1fe3e4aSElliott Hughes4.16.0 (released 2020-09-30) 1087*e1fe3e4aSElliott Hughes---------------------------- 1088*e1fe3e4aSElliott Hughes 1089*e1fe3e4aSElliott Hughes- [removeOverlaps] Added new module and ``removeOverlaps`` function that merges 1090*e1fe3e4aSElliott Hughes overlapping contours and components in TrueType glyphs. It requires the 1091*e1fe3e4aSElliott Hughes `skia-pathops <https://github.com/fonttools/skia-pathops>`__ module. 1092*e1fe3e4aSElliott Hughes Note that removing overlaps invalidates the TrueType hinting (#2068). 1093*e1fe3e4aSElliott Hughes- [varLib.instancer] Added ``--remove-overlaps`` command-line option. 1094*e1fe3e4aSElliott Hughes The ``overlap`` option in ``instantiateVariableFont`` now takes an ``OverlapMode`` 1095*e1fe3e4aSElliott Hughes enum: 0: KEEP_AND_DONT_SET_FLAGS, 1: KEEP_AND_SET_FLAGS (default), and 2: REMOVE. 1096*e1fe3e4aSElliott Hughes The latter is equivalent to calling ``removeOverlaps`` on the generated static 1097*e1fe3e4aSElliott Hughes instance. The option continues to accept ``bool`` value for backward compatibility. 1098*e1fe3e4aSElliott Hughes 1099*e1fe3e4aSElliott Hughes 1100*e1fe3e4aSElliott Hughes4.15.0 (released 2020-09-21) 1101*e1fe3e4aSElliott Hughes---------------------------- 1102*e1fe3e4aSElliott Hughes 1103*e1fe3e4aSElliott Hughes- [plistlib] Added typing annotations to plistlib module. Set up mypy static 1104*e1fe3e4aSElliott Hughes typechecker to run automatically on CI (#2061). 1105*e1fe3e4aSElliott Hughes- [ttLib] Implement private ``Debg`` table, a reverse-DNS namespaced JSON dict. 1106*e1fe3e4aSElliott Hughes- [feaLib] Optionally add an entry into the ``Debg`` table with the original 1107*e1fe3e4aSElliott Hughes lookup name (if any), feature name / script / language combination (if any), 1108*e1fe3e4aSElliott Hughes and original source filename and line location. Annotate the ttx output for 1109*e1fe3e4aSElliott Hughes a lookup with the information from the Debg table (#2052). 1110*e1fe3e4aSElliott Hughes- [sfnt] Disabled checksum checking by default in ``SFNTReader`` (#2058). 1111*e1fe3e4aSElliott Hughes- [Docs] Document ``mtiLib`` module (#2027). 1112*e1fe3e4aSElliott Hughes- [varLib.interpolatable] Added checks for contour node count and operation type 1113*e1fe3e4aSElliott Hughes of each node (#2054). 1114*e1fe3e4aSElliott Hughes- [ttLib] Added API to register custom table packer/unpacker classes (#2055). 1115*e1fe3e4aSElliott Hughes 1116*e1fe3e4aSElliott Hughes4.14.0 (released 2020-08-19) 1117*e1fe3e4aSElliott Hughes---------------------------- 1118*e1fe3e4aSElliott Hughes 1119*e1fe3e4aSElliott Hughes- [feaLib] Allow anonymous classes in LookupFlags definitions (#2037). 1120*e1fe3e4aSElliott Hughes- [Docs] Better document DesignSpace rules processing order (#2041). 1121*e1fe3e4aSElliott Hughes- [ttLib] Fixed 21-year old bug in ``maxp.maxComponentDepth`` calculation (#2044, 1122*e1fe3e4aSElliott Hughes #2045). 1123*e1fe3e4aSElliott Hughes- [varLib.models] Fixed misspelled argument name in CLI entry point (81d0042a). 1124*e1fe3e4aSElliott Hughes- [subset] When subsetting GSUB v1.1, fixed TypeError by checking whether the 1125*e1fe3e4aSElliott Hughes optional FeatureVariations table is present (e63ecc5b). 1126*e1fe3e4aSElliott Hughes- [Snippets] Added snippet to show how to decompose glyphs in a TTF (#2030). 1127*e1fe3e4aSElliott Hughes- [otlLib] Generate GSUB type 5 and GPOS type 7 contextual lookups where appropriate 1128*e1fe3e4aSElliott Hughes (#2016). 1129*e1fe3e4aSElliott Hughes 1130*e1fe3e4aSElliott Hughes4.13.0 (released 2020-07-10) 1131*e1fe3e4aSElliott Hughes---------------------------- 1132*e1fe3e4aSElliott Hughes 1133*e1fe3e4aSElliott Hughes- [feaLib/otlLib] Moved lookup subtable builders from feaLib to otlLib; refactored 1134*e1fe3e4aSElliott Hughes some common code (#2004, #2007). 1135*e1fe3e4aSElliott Hughes- [docs] Document otlLib module (#2009). 1136*e1fe3e4aSElliott Hughes- [glifLib] Fixed bug with some UFO .glif filenames clashing on case-insensitive 1137*e1fe3e4aSElliott Hughes filesystems (#2001, #2002). 1138*e1fe3e4aSElliott Hughes- [colorLib] Updated COLRv1 implementation following changes in the draft spec: 1139*e1fe3e4aSElliott Hughes (#2008, googlefonts/colr-gradients-spec#24). 1140*e1fe3e4aSElliott Hughes 1141*e1fe3e4aSElliott Hughes4.12.1 (released 2020-06-16) 1142*e1fe3e4aSElliott Hughes---------------------------- 1143*e1fe3e4aSElliott Hughes 1144*e1fe3e4aSElliott Hughes- [_n_a_m_e] Fixed error in ``addMultilingualName`` with one-character names. 1145*e1fe3e4aSElliott Hughes Only attempt to recovered malformed UTF-16 data from a ``bytes`` string, 1146*e1fe3e4aSElliott Hughes not from unicode ``str`` (#1997, #1998). 1147*e1fe3e4aSElliott Hughes 1148*e1fe3e4aSElliott Hughes4.12.0 (released 2020-06-09) 1149*e1fe3e4aSElliott Hughes---------------------------- 1150*e1fe3e4aSElliott Hughes 1151*e1fe3e4aSElliott Hughes- [otlLib/varLib] Ensure that the ``AxisNameID`` in the ``STAT`` and ``fvar`` 1152*e1fe3e4aSElliott Hughes tables is grater than 255 as per OpenType spec (#1985, #1986). 1153*e1fe3e4aSElliott Hughes- [docs] Document more modules in ``fontTools.misc`` package: ``filenames``, 1154*e1fe3e4aSElliott Hughes ``fixedTools``, ``intTools``, ``loggingTools``, ``macCreatorType``, ``macRes``, 1155*e1fe3e4aSElliott Hughes ``plistlib`` (#1981). 1156*e1fe3e4aSElliott Hughes- [OS/2] Don't calculate whole sets of unicode codepoints, use faster and more memory 1157*e1fe3e4aSElliott Hughes efficient ranges and bisect lookups (#1984). 1158*e1fe3e4aSElliott Hughes- [voltLib] Support writing back abstract syntax tree as VOLT data (#1983). 1159*e1fe3e4aSElliott Hughes- [voltLib] Accept DO_NOT_TOUCH_CMAP keyword (#1987). 1160*e1fe3e4aSElliott Hughes- [subset/merge] Fixed a namespace clash involving a private helper class (#1955). 1161*e1fe3e4aSElliott Hughes 1162*e1fe3e4aSElliott Hughes4.11.0 (released 2020-05-28) 1163*e1fe3e4aSElliott Hughes---------------------------- 1164*e1fe3e4aSElliott Hughes 1165*e1fe3e4aSElliott Hughes- [feaLib] Introduced ``includeDir`` parameter on Parser and IncludingLexer to 1166*e1fe3e4aSElliott Hughes explicitly specify the directory to search when ``include()`` statements are 1167*e1fe3e4aSElliott Hughes encountered (#1973). 1168*e1fe3e4aSElliott Hughes- [ufoLib] Silently delete duplicate glyphs within the same kerning group when reading 1169*e1fe3e4aSElliott Hughes groups (#1970). 1170*e1fe3e4aSElliott Hughes- [ttLib] Set version of COLR table when decompiling COLRv1 (commit 9d8a7e2). 1171*e1fe3e4aSElliott Hughes 1172*e1fe3e4aSElliott Hughes4.10.2 (released 2020-05-20) 1173*e1fe3e4aSElliott Hughes---------------------------- 1174*e1fe3e4aSElliott Hughes 1175*e1fe3e4aSElliott Hughes- [sfnt] Fixed ``NameError: SimpleNamespace`` while reading TTC header. The regression 1176*e1fe3e4aSElliott Hughes was introduced with 4.10.1 after removing ``py23`` star import. 1177*e1fe3e4aSElliott Hughes 1178*e1fe3e4aSElliott Hughes4.10.1 (released 2020-05-19) 1179*e1fe3e4aSElliott Hughes---------------------------- 1180*e1fe3e4aSElliott Hughes 1181*e1fe3e4aSElliott Hughes- [sfnt] Make ``SFNTReader`` pickleable even when TTFont is loaded with lazy=True 1182*e1fe3e4aSElliott Hughes option and thus keeps a reference to an external file (#1962, #1967). 1183*e1fe3e4aSElliott Hughes- [feaLib.ast] Restore backward compatibility (broken in 4.10 with #1905) for 1184*e1fe3e4aSElliott Hughes ``ChainContextPosStatement`` and ``ChainContextSubstStatement`` classes. 1185*e1fe3e4aSElliott Hughes Make them accept either list of lookups or list of lists of lookups (#1961). 1186*e1fe3e4aSElliott Hughes- [docs] Document some modules in ``fontTools.misc`` package: ``arrayTools``, 1187*e1fe3e4aSElliott Hughes ``bezierTools`` ``cliTools`` and ``eexec`` (#1956). 1188*e1fe3e4aSElliott Hughes- [ttLib._n_a_m_e] Fixed ``findMultilingualName()`` when name record's ``string`` is 1189*e1fe3e4aSElliott Hughes encoded as bytes sequence (#1963). 1190*e1fe3e4aSElliott Hughes 1191*e1fe3e4aSElliott Hughes4.10.0 (released 2020-05-15) 1192*e1fe3e4aSElliott Hughes---------------------------- 1193*e1fe3e4aSElliott Hughes 1194*e1fe3e4aSElliott Hughes- [varLib] Allow feature variations to be active across the entire space (#1957). 1195*e1fe3e4aSElliott Hughes- [ufoLib] Added support for ``formatVersionMinor`` in UFO's ``fontinfo.plist`` and for 1196*e1fe3e4aSElliott Hughes ``formatMinor`` attribute in GLIF file as discussed in unified-font-object/ufo-spec#78. 1197*e1fe3e4aSElliott Hughes No changes in reading or writing UFOs until an upcoming (non-0) minor update of the 1198*e1fe3e4aSElliott Hughes UFO specification is published (#1786). 1199*e1fe3e4aSElliott Hughes- [merge] Fixed merging fonts with different versions of ``OS/2`` table (#1865, #1952). 1200*e1fe3e4aSElliott Hughes- [subset] Fixed ``AttributeError`` while subsetting ``ContextSubst`` and ``ContextPos`` 1201*e1fe3e4aSElliott Hughes Format 3 subtable (#1879, #1944). 1202*e1fe3e4aSElliott Hughes- [ttLib.table._m_e_t_a] if data happens to be ascii, emit comment in TTX (#1938). 1203*e1fe3e4aSElliott Hughes- [feaLib] Support multiple lookups per glyph position (#1905). 1204*e1fe3e4aSElliott Hughes- [psCharStrings] Use inheritance to avoid repeated code in initializer (#1932). 1205*e1fe3e4aSElliott Hughes- [Doc] Improved documentation for the following modules: ``afmLib`` (#1933), ``agl`` 1206*e1fe3e4aSElliott Hughes (#1934), ``cffLib`` (#1935), ``cu2qu`` (#1937), ``encodings`` (#1940), ``feaLib`` 1207*e1fe3e4aSElliott Hughes (#1941), ``merge`` (#1949). 1208*e1fe3e4aSElliott Hughes- [Doc] Split off developer-centric info to new page, making front page of docs more 1209*e1fe3e4aSElliott Hughes user-focused. List all utilities and sub-modules with brief descriptions. 1210*e1fe3e4aSElliott Hughes Make README more concise and focused (#1914). 1211*e1fe3e4aSElliott Hughes- [otlLib] Add function to build STAT table from high-level description (#1926). 1212*e1fe3e4aSElliott Hughes- [ttLib._n_a_m_e] Add ``findMultilingualName()`` method (#1921). 1213*e1fe3e4aSElliott Hughes- [unicodedata] Update ``RTL_SCRIPTS`` for Unicode 13.0 (#1925). 1214*e1fe3e4aSElliott Hughes- [gvar] Sort ``gvar`` XML output by glyph name, not glyph order (#1907, #1908). 1215*e1fe3e4aSElliott Hughes- [Doc] Added help options to ``fonttools`` command line tool (#1913, #1920). 1216*e1fe3e4aSElliott Hughes Ensure all fonttools CLI tools have help documentation (#1948). 1217*e1fe3e4aSElliott Hughes- [ufoLib] Only write fontinfo.plist when there actually is content (#1911). 1218*e1fe3e4aSElliott Hughes 1219*e1fe3e4aSElliott Hughes4.9.0 (released 2020-04-29) 1220*e1fe3e4aSElliott Hughes--------------------------- 1221*e1fe3e4aSElliott Hughes 1222*e1fe3e4aSElliott Hughes- [subset] Fixed subsetting of FeatureVariations table. The subsetter no longer drops 1223*e1fe3e4aSElliott Hughes FeatureVariationRecords that have empty substitutions as that will keep the search 1224*e1fe3e4aSElliott Hughes going and thus change the logic. It will only drop empty records that occur at the 1225*e1fe3e4aSElliott Hughes end of the FeatureVariationRecords array (#1881). 1226*e1fe3e4aSElliott Hughes- [subset] Remove FeatureVariations table and downgrade GSUB/GPOS to version 0x10000 1227*e1fe3e4aSElliott Hughes when FeatureVariations contain no FeatureVariationRecords after subsetting (#1903). 1228*e1fe3e4aSElliott Hughes- [agl] Add support for legacy Adobe Glyph List of glyph names in ``fontTools.agl`` 1229*e1fe3e4aSElliott Hughes (#1895). 1230*e1fe3e4aSElliott Hughes- [feaLib] Ignore superfluous script statements (#1883). 1231*e1fe3e4aSElliott Hughes- [feaLib] Hide traceback by default on ``fonttools feaLib`` command line. 1232*e1fe3e4aSElliott Hughes Use ``--traceback`` option to show (#1898). 1233*e1fe3e4aSElliott Hughes- [feaLib] Check lookup index in chaining sub/pos lookups and print better error 1234*e1fe3e4aSElliott Hughes message (#1896, #1897). 1235*e1fe3e4aSElliott Hughes- [feaLib] Fix building chained alt substitutions (#1902). 1236*e1fe3e4aSElliott Hughes- [Doc] Included all fontTools modules in the sphinx-generated documentation, and 1237*e1fe3e4aSElliott Hughes published it to ReadTheDocs for continuous documentation of the fontTools project 1238*e1fe3e4aSElliott Hughes (#1333). Check it out at https://fonttools.readthedocs.io/. Thanks to Chris Simpkins! 1239*e1fe3e4aSElliott Hughes- [transform] The ``Transform`` class is now subclass of ``typing.NamedTuple``. No 1240*e1fe3e4aSElliott Hughes change in functionality (#1904). 1241*e1fe3e4aSElliott Hughes 1242*e1fe3e4aSElliott Hughes 1243*e1fe3e4aSElliott Hughes4.8.1 (released 2020-04-17) 1244*e1fe3e4aSElliott Hughes--------------------------- 1245*e1fe3e4aSElliott Hughes 1246*e1fe3e4aSElliott Hughes- [feaLib] Fixed ``AttributeError: 'NoneType' has no attribute 'getAlternateGlyphs'`` 1247*e1fe3e4aSElliott Hughes when ``aalt`` feature references a chain contextual substitution lookup 1248*e1fe3e4aSElliott Hughes (googlefonts/fontmake#648, #1878). 1249*e1fe3e4aSElliott Hughes 1250*e1fe3e4aSElliott Hughes4.8.0 (released 2020-04-16) 1251*e1fe3e4aSElliott Hughes--------------------------- 1252*e1fe3e4aSElliott Hughes 1253*e1fe3e4aSElliott Hughes- [feaLib] If Parser is initialized without a ``glyphNames`` parameter, it cannot 1254*e1fe3e4aSElliott Hughes distinguish between a glyph name containing an hyphen, or a range of glyph names; 1255*e1fe3e4aSElliott Hughes instead of raising an error, it now interprets them as literal glyph names, while 1256*e1fe3e4aSElliott Hughes also outputting a logging warning to alert user about the ambiguity (#1768, #1870). 1257*e1fe3e4aSElliott Hughes- [feaLib] When serializing AST to string, emit spaces around hyphens that denote 1258*e1fe3e4aSElliott Hughes ranges. Also, fixed an issue with CID ranges when round-tripping AST->string->AST 1259*e1fe3e4aSElliott Hughes (#1872). 1260*e1fe3e4aSElliott Hughes- [Snippets/otf2ttf] In otf2ttf.py script update LSB in hmtx to match xMin (#1873). 1261*e1fe3e4aSElliott Hughes- [colorLib] Added experimental support for building ``COLR`` v1 tables as per 1262*e1fe3e4aSElliott Hughes the `colr-gradients-spec <https://github.com/googlefonts/colr-gradients-spec/blob/main/colr-gradients-spec.md>`__ 1263*e1fe3e4aSElliott Hughes draft proposal. **NOTE**: both the API and the XML dump of ``COLR`` v1 are 1264*e1fe3e4aSElliott Hughes susceptible to change while the proposal is being discussed and formalized (#1822). 1265*e1fe3e4aSElliott Hughes 1266*e1fe3e4aSElliott Hughes4.7.0 (released 2020-04-03) 1267*e1fe3e4aSElliott Hughes--------------------------- 1268*e1fe3e4aSElliott Hughes 1269*e1fe3e4aSElliott Hughes- [cu2qu] Added ``fontTools.cu2qu`` package, imported from the original 1270*e1fe3e4aSElliott Hughes `cu2qu <https://github.com/googlefonts/cu2qu>`__ project. The ``cu2qu.pens`` module 1271*e1fe3e4aSElliott Hughes was moved to ``fontTools.pens.cu2quPen``. The optional cu2qu extension module 1272*e1fe3e4aSElliott Hughes can be compiled by installing `Cython <https://cython.org/>`__ before installing 1273*e1fe3e4aSElliott Hughes fonttools from source (i.e. git repo or sdist tarball). The wheel package that 1274*e1fe3e4aSElliott Hughes is published on PyPI (i.e. the one ``pip`` downloads, unless ``--no-binary`` 1275*e1fe3e4aSElliott Hughes option is used), will continue to be pure-Python for now (#1868). 1276*e1fe3e4aSElliott Hughes 1277*e1fe3e4aSElliott Hughes4.6.0 (released 2020-03-24) 1278*e1fe3e4aSElliott Hughes--------------------------- 1279*e1fe3e4aSElliott Hughes 1280*e1fe3e4aSElliott Hughes- [varLib] Added support for building variable ``BASE`` table version 1.1 (#1858). 1281*e1fe3e4aSElliott Hughes- [CPAL] Added ``fromRGBA`` method to ``Color`` class (#1861). 1282*e1fe3e4aSElliott Hughes 1283*e1fe3e4aSElliott Hughes 1284*e1fe3e4aSElliott Hughes4.5.0 (released 2020-03-20) 1285*e1fe3e4aSElliott Hughes--------------------------- 1286*e1fe3e4aSElliott Hughes 1287*e1fe3e4aSElliott Hughes- [designspaceLib] Added ``add{Axis,Source,Instance,Rule}Descriptor`` methods to 1288*e1fe3e4aSElliott Hughes ``DesignSpaceDocument`` class, to initialize new descriptor objects using keyword 1289*e1fe3e4aSElliott Hughes arguments, and at the same time append them to the current document (#1860). 1290*e1fe3e4aSElliott Hughes- [unicodedata] Update to Unicode 13.0 (#1859). 1291*e1fe3e4aSElliott Hughes 1292*e1fe3e4aSElliott Hughes4.4.3 (released 2020-03-13) 1293*e1fe3e4aSElliott Hughes--------------------------- 1294*e1fe3e4aSElliott Hughes 1295*e1fe3e4aSElliott Hughes- [varLib] Always build ``gvar`` table for TrueType-flavored Variable Fonts, 1296*e1fe3e4aSElliott Hughes even if it contains no variation data. The table is required according to 1297*e1fe3e4aSElliott Hughes the OpenType spec (#1855, #1857). 1298*e1fe3e4aSElliott Hughes 1299*e1fe3e4aSElliott Hughes4.4.2 (released 2020-03-12) 1300*e1fe3e4aSElliott Hughes--------------------------- 1301*e1fe3e4aSElliott Hughes 1302*e1fe3e4aSElliott Hughes- [ttx] Annotate ``LookupFlag`` in XML dump with comment explaining what bits 1303*e1fe3e4aSElliott Hughes are set and what they mean (#1850). 1304*e1fe3e4aSElliott Hughes- [feaLib] Added more descriptive message to ``IncludedFeaNotFound`` error (#1842). 1305*e1fe3e4aSElliott Hughes 1306*e1fe3e4aSElliott Hughes4.4.1 (released 2020-02-26) 1307*e1fe3e4aSElliott Hughes--------------------------- 1308*e1fe3e4aSElliott Hughes 1309*e1fe3e4aSElliott Hughes- [woff2] Skip normalizing ``glyf`` and ``loca`` tables if these are missing from 1310*e1fe3e4aSElliott Hughes a font (e.g. in NotoColorEmoji using ``CBDT/CBLC`` tables). 1311*e1fe3e4aSElliott Hughes- [timeTools] Use non-localized date parsing in ``timestampFromString``, to fix 1312*e1fe3e4aSElliott Hughes error when non-English ``LC_TIME`` locale is set (#1838, #1839). 1313*e1fe3e4aSElliott Hughes- [fontBuilder] Make sure the CFF table generated by fontBuilder can be used by varLib 1314*e1fe3e4aSElliott Hughes without having to compile and decompile the table first. This was breaking in 1315*e1fe3e4aSElliott Hughes converting the CFF table to CFF2 due to some unset attributes (#1836). 1316*e1fe3e4aSElliott Hughes 1317*e1fe3e4aSElliott Hughes4.4.0 (released 2020-02-18) 1318*e1fe3e4aSElliott Hughes--------------------------- 1319*e1fe3e4aSElliott Hughes 1320*e1fe3e4aSElliott Hughes- [colorLib] Added ``fontTools.colorLib.builder`` module, initially with ``buildCOLR`` 1321*e1fe3e4aSElliott Hughes and ``buildCPAL`` public functions. More color font formats will follow (#1827). 1322*e1fe3e4aSElliott Hughes- [fontBuilder] Added ``setupCOLR`` and ``setupCPAL`` methods (#1826). 1323*e1fe3e4aSElliott Hughes- [ttGlyphPen] Quantize ``GlyphComponent.transform`` floats to ``F2Dot14`` to fix 1324*e1fe3e4aSElliott Hughes round-trip issue when computing bounding boxes of transformed components (#1830). 1325*e1fe3e4aSElliott Hughes- [glyf] If a component uses reference points (``firstPt`` and ``secondPt``) for 1326*e1fe3e4aSElliott Hughes alignment (instead of X and Y offsets), compute the effective translation offset 1327*e1fe3e4aSElliott Hughes *after* having applied any transform (#1831). 1328*e1fe3e4aSElliott Hughes- [glyf] When all glyphs have zero contours, compile ``glyf`` table data as a single 1329*e1fe3e4aSElliott Hughes null byte in order to pass validation by OTS and Windows (#1829). 1330*e1fe3e4aSElliott Hughes- [feaLib] Parsing feature code now ensures that referenced glyph names are part of 1331*e1fe3e4aSElliott Hughes the known glyph set, unless a glyph set was not provided. 1332*e1fe3e4aSElliott Hughes- [varLib] When filling in the default axis value for a missing location of a source or 1333*e1fe3e4aSElliott Hughes instance, correctly map the value forward. 1334*e1fe3e4aSElliott Hughes- [varLib] The avar table can now contain mapping output values that are greater than 1335*e1fe3e4aSElliott Hughes OR EQUAL to the preceeding value, as the avar specification allows this. 1336*e1fe3e4aSElliott Hughes- [varLib] The errors of the module are now ordered hierarchically below VarLibError. 1337*e1fe3e4aSElliott Hughes See #1821. 1338*e1fe3e4aSElliott Hughes 1339*e1fe3e4aSElliott Hughes4.3.0 (released 2020-02-03) 1340*e1fe3e4aSElliott Hughes--------------------------- 1341*e1fe3e4aSElliott Hughes 1342*e1fe3e4aSElliott Hughes- [EBLC/CBLC] Fixed incorrect padding length calculation for Format 3 IndexSubTable 1343*e1fe3e4aSElliott Hughes (#1817, #1818). 1344*e1fe3e4aSElliott Hughes- [varLib] Fixed error when merging OTL tables and TTFonts were loaded as ``lazy=True`` 1345*e1fe3e4aSElliott Hughes (#1808, #1809). 1346*e1fe3e4aSElliott Hughes- [varLib] Allow to use master fonts containing ``CFF2`` table when building VF (#1816). 1347*e1fe3e4aSElliott Hughes- [ttLib] Make ``recalcBBoxes`` option work also with ``CFF2`` table (#1816). 1348*e1fe3e4aSElliott Hughes- [feaLib] Don't reset ``lookupflag`` in lookups defined inside feature blocks. 1349*e1fe3e4aSElliott Hughes They will now inherit the current ``lookupflag`` of the feature. This is what 1350*e1fe3e4aSElliott Hughes Adobe ``makeotf`` also does in this case (#1815). 1351*e1fe3e4aSElliott Hughes- [feaLib] Fixed bug with mixed single/multiple substitutions. If a single substitution 1352*e1fe3e4aSElliott Hughes involved a glyph class, we were incorrectly using only the first glyph in the class 1353*e1fe3e4aSElliott Hughes (#1814). 1354*e1fe3e4aSElliott Hughes 1355*e1fe3e4aSElliott Hughes4.2.5 (released 2020-01-29) 1356*e1fe3e4aSElliott Hughes--------------------------- 1357*e1fe3e4aSElliott Hughes 1358*e1fe3e4aSElliott Hughes- [feaLib] Do not fail on duplicate multiple substitutions, only warn (#1811). 1359*e1fe3e4aSElliott Hughes- [subset] Optimize SinglePos subtables to Format 1 if all ValueRecords are the same 1360*e1fe3e4aSElliott Hughes (#1802). 1361*e1fe3e4aSElliott Hughes 1362*e1fe3e4aSElliott Hughes4.2.4 (released 2020-01-09) 1363*e1fe3e4aSElliott Hughes--------------------------- 1364*e1fe3e4aSElliott Hughes 1365*e1fe3e4aSElliott Hughes- [unicodedata] Update RTL_SCRIPTS for Unicode 11 and 12. 1366*e1fe3e4aSElliott Hughes 1367*e1fe3e4aSElliott Hughes4.2.3 (released 2020-01-07) 1368*e1fe3e4aSElliott Hughes--------------------------- 1369*e1fe3e4aSElliott Hughes 1370*e1fe3e4aSElliott Hughes- [otTables] Fixed bug when splitting `MarkBasePos` subtables as offsets overflow. 1371*e1fe3e4aSElliott Hughes The mark class values in the split subtable were not being updated, leading to 1372*e1fe3e4aSElliott Hughes invalid mark-base attachments (#1797, googlefonts/noto-source#145). 1373*e1fe3e4aSElliott Hughes- [feaLib] Only log a warning instead of error when features contain duplicate 1374*e1fe3e4aSElliott Hughes substitutions (#1767). 1375*e1fe3e4aSElliott Hughes- [glifLib] Strip XML comments when parsing with lxml (#1784, #1785). 1376*e1fe3e4aSElliott Hughes 1377*e1fe3e4aSElliott Hughes4.2.2 (released 2019-12-12) 1378*e1fe3e4aSElliott Hughes--------------------------- 1379*e1fe3e4aSElliott Hughes 1380*e1fe3e4aSElliott Hughes- [subset] Fixed issue with subsetting FeatureVariations table when the index 1381*e1fe3e4aSElliott Hughes of features changes as features get dropped. The feature index need to be 1382*e1fe3e4aSElliott Hughes remapped to point to index of the remaining features (#1777, #1782). 1383*e1fe3e4aSElliott Hughes- [fontBuilder] Added `addFeatureVariations` method to `FontBuilder` class. This 1384*e1fe3e4aSElliott Hughes is a shorthand for calling `featureVars.addFeatureVariations` on the builder's 1385*e1fe3e4aSElliott Hughes TTFont object (#1781). 1386*e1fe3e4aSElliott Hughes- [glyf] Fixed the flags bug in glyph.drawPoints() like we did for glyph.draw() 1387*e1fe3e4aSElliott Hughes (#1771, #1774). 1388*e1fe3e4aSElliott Hughes 1389*e1fe3e4aSElliott Hughes4.2.1 (released 2019-12-06) 1390*e1fe3e4aSElliott Hughes--------------------------- 1391*e1fe3e4aSElliott Hughes 1392*e1fe3e4aSElliott Hughes- [glyf] Use the ``flagOnCurve`` bit mask in ``glyph.draw()``, so that we ignore 1393*e1fe3e4aSElliott Hughes the ``overlap`` flag that may be set when instantiating variable fonts (#1771). 1394*e1fe3e4aSElliott Hughes 1395*e1fe3e4aSElliott Hughes4.2.0 (released 2019-11-28) 1396*e1fe3e4aSElliott Hughes--------------------------- 1397*e1fe3e4aSElliott Hughes 1398*e1fe3e4aSElliott Hughes- [pens] Added the following pens: 1399*e1fe3e4aSElliott Hughes 1400*e1fe3e4aSElliott Hughes * ``roundingPen.RoundingPen``: filter pen that rounds coordinates and components' 1401*e1fe3e4aSElliott Hughes offsets to integer; 1402*e1fe3e4aSElliott Hughes * ``roundingPen.RoundingPointPen``: like the above, but using PointPen protocol. 1403*e1fe3e4aSElliott Hughes * ``filterPen.FilterPointPen``: base class for filter point pens; 1404*e1fe3e4aSElliott Hughes * ``transformPen.TransformPointPen``: filter point pen to apply affine transform; 1405*e1fe3e4aSElliott Hughes * ``recordingPen.RecordingPointPen``: records and replays point-pen commands. 1406*e1fe3e4aSElliott Hughes 1407*e1fe3e4aSElliott Hughes- [ttGlyphPen] Always round float coordinates and component offsets to integers 1408*e1fe3e4aSElliott Hughes (#1763). 1409*e1fe3e4aSElliott Hughes- [ufoLib] When converting kerning groups from UFO2 to UFO3, avoid confusing 1410*e1fe3e4aSElliott Hughes groups with the same name as one of the glyphs (#1761, #1762, 1411*e1fe3e4aSElliott Hughes unified-font-object/ufo-spec#98). 1412*e1fe3e4aSElliott Hughes 1413*e1fe3e4aSElliott Hughes4.1.0 (released 2019-11-18) 1414*e1fe3e4aSElliott Hughes--------------------------- 1415*e1fe3e4aSElliott Hughes 1416*e1fe3e4aSElliott Hughes- [instancer] Implemented restricting axis ranges (level 3 partial instancing). 1417*e1fe3e4aSElliott Hughes You can now pass ``{axis_tag: (min, max)}`` tuples as input to the 1418*e1fe3e4aSElliott Hughes ``instantiateVariableFont`` function. Note that changing the default axis 1419*e1fe3e4aSElliott Hughes position is not supported yet. The command-line script also accepts axis ranges 1420*e1fe3e4aSElliott Hughes in the form of colon-separated float values, e.g. ``wght=400:700`` (#1753, #1537). 1421*e1fe3e4aSElliott Hughes- [instancer] Never drop STAT ``DesignAxis`` records, but only prune out-of-range 1422*e1fe3e4aSElliott Hughes ``AxisValue`` records. 1423*e1fe3e4aSElliott Hughes- [otBase/otTables] Enforce that VarStore.RegionAxisCount == fvar.axisCount, even 1424*e1fe3e4aSElliott Hughes when regions list is empty to appease OTS < v8.0 (#1752). 1425*e1fe3e4aSElliott Hughes- [designspaceLib] Defined new ``processing`` attribute for ``<rules>`` element, 1426*e1fe3e4aSElliott Hughes with values "first" or "last", plus other editorial changes to DesignSpace 1427*e1fe3e4aSElliott Hughes specification. Bumped format version to 4.1 (#1750). 1428*e1fe3e4aSElliott Hughes- [varLib] Improved error message when masters' glyph orders do not match (#1758, 1429*e1fe3e4aSElliott Hughes #1759). 1430*e1fe3e4aSElliott Hughes- [featureVars] Allow to specify custom feature tag in ``addFeatureVariations``; 1431*e1fe3e4aSElliott Hughes allow said feature to already exist, in which case we append new lookup indices 1432*e1fe3e4aSElliott Hughes to existing features. Implemented ``<rules>`` attribute ``processing`` according to 1433*e1fe3e4aSElliott Hughes DesignSpace specification update in #1750. Depending on this flag, we generate 1434*e1fe3e4aSElliott Hughes either an 'rvrn' (always processed first) or a 'rclt' feature (follows lookup order, 1435*e1fe3e4aSElliott Hughes therefore last) (#1747, #1625, #1371). 1436*e1fe3e4aSElliott Hughes- [ttCollection] Added support for context manager auto-closing via ``with`` statement 1437*e1fe3e4aSElliott Hughes like with ``TTFont`` (#1751). 1438*e1fe3e4aSElliott Hughes- [unicodedata] Require unicodedata2 >= 12.1.0. 1439*e1fe3e4aSElliott Hughes- [py2.py3] Removed yet more PY2 vestiges (#1743). 1440*e1fe3e4aSElliott Hughes- [_n_a_m_e] Fixed issue when comparing NameRecords with different string types (#1742). 1441*e1fe3e4aSElliott Hughes- [fixedTools] Changed ``fixedToFloat`` to not do any rounding but simply return 1442*e1fe3e4aSElliott Hughes ``value / (1 << precisionBits)``. Added ``floatToFixedToStr`` and 1443*e1fe3e4aSElliott Hughes ``strToFixedToFloat`` functions to be used when loading from or dumping to XML. 1444*e1fe3e4aSElliott Hughes Fixed values (e.g. fvar axes and instance coordinates, avar mappings, etc.) are 1445*e1fe3e4aSElliott Hughes are now stored as un-rounded decimal floats upon decompiling (#1740, #737). 1446*e1fe3e4aSElliott Hughes- [feaLib] Fixed handling of multiple ``LigatureCaret`` statements for the same glyph. 1447*e1fe3e4aSElliott Hughes Only the first rule per glyph is used, additional ones are ignored (#1733). 1448*e1fe3e4aSElliott Hughes 1449*e1fe3e4aSElliott Hughes4.0.2 (released 2019-09-26) 1450*e1fe3e4aSElliott Hughes--------------------------- 1451*e1fe3e4aSElliott Hughes 1452*e1fe3e4aSElliott Hughes- [voltLib] Added support for ``ALL`` and ``NONE`` in ``PROCESS_MARKS`` (#1732). 1453*e1fe3e4aSElliott Hughes- [Silf] Fixed issue in ``Silf`` table compilation and decompilation regarding str vs 1454*e1fe3e4aSElliott Hughes bytes in python3 (#1728). 1455*e1fe3e4aSElliott Hughes- [merge] Handle duplicate glyph names better: instead of appending font index to 1456*e1fe3e4aSElliott Hughes all glyph names, use similar code like we use in ``post`` and ``CFF`` tables (#1729). 1457*e1fe3e4aSElliott Hughes 1458*e1fe3e4aSElliott Hughes4.0.1 (released 2019-09-11) 1459*e1fe3e4aSElliott Hughes--------------------------- 1460*e1fe3e4aSElliott Hughes 1461*e1fe3e4aSElliott Hughes- [otTables] Support fixing offset overflows in ``MultipleSubst`` lookup subtables 1462*e1fe3e4aSElliott Hughes (#1706). 1463*e1fe3e4aSElliott Hughes- [subset] Prune empty strikes in ``EBDT`` and ``CBDT`` table data (#1698, #1633). 1464*e1fe3e4aSElliott Hughes- [pens] Fixed issue in ``PointToSegmentPen`` when last point of closed contour has 1465*e1fe3e4aSElliott Hughes same coordinates as the starting point and was incorrectly dropped (#1720). 1466*e1fe3e4aSElliott Hughes- [Graphite] Fixed ``Sill`` table output to pass OTS (#1705). 1467*e1fe3e4aSElliott Hughes- [name] Added ``removeNames`` method to ``table__n_a_m_e`` class (#1719). 1468*e1fe3e4aSElliott Hughes- [ttLib] Added aliases for renamed entries ``ascender`` and ``descender`` in 1469*e1fe3e4aSElliott Hughes ``hhea`` table (#1715). 1470*e1fe3e4aSElliott Hughes 1471*e1fe3e4aSElliott Hughes4.0.0 (released 2019-08-22) 1472*e1fe3e4aSElliott Hughes--------------------------- 1473*e1fe3e4aSElliott Hughes 1474*e1fe3e4aSElliott Hughes- NOTE: The v4.x version series only supports Python 3.6 or greater. You can keep 1475*e1fe3e4aSElliott Hughes using fonttools 3.x if you need support for Python 2. 1476*e1fe3e4aSElliott Hughes- [py23] Removed all the python2-only code since it is no longer reachable, thus 1477*e1fe3e4aSElliott Hughes unused; only the Python3 symbols were kept, but these are no-op. The module is now 1478*e1fe3e4aSElliott Hughes DEPRECATED and will removed in the future. 1479*e1fe3e4aSElliott Hughes- [ttLib] Fixed UnboundLocalError for empty loca/glyph tables (#1680). Also, allow 1480*e1fe3e4aSElliott Hughes the glyf table to be incomplete when dumping to XML (#1681). 1481*e1fe3e4aSElliott Hughes- [varLib.models] Fixed KeyError while sorting masters and there are no on-axis for 1482*e1fe3e4aSElliott Hughes a given axis (38a8eb0e). 1483*e1fe3e4aSElliott Hughes- [cffLib] Make sure glyph names are unique (#1699). 1484*e1fe3e4aSElliott Hughes- [feaLib] Fix feature parser to correctly handle octal numbers (#1700). 1485*e1fe3e4aSElliott Hughes 1486*e1fe3e4aSElliott Hughes3.44.0 (released 2019-08-02) 1487*e1fe3e4aSElliott Hughes---------------------------- 1488*e1fe3e4aSElliott Hughes 1489*e1fe3e4aSElliott Hughes- NOTE: This is the last scheduled release to support Python 2.7. The upcoming fonttools 1490*e1fe3e4aSElliott Hughes v4.x series is going to require Python 3.6 or greater. 1491*e1fe3e4aSElliott Hughes- [varLib] Added new ``varLib.instancer`` module for partially instantiating variable 1492*e1fe3e4aSElliott Hughes fonts. This extends (and will eventually replace) ``varLib.mutator`` module, as 1493*e1fe3e4aSElliott Hughes it allows to create not just full static instances from a variable font, but also 1494*e1fe3e4aSElliott Hughes "partial" or "less variable" fonts where some of the axes are dropped or 1495*e1fe3e4aSElliott Hughes instantiated at a particular value. 1496*e1fe3e4aSElliott Hughes Also available from the command-line as `fonttools varLib.instancer --help` 1497*e1fe3e4aSElliott Hughes (#1537, #1628). 1498*e1fe3e4aSElliott Hughes- [cffLib] Added support for ``FDSelect`` format 4 (#1677). 1499*e1fe3e4aSElliott Hughes- [subset] Added support for subsetting ``sbix`` (Apple bitmap color font) table. 1500*e1fe3e4aSElliott Hughes- [t1Lib] Fixed issue parsing ``eexec`` section in Type1 fonts when whitespace 1501*e1fe3e4aSElliott Hughes characters are interspersed among the trailing zeros (#1676). 1502*e1fe3e4aSElliott Hughes- [cffLib.specializer] Fixed bug in ``programToCommands`` with CFF2 charstrings (#1669). 1503*e1fe3e4aSElliott Hughes 1504*e1fe3e4aSElliott Hughes3.43.2 (released 2019-07-10) 1505*e1fe3e4aSElliott Hughes---------------------------- 1506*e1fe3e4aSElliott Hughes 1507*e1fe3e4aSElliott Hughes- [featureVars] Fixed region-merging code on python3 (#1659). 1508*e1fe3e4aSElliott Hughes- [varLib.cff] Fixed merging of sparse PrivateDict items (#1653). 1509*e1fe3e4aSElliott Hughes 1510*e1fe3e4aSElliott Hughes3.43.1 (released 2019-06-19) 1511*e1fe3e4aSElliott Hughes---------------------------- 1512*e1fe3e4aSElliott Hughes 1513*e1fe3e4aSElliott Hughes- [subset] Fixed regression when passing ``--flavor=woff2`` option with an input font 1514*e1fe3e4aSElliott Hughes that was already compressed as WOFF 1.0 (#1650). 1515*e1fe3e4aSElliott Hughes 1516*e1fe3e4aSElliott Hughes3.43.0 (released 2019-06-18) 1517*e1fe3e4aSElliott Hughes---------------------------- 1518*e1fe3e4aSElliott Hughes 1519*e1fe3e4aSElliott Hughes- [woff2] Added support for compressing/decompressing WOFF2 fonts with non-transformed 1520*e1fe3e4aSElliott Hughes ``glyf`` and ``loca`` tables, as well as with transformed ``hmtx`` table. 1521*e1fe3e4aSElliott Hughes Removed ``Snippets/woff2_compress.py`` and ``Snippets/woff2_decompress.py`` scripts, 1522*e1fe3e4aSElliott Hughes and replaced them with a new console entry point ``fonttools ttLib.woff2`` 1523*e1fe3e4aSElliott Hughes that provides two sub-commands ``compress`` and ``decompress``. 1524*e1fe3e4aSElliott Hughes- [varLib.cff] Fixed bug when merging CFF2 ``PrivateDicts``. The ``PrivateDict`` 1525*e1fe3e4aSElliott Hughes data from the first region font was incorrecty used for all subsequent fonts. 1526*e1fe3e4aSElliott Hughes The bug would only affect variable CFF2 fonts with hinting (#1643, #1644). 1527*e1fe3e4aSElliott Hughes Also, fixed a merging bug when VF masters have no blends or marking glyphs (#1632, 1528*e1fe3e4aSElliott Hughes #1642). 1529*e1fe3e4aSElliott Hughes- [loggingTools] Removed unused backport of ``LastResortLogger`` class. 1530*e1fe3e4aSElliott Hughes- [subset] Gracefully handle partial MATH table (#1635). 1531*e1fe3e4aSElliott Hughes- [featureVars] Avoid duplicate references to ``rvrn`` feature record in 1532*e1fe3e4aSElliott Hughes ``DefaultLangSys`` tables when calling ``addFeatureVariations`` on a font that 1533*e1fe3e4aSElliott Hughes does not already have a ``GSUB`` table (aa8a5bc6). 1534*e1fe3e4aSElliott Hughes- [varLib] Fixed merging of class-based kerning. Before, the process could introduce 1535*e1fe3e4aSElliott Hughes rogue kerning values and variations for random classes against class zero (everything 1536*e1fe3e4aSElliott Hughes not otherwise classed). 1537*e1fe3e4aSElliott Hughes- [varLib] Fixed merging GPOS tables from master fonts with different number of 1538*e1fe3e4aSElliott Hughes ``SinglePos`` subtables (#1621, #1641). 1539*e1fe3e4aSElliott Hughes- [unicodedata] Updated Blocks, Scripts and ScriptExtensions to Unicode 12.1. 1540*e1fe3e4aSElliott Hughes 1541*e1fe3e4aSElliott Hughes3.42.0 (released 2019-05-28) 1542*e1fe3e4aSElliott Hughes---------------------------- 1543*e1fe3e4aSElliott Hughes 1544*e1fe3e4aSElliott Hughes- [OS/2] Fixed sign of ``fsType``: it should be ``uint16``, not ``int16`` (#1619). 1545*e1fe3e4aSElliott Hughes- [subset] Skip out-of-range class values in mark attachment (#1478). 1546*e1fe3e4aSElliott Hughes- [fontBuilder] Add an empty ``DSIG`` table with ``setupDummyDSIG`` method (#1621). 1547*e1fe3e4aSElliott Hughes- [varLib.merger] Fixed bug whereby ``GDEF.GlyphClassDef`` were being dropped 1548*e1fe3e4aSElliott Hughes when generating instance via ``varLib.mutator`` (#1614). 1549*e1fe3e4aSElliott Hughes- [varLib] Added command-line options ``-v`` and ``-q`` to configure logging (#1613). 1550*e1fe3e4aSElliott Hughes- [subset] Update font extents in head table (#1612). 1551*e1fe3e4aSElliott Hughes- [subset] Make --retain-gids truncate empty glyphs after the last non-empty glyph 1552*e1fe3e4aSElliott Hughes (#1611). 1553*e1fe3e4aSElliott Hughes- [requirements] Updated ``unicodedata2`` backport for Unicode 12.0. 1554*e1fe3e4aSElliott Hughes 1555*e1fe3e4aSElliott Hughes3.41.2 (released 2019-05-13) 1556*e1fe3e4aSElliott Hughes---------------------------- 1557*e1fe3e4aSElliott Hughes 1558*e1fe3e4aSElliott Hughes- [cffLib] Fixed issue when importing a ``CFF2`` variable font from XML, whereby 1559*e1fe3e4aSElliott Hughes the VarStore state was not propagated to PrivateDict (#1598). 1560*e1fe3e4aSElliott Hughes- [varLib] Don't drop ``post`` glyph names when building CFF2 variable font (#1609). 1561*e1fe3e4aSElliott Hughes 1562*e1fe3e4aSElliott Hughes 1563*e1fe3e4aSElliott Hughes3.41.1 (released 2019-05-13) 1564*e1fe3e4aSElliott Hughes---------------------------- 1565*e1fe3e4aSElliott Hughes 1566*e1fe3e4aSElliott Hughes- [designspaceLib] Added ``loadSourceFonts`` method to load source fonts using 1567*e1fe3e4aSElliott Hughes custom opener function (#1606). 1568*e1fe3e4aSElliott Hughes- [head] Round font bounding box coordinates to integers to fix compile error 1569*e1fe3e4aSElliott Hughes if CFF font has float coordinates (#1604, #1605). 1570*e1fe3e4aSElliott Hughes- [feaLib] Don't write ``None`` in ``ast.ValueRecord.asFea()`` (#1599). 1571*e1fe3e4aSElliott Hughes- [subset] Fixed issue ``AssertionError`` when using ``--desubroutinize`` option 1572*e1fe3e4aSElliott Hughes (#1590, #1594). 1573*e1fe3e4aSElliott Hughes- [graphite] Fixed bug in ``Silf`` table's ``decompile`` method unmasked by 1574*e1fe3e4aSElliott Hughes previous typo fix (#1597). Decode languange code as UTF-8 in ``Sill`` table's 1575*e1fe3e4aSElliott Hughes ``decompile`` method (#1600). 1576*e1fe3e4aSElliott Hughes 1577*e1fe3e4aSElliott Hughes3.41.0 (released 2019-04-29) 1578*e1fe3e4aSElliott Hughes---------------------------- 1579*e1fe3e4aSElliott Hughes 1580*e1fe3e4aSElliott Hughes- [varLib/cffLib] Added support for building ``CFF2`` variable font from sparse 1581*e1fe3e4aSElliott Hughes masters, or masters with more than one model (multiple ``VarStore.VarData``). 1582*e1fe3e4aSElliott Hughes In ``cffLib.specializer``, added support for ``CFF2`` CharStrings with 1583*e1fe3e4aSElliott Hughes ``blend`` operators (#1547, #1591). 1584*e1fe3e4aSElliott Hughes- [subset] Fixed subsetting ``HVAR`` and ``VVAR`` with ``--retain-gids`` option, 1585*e1fe3e4aSElliott Hughes and when advances mapping is null while sidebearings mappings are non-null 1586*e1fe3e4aSElliott Hughes (#1587, #1588). 1587*e1fe3e4aSElliott Hughes- Added ``otlLib.maxContextCalc`` module to compute ``OS/2.usMaxContext`` value. 1588*e1fe3e4aSElliott Hughes Calculate it automatically when compiling features with feaLib. Added option 1589*e1fe3e4aSElliott Hughes ``--recalc-max-context`` to ``subset`` module (#1582). 1590*e1fe3e4aSElliott Hughes- [otBase/otTables] Fixed ``AttributeError`` on missing OT table fields after 1591*e1fe3e4aSElliott Hughes importing font from TTX (#1584). 1592*e1fe3e4aSElliott Hughes- [graphite] Fixed typo ``Silf`` table's ``decompile`` method (#1586). 1593*e1fe3e4aSElliott Hughes- [otlLib] Better compress ``GPOS`` SinglePos (LookupType 1) subtables (#1539). 1594*e1fe3e4aSElliott Hughes 1595*e1fe3e4aSElliott Hughes3.40.0 (released 2019-04-08) 1596*e1fe3e4aSElliott Hughes---------------------------- 1597*e1fe3e4aSElliott Hughes 1598*e1fe3e4aSElliott Hughes- [subset] Fixed error while subsetting ``VVAR`` with ``--retain-gids`` 1599*e1fe3e4aSElliott Hughes option (#1552). 1600*e1fe3e4aSElliott Hughes- [designspaceLib] Use up-to-date default location in ``findDefault`` method 1601*e1fe3e4aSElliott Hughes (#1554). 1602*e1fe3e4aSElliott Hughes- [voltLib] Allow passing file-like object to Parser. 1603*e1fe3e4aSElliott Hughes- [arrayTools/glyf] ``calcIntBounds`` (used to compute bounding boxes of glyf 1604*e1fe3e4aSElliott Hughes table's glyphs) now uses ``otRound`` instead of ``round3`` (#1566). 1605*e1fe3e4aSElliott Hughes- [svgLib] Added support for converting more SVG shapes to path ``d`` strings 1606*e1fe3e4aSElliott Hughes (ellipse, line, polyline), as well as support for ``transform`` attributes. 1607*e1fe3e4aSElliott Hughes Only ``matrix`` transformations are currently supported (#1564, #1564). 1608*e1fe3e4aSElliott Hughes- [varLib] Added support for building ``VVAR`` table from ``vmtx`` and ``VORG`` 1609*e1fe3e4aSElliott Hughes tables (#1551). 1610*e1fe3e4aSElliott Hughes- [fontBuilder] Enable making CFF2 fonts with ``post`` table format 2 (#1557). 1611*e1fe3e4aSElliott Hughes- Fixed ``DeprecationWarning`` on invalid escape sequences (#1562). 1612*e1fe3e4aSElliott Hughes 1613*e1fe3e4aSElliott Hughes3.39.0 (released 2019-03-19) 1614*e1fe3e4aSElliott Hughes---------------------------- 1615*e1fe3e4aSElliott Hughes 1616*e1fe3e4aSElliott Hughes- [ttLib/glyf] Raise more specific error when encountering recursive 1617*e1fe3e4aSElliott Hughes component references (#1545, #1546). 1618*e1fe3e4aSElliott Hughes- [Doc/designspaceLib] Defined new ``public.skipExportGlyphs`` lib key (#1534, 1619*e1fe3e4aSElliott Hughes unified-font-object/ufo-spec#84). 1620*e1fe3e4aSElliott Hughes- [varLib] Use ``vmtx`` to compute vertical phantom points; or ``hhea.ascent`` 1621*e1fe3e4aSElliott Hughes and ``head.unitsPerEM`` if ``vmtx`` is missing (#1528). 1622*e1fe3e4aSElliott Hughes- [gvar/cvar] Sort XML element's min/value/max attributes in TupleVariation 1623*e1fe3e4aSElliott Hughes toXML to improve readability of TTX dump (#1527). 1624*e1fe3e4aSElliott Hughes- [varLib.plot] Added support for 2D plots with only 1 variation axis (#1522). 1625*e1fe3e4aSElliott Hughes- [designspaceLib] Use axes maps when normalizing locations in 1626*e1fe3e4aSElliott Hughes DesignSpaceDocument (#1226, #1521), and when finding default source (#1535). 1627*e1fe3e4aSElliott Hughes- [mutator] Set ``OVERLAP_SIMPLE`` and ``OVERLAP_COMPOUND`` glyf flags by 1628*e1fe3e4aSElliott Hughes default in ``instantiateVariableFont``. Added ``--no-overlap`` cli option 1629*e1fe3e4aSElliott Hughes to disable this (#1518). 1630*e1fe3e4aSElliott Hughes- [subset] Fixed subsetting ``VVAR`` table (#1516, #1517). 1631*e1fe3e4aSElliott Hughes Fixed subsetting an ``HVAR`` table that has an ``AdvanceWidthMap`` when the 1632*e1fe3e4aSElliott Hughes option ``--retain-gids`` is used. 1633*e1fe3e4aSElliott Hughes- [feaLib] Added ``forceChained`` in MultipleSubstStatement (#1511). 1634*e1fe3e4aSElliott Hughes Fixed double indentation of ``subtable`` statement (#1512). 1635*e1fe3e4aSElliott Hughes Added support for ``subtable`` statement in more places than just PairPos 1636*e1fe3e4aSElliott Hughes lookups (#1520). 1637*e1fe3e4aSElliott Hughes Handle lookupflag 0 and lookupflag without a value (#1540). 1638*e1fe3e4aSElliott Hughes- [varLib] In ``load_designspace``, provide a default English name for the 1639*e1fe3e4aSElliott Hughes ``ital`` axis tag. 1640*e1fe3e4aSElliott Hughes- Remove pyftinspect because it is unmaintained and bitrotted. 1641*e1fe3e4aSElliott Hughes 1642*e1fe3e4aSElliott Hughes3.38.0 (released 2019-02-18) 1643*e1fe3e4aSElliott Hughes---------------------------- 1644*e1fe3e4aSElliott Hughes 1645*e1fe3e4aSElliott Hughes- [cffLib] Fixed RecursionError when unpickling or deepcopying TTFont with 1646*e1fe3e4aSElliott Hughes CFF table (#1488, 649dc49). 1647*e1fe3e4aSElliott Hughes- [subset] Fixed AttributeError when using --desubroutinize option (#1490). 1648*e1fe3e4aSElliott Hughes Also, fixed desubroutinizing bug when subrs contain hints (#1499). 1649*e1fe3e4aSElliott Hughes- [CPAL] Make Color a subclass of namedtuple (173a0f5). 1650*e1fe3e4aSElliott Hughes- [feaLib] Allow hyphen in glyph class names. 1651*e1fe3e4aSElliott Hughes- [feaLib] Added 'tables' option to __main__.py (#1497). 1652*e1fe3e4aSElliott Hughes- [feaLib] Add support for special-case contextual positioning formatting 1653*e1fe3e4aSElliott Hughes (#1501). 1654*e1fe3e4aSElliott Hughes- [svgLib] Support converting SVG basic shapes (rect, circle, etc.) into 1655*e1fe3e4aSElliott Hughes equivalent SVG paths (#1500, #1508). 1656*e1fe3e4aSElliott Hughes- [Snippets] Added name-viewer.ipynb Jupyter notebook. 1657*e1fe3e4aSElliott Hughes 1658*e1fe3e4aSElliott Hughes 1659*e1fe3e4aSElliott Hughes3.37.3 (released 2019-02-05) 1660*e1fe3e4aSElliott Hughes---------------------------- 1661*e1fe3e4aSElliott Hughes 1662*e1fe3e4aSElliott Hughes- The previous release accidentally changed several files from Unix to DOS 1663*e1fe3e4aSElliott Hughes line-endings. Fix that. 1664*e1fe3e4aSElliott Hughes 1665*e1fe3e4aSElliott Hughes3.37.2 (released 2019-02-05) 1666*e1fe3e4aSElliott Hughes---------------------------- 1667*e1fe3e4aSElliott Hughes 1668*e1fe3e4aSElliott Hughes- [varLib] Temporarily revert the fix to ``load_masters()``, which caused a 1669*e1fe3e4aSElliott Hughes crash in ``interpolate_layout()`` when ``deepcopy``-ing OTFs. 1670*e1fe3e4aSElliott Hughes 1671*e1fe3e4aSElliott Hughes3.37.1 (released 2019-02-05) 1672*e1fe3e4aSElliott Hughes---------------------------- 1673*e1fe3e4aSElliott Hughes 1674*e1fe3e4aSElliott Hughes- [varLib] ``load_masters()`` now actually assigns the fonts it loads to the 1675*e1fe3e4aSElliott Hughes source.font attributes. 1676*e1fe3e4aSElliott Hughes- [varLib] Fixed an MVAR table generation crash when sparse masters were 1677*e1fe3e4aSElliott Hughes involved. 1678*e1fe3e4aSElliott Hughes- [voltLib] ``parse_coverage_()`` returns a tuple instead of an ast.Enum. 1679*e1fe3e4aSElliott Hughes- [feaLib] A MarkClassDefinition inside a block is no longer doubly indented 1680*e1fe3e4aSElliott Hughes compared to the rest of the block. 1681*e1fe3e4aSElliott Hughes 1682*e1fe3e4aSElliott Hughes3.37.0 (released 2019-01-28) 1683*e1fe3e4aSElliott Hughes---------------------------- 1684*e1fe3e4aSElliott Hughes 1685*e1fe3e4aSElliott Hughes- [svgLib] Added support for converting elliptical arcs to cubic bezier curves 1686*e1fe3e4aSElliott Hughes (#1464). 1687*e1fe3e4aSElliott Hughes- [py23] Added backport for ``math.isfinite``. 1688*e1fe3e4aSElliott Hughes- [varLib] Apply HIDDEN flag to fvar axis if designspace axis has attribute 1689*e1fe3e4aSElliott Hughes ``hidden=1``. 1690*e1fe3e4aSElliott Hughes- Fixed "DeprecationWarning: invalid escape sequence" in Python 3.7. 1691*e1fe3e4aSElliott Hughes- [voltLib] Fixed parsing glyph groups. Distinguish different PROCESS_MARKS. 1692*e1fe3e4aSElliott Hughes Accept COMPONENT glyph type. 1693*e1fe3e4aSElliott Hughes- [feaLib] Distinguish missing value and explicit ``<NULL>`` for PairPos2 1694*e1fe3e4aSElliott Hughes format A (#1459). Round-trip ``useExtension`` keyword. Implemented 1695*e1fe3e4aSElliott Hughes ``ValueRecord.asFea`` method. 1696*e1fe3e4aSElliott Hughes- [subset] Insert empty widths into hdmx when retaining gids (#1458). 1697*e1fe3e4aSElliott Hughes 1698*e1fe3e4aSElliott Hughes3.36.0 (released 2019-01-17) 1699*e1fe3e4aSElliott Hughes---------------------------- 1700*e1fe3e4aSElliott Hughes 1701*e1fe3e4aSElliott Hughes- [ttx] Added ``--no-recalc-timestamp`` option to keep the original font's 1702*e1fe3e4aSElliott Hughes ``head.modified`` timestamp (#1455, #46). 1703*e1fe3e4aSElliott Hughes- [ttx/psCharStrings] Fixed issues while dumping and round-tripping CFF2 table 1704*e1fe3e4aSElliott Hughes with ttx (#1451, #1452, #1456). 1705*e1fe3e4aSElliott Hughes- [voltLib] Fixed check for duplicate anchors (#1450). Don't try to read past 1706*e1fe3e4aSElliott Hughes the ``END`` operator in .vtp file (#1453). 1707*e1fe3e4aSElliott Hughes- [varLib] Use sentinel value -0x8000 (-32768) to ignore post.underlineThickness 1708*e1fe3e4aSElliott Hughes and post.underlinePosition when generating MVAR deltas (#1449, 1709*e1fe3e4aSElliott Hughes googlei18n/ufo2ft#308). 1710*e1fe3e4aSElliott Hughes- [subset] Added ``--retain-gids`` option to subset font without modifying the 1711*e1fe3e4aSElliott Hughes current glyph indices (#1443, #1447). 1712*e1fe3e4aSElliott Hughes- [ufoLib] Replace deprecated calls to ``getbytes`` and ``setbytes`` with new 1713*e1fe3e4aSElliott Hughes equivalent ``readbytes`` and ``writebytes`` calls. ``fs`` >= 2.2 no required. 1714*e1fe3e4aSElliott Hughes- [varLib] Allow loading masters from TTX files as well (#1441). 1715*e1fe3e4aSElliott Hughes 1716*e1fe3e4aSElliott Hughes3.35.2 (released 2019-01-14) 1717*e1fe3e4aSElliott Hughes---------------------------- 1718*e1fe3e4aSElliott Hughes 1719*e1fe3e4aSElliott Hughes- [hmtx/vmtx]: Allow to compile/decompile ``hmtx`` and ``vmtx`` tables even 1720*e1fe3e4aSElliott Hughes without the corresponding (required) metrics header tables, ``hhea`` and 1721*e1fe3e4aSElliott Hughes ``vhea`` (#1439). 1722*e1fe3e4aSElliott Hughes- [varLib] Added support for localized axes' ``labelname`` and named instances' 1723*e1fe3e4aSElliott Hughes ``stylename`` (#1438). 1724*e1fe3e4aSElliott Hughes 1725*e1fe3e4aSElliott Hughes3.35.1 (released 2019-01-09) 1726*e1fe3e4aSElliott Hughes---------------------------- 1727*e1fe3e4aSElliott Hughes 1728*e1fe3e4aSElliott Hughes- [_m_a_x_p] Include ``maxComponentElements`` in ``maxp`` table's recalculation. 1729*e1fe3e4aSElliott Hughes 1730*e1fe3e4aSElliott Hughes3.35.0 (released 2019-01-07) 1731*e1fe3e4aSElliott Hughes---------------------------- 1732*e1fe3e4aSElliott Hughes 1733*e1fe3e4aSElliott Hughes- [psCharStrings] In ``encodeFloat`` function, use float's "general format" with 1734*e1fe3e4aSElliott Hughes 8 digits of precision (i.e. ``%8g``) instead of ``str()``. This works around 1735*e1fe3e4aSElliott Hughes a macOS rendering issue when real numbers in CFF table are too long, and 1736*e1fe3e4aSElliott Hughes also makes sure that floats are encoded with the same precision in python 2.7 1737*e1fe3e4aSElliott Hughes and 3.x (#1430, googlei18n/ufo2ft#306). 1738*e1fe3e4aSElliott Hughes- [_n_a_m_e/fontBuilder] Make ``_n_a_m_e_table.addMultilingualName`` also add 1739*e1fe3e4aSElliott Hughes Macintosh (platformID=1) names by default. Added options to ``FontBuilder`` 1740*e1fe3e4aSElliott Hughes ``setupNameTable`` method to optionally disable Macintosh or Windows names. 1741*e1fe3e4aSElliott Hughes (#1359, #1431). 1742*e1fe3e4aSElliott Hughes- [varLib] Make ``build`` optionally accept a ``DesignSpaceDocument`` object, 1743*e1fe3e4aSElliott Hughes instead of a designspace file path. The caller can now set the ``font`` 1744*e1fe3e4aSElliott Hughes attribute of designspace's sources to a TTFont object, thus allowing to 1745*e1fe3e4aSElliott Hughes skip filenames manipulation altogether (#1416, #1425). 1746*e1fe3e4aSElliott Hughes- [sfnt] Allow SFNTReader objects to be deep-copied. 1747*e1fe3e4aSElliott Hughes- Require typing>=3.6.4 on py27 to fix issue with singledispatch (#1423). 1748*e1fe3e4aSElliott Hughes- [designspaceLib/t1Lib/macRes] Fixed some cases where pathlib.Path objects were 1749*e1fe3e4aSElliott Hughes not accepted (#1421). 1750*e1fe3e4aSElliott Hughes- [varLib] Fixed merging of multiple PairPosFormat2 subtables (#1411). 1751*e1fe3e4aSElliott Hughes- [varLib] The default STAT table version is now set to 1.1, to improve 1752*e1fe3e4aSElliott Hughes compatibility with legacy applications (#1413). 1753*e1fe3e4aSElliott Hughes 1754*e1fe3e4aSElliott Hughes3.34.2 (released 2018-12-17) 1755*e1fe3e4aSElliott Hughes---------------------------- 1756*e1fe3e4aSElliott Hughes 1757*e1fe3e4aSElliott Hughes- [merge] Fixed AssertionError when none of the script tables in GPOS/GSUB have 1758*e1fe3e4aSElliott Hughes a DefaultLangSys record (#1408, 135a4a1). 1759*e1fe3e4aSElliott Hughes 1760*e1fe3e4aSElliott Hughes3.34.1 (released 2018-12-17) 1761*e1fe3e4aSElliott Hughes---------------------------- 1762*e1fe3e4aSElliott Hughes 1763*e1fe3e4aSElliott Hughes- [varLib] Work around macOS rendering issue for composites without gvar entry (#1381). 1764*e1fe3e4aSElliott Hughes 1765*e1fe3e4aSElliott Hughes3.34.0 (released 2018-12-14) 1766*e1fe3e4aSElliott Hughes---------------------------- 1767*e1fe3e4aSElliott Hughes 1768*e1fe3e4aSElliott Hughes- [varLib] Support generation of CFF2 variable fonts. ``model.reorderMasters()`` 1769*e1fe3e4aSElliott Hughes now supports arbitrary mapping. Fix handling of overlapping ranges for feature 1770*e1fe3e4aSElliott Hughes variations (#1400). 1771*e1fe3e4aSElliott Hughes- [cffLib, subset] Code clean-up and fixing related to CFF2 support. 1772*e1fe3e4aSElliott Hughes- [ttLib.tables.ttProgram] Use raw strings for regex patterns (#1389). 1773*e1fe3e4aSElliott Hughes- [fontbuilder] Initial support for building CFF2 fonts. Set CFF's 1774*e1fe3e4aSElliott Hughes ``FontMatrix`` automatically from unitsPerEm. 1775*e1fe3e4aSElliott Hughes- [plistLib] Accept the more general ``collections.Mapping`` instead of the 1776*e1fe3e4aSElliott Hughes specific ``dict`` class to support custom data classes that should serialize 1777*e1fe3e4aSElliott Hughes to dictionaries. 1778*e1fe3e4aSElliott Hughes 1779*e1fe3e4aSElliott Hughes3.33.0 (released 2018-11-30) 1780*e1fe3e4aSElliott Hughes---------------------------- 1781*e1fe3e4aSElliott Hughes- [subset] subsetter bug fix with variable fonts. 1782*e1fe3e4aSElliott Hughes- [varLib.featureVar] Improve FeatureVariations generation with many rules. 1783*e1fe3e4aSElliott Hughes- [varLib] Enable sparse masters when building variable fonts: 1784*e1fe3e4aSElliott Hughes https://github.com/fonttools/fonttools/pull/1368#issuecomment-437257368 1785*e1fe3e4aSElliott Hughes- [varLib.mutator] Add IDEF for GETVARIATION opcode, for handling hints in an 1786*e1fe3e4aSElliott Hughes instance. 1787*e1fe3e4aSElliott Hughes- [ttLib] Ignore the length of kern table subtable format 0 1788*e1fe3e4aSElliott Hughes 1789*e1fe3e4aSElliott Hughes3.32.0 (released 2018-11-01) 1790*e1fe3e4aSElliott Hughes---------------------------- 1791*e1fe3e4aSElliott Hughes 1792*e1fe3e4aSElliott Hughes- [ufoLib] Make ``UFOWriter`` a subclass of ``UFOReader``, and use mixins 1793*e1fe3e4aSElliott Hughes for shared methods (#1344). 1794*e1fe3e4aSElliott Hughes- [featureVars] Fixed normalization error when a condition's minimum/maximum 1795*e1fe3e4aSElliott Hughes attributes are missing in designspace ``<rule>`` (#1366). 1796*e1fe3e4aSElliott Hughes- [setup.py] Added ``[plot]`` to extras, to optionally install ``matplotlib``, 1797*e1fe3e4aSElliott Hughes needed to use the ``fonTools.varLib.plot`` module. 1798*e1fe3e4aSElliott Hughes- [varLib] Take total bounding box into account when resolving model (7ee81c8). 1799*e1fe3e4aSElliott Hughes If multiple axes have the same range ratio, cut across both (62003f4). 1800*e1fe3e4aSElliott Hughes- [subset] Don't error if ``STAT`` has no ``AxisValue`` tables. 1801*e1fe3e4aSElliott Hughes- [fontBuilder] Added a new submodule which contains a ``FontBuilder`` wrapper 1802*e1fe3e4aSElliott Hughes class around ``TTFont`` that makes it easier to create a working TTF or OTF 1803*e1fe3e4aSElliott Hughes font from scratch with code. NOTE: the API is still experimental and may 1804*e1fe3e4aSElliott Hughes change in future versions. 1805*e1fe3e4aSElliott Hughes 1806*e1fe3e4aSElliott Hughes3.31.0 (released 2018-10-21) 1807*e1fe3e4aSElliott Hughes---------------------------- 1808*e1fe3e4aSElliott Hughes 1809*e1fe3e4aSElliott Hughes- [ufoLib] Merged the `ufoLib <https://github.com/unified-font-objects/ufoLib>`__ 1810*e1fe3e4aSElliott Hughes master branch into a new ``fontTools.ufoLib`` package (#1335, #1095). 1811*e1fe3e4aSElliott Hughes Moved ``ufoLib.pointPen`` module to ``fontTools.pens.pointPen``. 1812*e1fe3e4aSElliott Hughes Moved ``ufoLib.etree`` module to ``fontTools.misc.etree``. 1813*e1fe3e4aSElliott Hughes Moved ``ufoLib.plistlib`` module to ``fontTools.misc.plistlib``. 1814*e1fe3e4aSElliott Hughes To use the new ``fontTools.ufoLib`` module you need to install fonttools 1815*e1fe3e4aSElliott Hughes with the ``[ufo]`` extra, or you can manually install the required additional 1816*e1fe3e4aSElliott Hughes dependencies (cf. README.rst). 1817*e1fe3e4aSElliott Hughes- [morx] Support AAT action type to insert glyphs and clean up compilation 1818*e1fe3e4aSElliott Hughes of AAT action tables (4a1871f, 2011ccf). 1819*e1fe3e4aSElliott Hughes- [subset] The ``--no-hinting`` on a CFF font now also drops the optional 1820*e1fe3e4aSElliott Hughes hinting keys in Private dict: ``ForceBold``, ``LanguageGroup``, and 1821*e1fe3e4aSElliott Hughes ``ExpansionFactor`` (#1322). 1822*e1fe3e4aSElliott Hughes- [subset] Include nameIDs referenced by STAT table (#1327). 1823*e1fe3e4aSElliott Hughes- [loggingTools] Added ``msg=None`` argument to 1824*e1fe3e4aSElliott Hughes ``CapturingLogHandler.assertRegex`` (0245f2c). 1825*e1fe3e4aSElliott Hughes- [varLib.mutator] Implemented ``FeatureVariations`` instantiation (#1244). 1826*e1fe3e4aSElliott Hughes- [g_l_y_f] Added PointPen support to ``_TTGlyph`` objects (#1334). 1827*e1fe3e4aSElliott Hughes 1828*e1fe3e4aSElliott Hughes3.30.0 (released 2018-09-18) 1829*e1fe3e4aSElliott Hughes---------------------------- 1830*e1fe3e4aSElliott Hughes 1831*e1fe3e4aSElliott Hughes- [feaLib] Skip building noop class PairPos subtables when Coverage is NULL 1832*e1fe3e4aSElliott Hughes (#1318). 1833*e1fe3e4aSElliott Hughes- [ttx] Expose the previously reserved bit flag ``OVERLAP_SIMPLE`` of 1834*e1fe3e4aSElliott Hughes glyf table's contour points in the TTX dump. This is used in some 1835*e1fe3e4aSElliott Hughes implementations to specify a non-zero fill with overlapping contours (#1316). 1836*e1fe3e4aSElliott Hughes- [ttLib] Added support for decompiling/compiling ``TS1C`` tables containing 1837*e1fe3e4aSElliott Hughes VTT sources for ``cvar`` variation table (#1310). 1838*e1fe3e4aSElliott Hughes- [varLib] Use ``fontTools.designspaceLib`` to read DesignSpaceDocument. The 1839*e1fe3e4aSElliott Hughes ``fontTools.varLib.designspace`` module is now deprecated and will be removed 1840*e1fe3e4aSElliott Hughes in future versions. The presence of an explicit ``axes`` element is now 1841*e1fe3e4aSElliott Hughes required in order to build a variable font (#1224, #1313). 1842*e1fe3e4aSElliott Hughes- [varLib] Implemented building GSUB FeatureVariations table from the ``rules`` 1843*e1fe3e4aSElliott Hughes element of DesignSpace document (#1240, #713, #1314). 1844*e1fe3e4aSElliott Hughes- [subset] Added ``--no-layout-closure`` option to not expand the subset with 1845*e1fe3e4aSElliott Hughes the glyphs produced by OpenType layout features. Instead, OpenType features 1846*e1fe3e4aSElliott Hughes will be subset to only rules that are relevant to the otherwise-specified 1847*e1fe3e4aSElliott Hughes glyph set (#43, #1121). 1848*e1fe3e4aSElliott Hughes 1849*e1fe3e4aSElliott Hughes3.29.1 (released 2018-09-10) 1850*e1fe3e4aSElliott Hughes---------------------------- 1851*e1fe3e4aSElliott Hughes 1852*e1fe3e4aSElliott Hughes- [feaLib] Fixed issue whereby lookups from DFLT/dflt were not included in the 1853*e1fe3e4aSElliott Hughes DFLT/non-dflt language systems (#1307). 1854*e1fe3e4aSElliott Hughes- [graphite] Fixed issue on big-endian architectures (e.g. ppc64) (#1311). 1855*e1fe3e4aSElliott Hughes- [subset] Added ``--layout-scripts`` option to add/exclude set of OpenType 1856*e1fe3e4aSElliott Hughes layout scripts that will be preserved. By default all scripts are retained 1857*e1fe3e4aSElliott Hughes (``'*'``) (#1303). 1858*e1fe3e4aSElliott Hughes 1859*e1fe3e4aSElliott Hughes3.29.0 (released 2018-07-26) 1860*e1fe3e4aSElliott Hughes---------------------------- 1861*e1fe3e4aSElliott Hughes 1862*e1fe3e4aSElliott Hughes- [feaLib] In the OTL table builder, when the ``name`` table is excluded 1863*e1fe3e4aSElliott Hughes from the list of tables to be build, skip compiling ``featureNames`` blocks, 1864*e1fe3e4aSElliott Hughes as the records referenced in ``FeatureParams`` table don't exist (68951b7). 1865*e1fe3e4aSElliott Hughes- [otBase] Try ``ExtensionLookup`` if other offset-overflow methods fail 1866*e1fe3e4aSElliott Hughes (05f95f0). 1867*e1fe3e4aSElliott Hughes- [feaLib] Added support for explicit ``subtable;`` break statements in 1868*e1fe3e4aSElliott Hughes PairPos lookups; previously these were ignored (#1279, #1300, #1302). 1869*e1fe3e4aSElliott Hughes- [cffLib.specializer] Make sure the stack depth does not exceed maxstack - 1, 1870*e1fe3e4aSElliott Hughes so that a subroutinizer can insert subroutine calls (#1301, 1871*e1fe3e4aSElliott Hughes https://github.com/googlei18n/ufo2ft/issues/266). 1872*e1fe3e4aSElliott Hughes- [otTables] Added support for fixing offset overflow errors occurring inside 1873*e1fe3e4aSElliott Hughes ``MarkBasePos`` subtables (#1297). 1874*e1fe3e4aSElliott Hughes- [subset] Write the default output file extension based on ``--flavor`` option, 1875*e1fe3e4aSElliott Hughes or the value of ``TTFont.sfntVersion`` (d7ac0ad). 1876*e1fe3e4aSElliott Hughes- [unicodedata] Updated Blocks, Scripts and ScriptExtensions for Unicode 11 1877*e1fe3e4aSElliott Hughes (452c85e). 1878*e1fe3e4aSElliott Hughes- [xmlWriter] Added context manager to XMLWriter class to autoclose file 1879*e1fe3e4aSElliott Hughes descriptor on exit (#1290). 1880*e1fe3e4aSElliott Hughes- [psCharStrings] Optimize the charstring's bytecode by encoding as integers 1881*e1fe3e4aSElliott Hughes all float values that have no decimal portion (8d7774a). 1882*e1fe3e4aSElliott Hughes- [ttFont] Fixed missing import of ``TTLibError`` exception (#1285). 1883*e1fe3e4aSElliott Hughes- [feaLib] Allow any languages other than ``dflt`` under ``DFLT`` script 1884*e1fe3e4aSElliott Hughes (#1278, #1292). 1885*e1fe3e4aSElliott Hughes 1886*e1fe3e4aSElliott Hughes3.28.0 (released 2018-06-19) 1887*e1fe3e4aSElliott Hughes---------------------------- 1888*e1fe3e4aSElliott Hughes 1889*e1fe3e4aSElliott Hughes- [featureVars] Added experimental module to build ``FeatureVariations`` 1890*e1fe3e4aSElliott Hughes tables. Still needs to be hooked up to ``varLib.build`` (#1240). 1891*e1fe3e4aSElliott Hughes- [fixedTools] Added ``otRound`` to round floats to nearest integer towards 1892*e1fe3e4aSElliott Hughes positive Infinity. This is now used where we deal with visual data like X/Y 1893*e1fe3e4aSElliott Hughes coordinates, advance widths/heights, variation deltas, and similar (#1274, 1894*e1fe3e4aSElliott Hughes #1248). 1895*e1fe3e4aSElliott Hughes- [subset] Improved GSUB closure memoize algorithm. 1896*e1fe3e4aSElliott Hughes- [varLib.models] Fixed regression in model resolution (180124, #1269). 1897*e1fe3e4aSElliott Hughes- [feaLib.ast] Fixed error when converting ``SubtableStatement`` to string 1898*e1fe3e4aSElliott Hughes (#1275). 1899*e1fe3e4aSElliott Hughes- [varLib.mutator] Set ``OS/2.usWeightClass`` and ``usWidthClass``, and 1900*e1fe3e4aSElliott Hughes ``post.italicAngle`` based on the 'wght', 'wdth' and 'slnt' axis values 1901*e1fe3e4aSElliott Hughes (#1276, #1264). 1902*e1fe3e4aSElliott Hughes- [py23/loggingTools] Don't automatically set ``logging.lastResort`` handler 1903*e1fe3e4aSElliott Hughes on py27. Moved ``LastResortLogger`` to the ``loggingTools`` module (#1277). 1904*e1fe3e4aSElliott Hughes 1905*e1fe3e4aSElliott Hughes3.27.1 (released 2018-06-11) 1906*e1fe3e4aSElliott Hughes---------------------------- 1907*e1fe3e4aSElliott Hughes 1908*e1fe3e4aSElliott Hughes- [ttGlyphPen] Issue a warning and skip building non-existing components 1909*e1fe3e4aSElliott Hughes (https://github.com/googlei18n/fontmake/issues/411). 1910*e1fe3e4aSElliott Hughes- [tests] Fixed issue running ttx_test.py from a tagged commit. 1911*e1fe3e4aSElliott Hughes 1912*e1fe3e4aSElliott Hughes3.27.0 (released 2018-06-11) 1913*e1fe3e4aSElliott Hughes---------------------------- 1914*e1fe3e4aSElliott Hughes 1915*e1fe3e4aSElliott Hughes- [designspaceLib] Added new ``conditionSet`` element to ``rule`` element in 1916*e1fe3e4aSElliott Hughes designspace document. Bumped ``format`` attribute to ``4.0`` (previously, 1917*e1fe3e4aSElliott Hughes it was formatted as an integer). Removed ``checkDefault``, ``checkAxes`` 1918*e1fe3e4aSElliott Hughes methods, and any kind of guessing about the axes when the ``<axes>`` element 1919*e1fe3e4aSElliott Hughes is missing. The default master is expected at the intersection of all default 1920*e1fe3e4aSElliott Hughes values for each axis (#1254, #1255, #1267). 1921*e1fe3e4aSElliott Hughes- [cffLib] Fixed issues when compiling CFF2 or converting from CFF when the 1922*e1fe3e4aSElliott Hughes font has an FDArray (#1211, #1271). 1923*e1fe3e4aSElliott Hughes- [varLib] Avoid attempting to build ``cvar`` table when ``glyf`` table is not 1924*e1fe3e4aSElliott Hughes present, as is the case for CFF2 fonts. 1925*e1fe3e4aSElliott Hughes- [subset] Handle None coverages in MarkGlyphSets; revert commit 02616ab that 1926*e1fe3e4aSElliott Hughes sets empty Coverage tables in MarkGlyphSets to None, to make OTS happy. 1927*e1fe3e4aSElliott Hughes- [ttFont] Allow to build glyph order from ``maxp.numGlyphs`` when ``post`` or 1928*e1fe3e4aSElliott Hughes ``cmap`` are missing. 1929*e1fe3e4aSElliott Hughes- [ttFont] Added ``__len__`` method to ``_TTGlyphSet``. 1930*e1fe3e4aSElliott Hughes- [glyf] Ensure ``GlyphCoordinates`` never overflow signed shorts (#1230). 1931*e1fe3e4aSElliott Hughes- [py23] Added alias for ``itertools.izip`` shadowing the built-in ``zip``. 1932*e1fe3e4aSElliott Hughes- [loggingTools] Memoize ``log`` property of ``LogMixin`` class (fbab12). 1933*e1fe3e4aSElliott Hughes- [ttx] Impoved test coverage (#1261). 1934*e1fe3e4aSElliott Hughes- [Snippets] Addded script to append a suffix to all family names in a font. 1935*e1fe3e4aSElliott Hughes- [varLib.plot] Make it work with matplotlib >= 2.1 (b38e2b). 1936*e1fe3e4aSElliott Hughes 1937*e1fe3e4aSElliott Hughes3.26.0 (released 2018-05-03) 1938*e1fe3e4aSElliott Hughes---------------------------- 1939*e1fe3e4aSElliott Hughes 1940*e1fe3e4aSElliott Hughes- [designspace] Added a new optional ``layer`` attribute to the source element, 1941*e1fe3e4aSElliott Hughes and a corresponding ``layerName`` attribute to the ``SourceDescriptor`` 1942*e1fe3e4aSElliott Hughes object (#1253). 1943*e1fe3e4aSElliott Hughes Added ``conditionset`` element to the ``rule`` element to the spec, but not 1944*e1fe3e4aSElliott Hughes implemented in designspace reader/writer yet (#1254). 1945*e1fe3e4aSElliott Hughes- [varLib.models] Refine modeling one last time (0ecf5c5). 1946*e1fe3e4aSElliott Hughes- [otBase] Fixed sharing of tables referred to by different offset sizes 1947*e1fe3e4aSElliott Hughes (795f2f9). 1948*e1fe3e4aSElliott Hughes- [subset] Don't drop a GDEF that only has VarStore (fc819d6). Set to None 1949*e1fe3e4aSElliott Hughes empty Coverage tables in MarkGlyphSets (02616ab). 1950*e1fe3e4aSElliott Hughes- [varLib]: Added ``--master-finder`` command-line option (#1249). 1951*e1fe3e4aSElliott Hughes- [varLib.mutator] Prune fvar nameIDs from instance's name table (#1245). 1952*e1fe3e4aSElliott Hughes- [otTables] Allow decompiling bad ClassDef tables with invalid format, with 1953*e1fe3e4aSElliott Hughes warning (#1236). 1954*e1fe3e4aSElliott Hughes- [varLib] Make STAT v1.2 and reuse nameIDs from fvar table (#1242). 1955*e1fe3e4aSElliott Hughes- [varLib.plot] Show master locations. Set axis limits to -1, +1. 1956*e1fe3e4aSElliott Hughes- [subset] Handle HVAR direct mapping. Passthrough 'cvar'. 1957*e1fe3e4aSElliott Hughes Added ``--font-number`` command-line option for collections. 1958*e1fe3e4aSElliott Hughes- [t1Lib] Allow a text encoding to be specified when parsing a Type 1 font 1959*e1fe3e4aSElliott Hughes (#1234). Added ``kind`` argument to T1Font constructor (c5c161c). 1960*e1fe3e4aSElliott Hughes- [ttLib] Added context manager API to ``TTFont`` class, so it can be used in 1961*e1fe3e4aSElliott Hughes ``with`` statements to auto-close the file when exiting the context (#1232). 1962*e1fe3e4aSElliott Hughes 1963*e1fe3e4aSElliott Hughes3.25.0 (released 2018-04-03) 1964*e1fe3e4aSElliott Hughes---------------------------- 1965*e1fe3e4aSElliott Hughes 1966*e1fe3e4aSElliott Hughes- [varLib] Improved support-resolution algorithm. Previously, the on-axis 1967*e1fe3e4aSElliott Hughes masters would always cut the space. They don't anymore. That's more 1968*e1fe3e4aSElliott Hughes consistent, and fixes the main issue Erik showed at TYPO Labs 2017. 1969*e1fe3e4aSElliott Hughes Any varfont built that had an unusual master configuration will change 1970*e1fe3e4aSElliott Hughes when rebuilt (42bef17, a523a697, 1971*e1fe3e4aSElliott Hughes https://github.com/googlei18n/fontmake/issues/264). 1972*e1fe3e4aSElliott Hughes- [varLib.models] Added a ``main()`` entry point, that takes positions and 1973*e1fe3e4aSElliott Hughes prints model results. 1974*e1fe3e4aSElliott Hughes- [varLib.plot] Added new module to plot a designspace's 1975*e1fe3e4aSElliott Hughes VariationModel. Requires ``matplotlib``. 1976*e1fe3e4aSElliott Hughes- [varLib.mutator] Added -o option to specify output file path (2ef60fa). 1977*e1fe3e4aSElliott Hughes- [otTables] Fixed IndexError while pruning of HVAR pre-write (6b6c34a). 1978*e1fe3e4aSElliott Hughes- [varLib.models] Convert delta array to floats if values overflows signed 1979*e1fe3e4aSElliott Hughes short integer (0055f94). 1980*e1fe3e4aSElliott Hughes 1981*e1fe3e4aSElliott Hughes3.24.2 (released 2018-03-26) 1982*e1fe3e4aSElliott Hughes---------------------------- 1983*e1fe3e4aSElliott Hughes 1984*e1fe3e4aSElliott Hughes- [otBase] Don't fail during ``ValueRecord`` copy if src has more items. 1985*e1fe3e4aSElliott Hughes We drop hinting in the subsetter by simply changing ValueFormat, without 1986*e1fe3e4aSElliott Hughes cleaning up the actual ValueRecords. This was causing assertion error if 1987*e1fe3e4aSElliott Hughes a variable font was subsetted without hinting and then passed directly to 1988*e1fe3e4aSElliott Hughes the mutator for instantiation without first it saving to disk. 1989*e1fe3e4aSElliott Hughes 1990*e1fe3e4aSElliott Hughes3.24.1 (released 2018-03-06) 1991*e1fe3e4aSElliott Hughes---------------------------- 1992*e1fe3e4aSElliott Hughes 1993*e1fe3e4aSElliott Hughes- [varLib] Don't remap the same ``DeviceTable`` twice in VarStore optimizer 1994*e1fe3e4aSElliott Hughes (#1206). 1995*e1fe3e4aSElliott Hughes- [varLib] Add ``--disable-iup`` option to ``fonttools varLib`` script, 1996*e1fe3e4aSElliott Hughes and a ``optimize=True`` keyword argument to ``varLib.build`` function, 1997*e1fe3e4aSElliott Hughes to optionally disable IUP optimization while building varfonts. 1998*e1fe3e4aSElliott Hughes- [ttCollection] Fixed issue while decompiling ttc with python3 (#1207). 1999*e1fe3e4aSElliott Hughes 2000*e1fe3e4aSElliott Hughes3.24.0 (released 2018-03-01) 2001*e1fe3e4aSElliott Hughes---------------------------- 2002*e1fe3e4aSElliott Hughes 2003*e1fe3e4aSElliott Hughes- [ttGlyphPen] Decompose composite glyphs if any components' transform is too 2004*e1fe3e4aSElliott Hughes large to fit a ``F2Dot14`` value, or clamp transform values that are 2005*e1fe3e4aSElliott Hughes (almost) equal to +2.0 to make them fit and avoid decomposing (#1200, 2006*e1fe3e4aSElliott Hughes #1204, #1205). 2007*e1fe3e4aSElliott Hughes- [ttx] Added new ``-g`` option to dump glyphs from the ``glyf`` table 2008*e1fe3e4aSElliott Hughes splitted as individual ttx files (#153, #1035, #1132, #1202). 2009*e1fe3e4aSElliott Hughes- Copied ``ufoLib.filenames`` module to ``fontTools.misc.filenames``, used 2010*e1fe3e4aSElliott Hughes for the ttx split-glyphs option (#1202). 2011*e1fe3e4aSElliott Hughes- [feaLib] Added support for ``cvParameters`` blocks in Character Variant 2012*e1fe3e4aSElliott Hughes feautures ``cv01-cv99`` (#860, #1169). 2013*e1fe3e4aSElliott Hughes- [Snippets] Added ``checksum.py`` script to generate/check SHA1 hash of 2014*e1fe3e4aSElliott Hughes ttx files (#1197). 2015*e1fe3e4aSElliott Hughes- [varLib.mutator] Fixed issue while instantiating some variable fonts 2016*e1fe3e4aSElliott Hughes whereby the horizontal advance width computed from ``gvar`` phantom points 2017*e1fe3e4aSElliott Hughes could turn up to be negative (#1198). 2018*e1fe3e4aSElliott Hughes- [varLib/subset] Fixed issue with subsetting GPOS variation data not 2019*e1fe3e4aSElliott Hughes picking up ``ValueRecord`` ``Device`` objects (54fd71f). 2020*e1fe3e4aSElliott Hughes- [feaLib/voltLib] In all AST elements, the ``location`` is no longer a 2021*e1fe3e4aSElliott Hughes required positional argument, but an optional kewyord argument (defaults 2022*e1fe3e4aSElliott Hughes to ``None``). This will make it easier to construct feature AST from 2023*e1fe3e4aSElliott Hughes code (#1201). 2024*e1fe3e4aSElliott Hughes 2025*e1fe3e4aSElliott Hughes 2026*e1fe3e4aSElliott Hughes3.23.0 (released 2018-02-26) 2027*e1fe3e4aSElliott Hughes---------------------------- 2028*e1fe3e4aSElliott Hughes 2029*e1fe3e4aSElliott Hughes- [designspaceLib] Added an optional ``lib`` element to the designspace as a 2030*e1fe3e4aSElliott Hughes whole, as well as to the instance elements, to store arbitrary data in a 2031*e1fe3e4aSElliott Hughes property list dictionary, similar to the UFO's ``lib``. Added an optional 2032*e1fe3e4aSElliott Hughes ``font`` attribute to the ``SourceDescriptor``, to allow operating on 2033*e1fe3e4aSElliott Hughes in-memory font objects (#1175). 2034*e1fe3e4aSElliott Hughes- [cffLib] Fixed issue with lazy-loading of attributes when attempting to 2035*e1fe3e4aSElliott Hughes set the CFF TopDict.Encoding (#1177, #1187). 2036*e1fe3e4aSElliott Hughes- [ttx] Fixed regression introduced in 3.22.0 that affected the split tables 2037*e1fe3e4aSElliott Hughes ``-s`` option (#1188). 2038*e1fe3e4aSElliott Hughes- [feaLib] Added ``IncludedFeaNotFound`` custom exception subclass, raised 2039*e1fe3e4aSElliott Hughes when an included feature file cannot be found (#1186). 2040*e1fe3e4aSElliott Hughes- [otTables] Changed ``VarIdxMap`` to use glyph names internally instead of 2041*e1fe3e4aSElliott Hughes glyph indexes. The old ttx dumps of HVAR/VVAR tables that contain indexes 2042*e1fe3e4aSElliott Hughes can still be imported (21cbab8, 38a0ffb). 2043*e1fe3e4aSElliott Hughes- [varLib] Implemented VarStore optimizer (#1184). 2044*e1fe3e4aSElliott Hughes- [subset] Implemented pruning of GDEF VarStore, HVAR and MVAR (#1179). 2045*e1fe3e4aSElliott Hughes- [sfnt] Restore backward compatiblity with ``numFonts`` attribute of 2046*e1fe3e4aSElliott Hughes ``SFNTReader`` object (#1181). 2047*e1fe3e4aSElliott Hughes- [merge] Initial support for merging ``LangSysRecords`` (#1180). 2048*e1fe3e4aSElliott Hughes- [ttCollection] don't seek(0) when writing to possibly unseekable strems. 2049*e1fe3e4aSElliott Hughes- [subset] Keep all ``--name-IDs`` from 0 to 6 by default (#1170, #605, #114). 2050*e1fe3e4aSElliott Hughes- [cffLib] Added ``width`` module to calculate optimal CFF default and 2051*e1fe3e4aSElliott Hughes nominal glyph widths. 2052*e1fe3e4aSElliott Hughes- [varLib] Don’t fail if STAT already in the master fonts (#1166). 2053*e1fe3e4aSElliott Hughes 2054*e1fe3e4aSElliott Hughes3.22.0 (released 2018-02-04) 2055*e1fe3e4aSElliott Hughes---------------------------- 2056*e1fe3e4aSElliott Hughes 2057*e1fe3e4aSElliott Hughes- [subset] Support subsetting ``endchar`` acting as ``seac``-like components 2058*e1fe3e4aSElliott Hughes in ``CFF`` (fixes #1162). 2059*e1fe3e4aSElliott Hughes- [feaLib] Allow to build from pre-parsed ``ast.FeatureFile`` object. 2060*e1fe3e4aSElliott Hughes Added ``tables`` argument to only build some tables instead of all (#1159, 2061*e1fe3e4aSElliott Hughes #1163). 2062*e1fe3e4aSElliott Hughes- [textTools] Replaced ``safeEval`` with ``ast.literal_eval`` (#1139). 2063*e1fe3e4aSElliott Hughes- [feaLib] Added option to the parser to not resolve ``include`` statements 2064*e1fe3e4aSElliott Hughes (#1154). 2065*e1fe3e4aSElliott Hughes- [ttLib] Added new ``ttCollection`` module to read/write TrueType and 2066*e1fe3e4aSElliott Hughes OpenType Collections. Exports a ``TTCollection`` class with a ``fonts`` 2067*e1fe3e4aSElliott Hughes attribute containing a list of ``TTFont`` instances, the methods ``save`` 2068*e1fe3e4aSElliott Hughes and ``saveXML``, plus some list-like methods. The ``importXML`` method is 2069*e1fe3e4aSElliott Hughes not implemented yet (#17). 2070*e1fe3e4aSElliott Hughes- [unicodeadata] Added ``ot_tag_to_script`` function that converts from 2071*e1fe3e4aSElliott Hughes OpenType script tag to Unicode script code. 2072*e1fe3e4aSElliott Hughes- Added new ``designspaceLib`` subpackage, originally from Erik Van Blokland's 2073*e1fe3e4aSElliott Hughes ``designSpaceDocument``: https://github.com/LettError/designSpaceDocument 2074*e1fe3e4aSElliott Hughes NOTE: this is not yet used internally by varLib, and the API may be subject 2075*e1fe3e4aSElliott Hughes to changes (#911, #1110, LettError/designSpaceDocument#28). 2076*e1fe3e4aSElliott Hughes- Added new FontTools icon images (8ee7c32). 2077*e1fe3e4aSElliott Hughes- [unicodedata] Added ``script_horizontal_direction`` function that returns 2078*e1fe3e4aSElliott Hughes either "LTR" or "RTL" given a unicode script code. 2079*e1fe3e4aSElliott Hughes- [otConverters] Don't write descriptive name string as XML comment if the 2080*e1fe3e4aSElliott Hughes NameID value is 0 (== NULL) (#1151, #1152). 2081*e1fe3e4aSElliott Hughes- [unicodedata] Add ``ot_tags_from_script`` function to get the list of 2082*e1fe3e4aSElliott Hughes OpenType script tags associated with unicode script code (#1150). 2083*e1fe3e4aSElliott Hughes- [feaLib] Don't error when "enumerated" kern pairs conflict with preceding 2084*e1fe3e4aSElliott Hughes single pairs; emit warning and chose the first value (#1147, #1148). 2085*e1fe3e4aSElliott Hughes- [loggingTools] In ``CapturingLogHandler.assertRegex`` method, match the 2086*e1fe3e4aSElliott Hughes fully formatted log message. 2087*e1fe3e4aSElliott Hughes- [sbix] Fixed TypeError when concatenating str and bytes (#1154). 2088*e1fe3e4aSElliott Hughes- [bezierTools] Implemented cusp support and removed ``approximate_fallback`` 2089*e1fe3e4aSElliott Hughes arg in ``calcQuadraticArcLength``. Added ``calcCubicArcLength`` (#1142). 2090*e1fe3e4aSElliott Hughes 2091*e1fe3e4aSElliott Hughes3.21.2 (released 2018-01-08) 2092*e1fe3e4aSElliott Hughes---------------------------- 2093*e1fe3e4aSElliott Hughes 2094*e1fe3e4aSElliott Hughes- [varLib] Fixed merging PairPos Format1/2 with missing subtables (#1125). 2095*e1fe3e4aSElliott Hughes 2096*e1fe3e4aSElliott Hughes3.21.1 (released 2018-01-03) 2097*e1fe3e4aSElliott Hughes---------------------------- 2098*e1fe3e4aSElliott Hughes 2099*e1fe3e4aSElliott Hughes- [feaLib] Allow mixed single/multiple substitutions (#612) 2100*e1fe3e4aSElliott Hughes- Added missing ``*.afm`` test assets to MAINFEST.in (#1137). 2101*e1fe3e4aSElliott Hughes- Fixed dumping ``SVG`` tables containing color palettes (#1124). 2102*e1fe3e4aSElliott Hughes 2103*e1fe3e4aSElliott Hughes3.21.0 (released 2017-12-18) 2104*e1fe3e4aSElliott Hughes---------------------------- 2105*e1fe3e4aSElliott Hughes 2106*e1fe3e4aSElliott Hughes- [cmap] when compiling format6 subtable, don't assume gid0 is always called 2107*e1fe3e4aSElliott Hughes '.notdef' (1e42224). 2108*e1fe3e4aSElliott Hughes- [ot] Allow decompiling fonts with bad Coverage format number (1aafae8). 2109*e1fe3e4aSElliott Hughes- Change FontTools licence to MIT (#1127). 2110*e1fe3e4aSElliott Hughes- [post] Prune extra names already in standard Mac set (df1e8c7). 2111*e1fe3e4aSElliott Hughes- [subset] Delete empty SubrsIndex after subsetting (#994, #1118). 2112*e1fe3e4aSElliott Hughes- [varLib] Don't share points in cvar by default, as it currently fails on 2113*e1fe3e4aSElliott Hughes some browsers (#1113). 2114*e1fe3e4aSElliott Hughes- [afmLib] Make poor old afmLib work on python3. 2115*e1fe3e4aSElliott Hughes 2116*e1fe3e4aSElliott Hughes3.20.1 (released 2017-11-22) 2117*e1fe3e4aSElliott Hughes---------------------------- 2118*e1fe3e4aSElliott Hughes 2119*e1fe3e4aSElliott Hughes- [unicodedata] Fixed issue with ``script`` and ``script_extension`` functions 2120*e1fe3e4aSElliott Hughes returning inconsistent short vs long names. They both return the short four- 2121*e1fe3e4aSElliott Hughes letter script codes now. Added ``script_name`` and ``script_code`` functions 2122*e1fe3e4aSElliott Hughes to look up the long human-readable script name from the script code, and 2123*e1fe3e4aSElliott Hughes viceversa (#1109, #1111). 2124*e1fe3e4aSElliott Hughes 2125*e1fe3e4aSElliott Hughes3.20.0 (released 2017-11-21) 2126*e1fe3e4aSElliott Hughes---------------------------- 2127*e1fe3e4aSElliott Hughes 2128*e1fe3e4aSElliott Hughes- [unicodedata] Addded new module ``fontTools.unicodedata`` which exports the 2129*e1fe3e4aSElliott Hughes same interface as the built-in ``unicodedata`` module, with the addition of 2130*e1fe3e4aSElliott Hughes a few functions that are missing from the latter, such as ``script``, 2131*e1fe3e4aSElliott Hughes ``script_extension`` and ``block``. Added a ``MetaTools/buildUCD.py`` script 2132*e1fe3e4aSElliott Hughes to download and parse data files from the Unicode Character Database and 2133*e1fe3e4aSElliott Hughes generate python modules containing lists of ranges and property values. 2134*e1fe3e4aSElliott Hughes- [feaLib] Added ``__str__`` method to all ``ast`` elements (delegates to the 2135*e1fe3e4aSElliott Hughes ``asFea`` method). 2136*e1fe3e4aSElliott Hughes- [feaLib] ``Parser`` constructor now accepts a ``glyphNames`` iterable 2137*e1fe3e4aSElliott Hughes instead of ``glyphMap`` dict. The latter still works but with a pending 2138*e1fe3e4aSElliott Hughes deprecation warning (#1104). 2139*e1fe3e4aSElliott Hughes- [bezierTools] Added arc length calculation functions originally from 2140*e1fe3e4aSElliott Hughes ``pens.perimeterPen`` module (#1101). 2141*e1fe3e4aSElliott Hughes- [varLib] Started generating STAT table (8af4309). Right now it just reflects 2142*e1fe3e4aSElliott Hughes the axes, and even that with certain limitations: 2143*e1fe3e4aSElliott Hughes * AxisOrdering is set to the order axes are defined, 2144*e1fe3e4aSElliott Hughes * Name-table entries are not shared with fvar. 2145*e1fe3e4aSElliott Hughes- [py23] Added backports for ``redirect_stdout`` and ``redirect_stderr`` 2146*e1fe3e4aSElliott Hughes context managers (#1097). 2147*e1fe3e4aSElliott Hughes- [Graphite] Fixed some round-trip bugs (#1093). 2148*e1fe3e4aSElliott Hughes 2149*e1fe3e4aSElliott Hughes3.19.0 (released 2017-11-06) 2150*e1fe3e4aSElliott Hughes---------------------------- 2151*e1fe3e4aSElliott Hughes 2152*e1fe3e4aSElliott Hughes- [varLib] Try set of used points instead of all points when testing whether to 2153*e1fe3e4aSElliott Hughes share points between tuples (#1090). 2154*e1fe3e4aSElliott Hughes- [CFF2] Fixed issue with reading/writing PrivateDict BlueValues to TTX file. 2155*e1fe3e4aSElliott Hughes Read the commit message 8b02b5a and issue #1030 for more details. 2156*e1fe3e4aSElliott Hughes NOTE: this change invalidates all the TTX files containing CFF2 tables 2157*e1fe3e4aSElliott Hughes that where dumped with previous verisons of fonttools. 2158*e1fe3e4aSElliott Hughes CFF2 Subr items can have values on the stack after the last operator, thus 2159*e1fe3e4aSElliott Hughes a ``CFF2Subr`` class was added to accommodate this (#1091). 2160*e1fe3e4aSElliott Hughes- [_k_e_r_n] Fixed compilation of AAT kern version=1.0 tables (#1089, #1094) 2161*e1fe3e4aSElliott Hughes- [ttLib] Added getBestCmap() convenience method to TTFont class and cmap table 2162*e1fe3e4aSElliott Hughes class that returns a preferred Unicode cmap subtable given a list of options 2163*e1fe3e4aSElliott Hughes (#1092). 2164*e1fe3e4aSElliott Hughes- [morx] Emit more meaningful subtable flags. Implement InsertionMorphAction 2165*e1fe3e4aSElliott Hughes 2166*e1fe3e4aSElliott Hughes3.18.0 (released 2017-10-30) 2167*e1fe3e4aSElliott Hughes---------------------------- 2168*e1fe3e4aSElliott Hughes 2169*e1fe3e4aSElliott Hughes- [feaLib] Fixed writing back nested glyph classes (#1086). 2170*e1fe3e4aSElliott Hughes- [TupleVariation] Reactivated shared points logic, bugfixes (#1009). 2171*e1fe3e4aSElliott Hughes- [AAT] Implemented ``morx`` ligature subtables (#1082). 2172*e1fe3e4aSElliott Hughes- [reverseContourPen] Keep duplicate lineTo following a moveTo (#1080, 2173*e1fe3e4aSElliott Hughes https://github.com/googlei18n/cu2qu/issues/51). 2174*e1fe3e4aSElliott Hughes- [varLib.mutator] Suport instantiation of GPOS, GDEF and MVAR (#1079). 2175*e1fe3e4aSElliott Hughes- [sstruct] Fixed issue with ``unicode_literals`` and ``struct`` module in 2176*e1fe3e4aSElliott Hughes old versions of python 2.7 (#993). 2177*e1fe3e4aSElliott Hughes 2178*e1fe3e4aSElliott Hughes3.17.0 (released 2017-10-16) 2179*e1fe3e4aSElliott Hughes---------------------------- 2180*e1fe3e4aSElliott Hughes 2181*e1fe3e4aSElliott Hughes- [svgPathPen] Added an ``SVGPathPen`` that translates segment pen commands 2182*e1fe3e4aSElliott Hughes into SVG path descriptions. Copied from Tal Leming's ``ufo2svg.svgPathPen`` 2183*e1fe3e4aSElliott Hughes https://github.com/typesupply/ufo2svg/blob/d69f992/Lib/ufo2svg/svgPathPen.py 2184*e1fe3e4aSElliott Hughes- [reverseContourPen] Added ``ReverseContourPen``, a filter pen that draws 2185*e1fe3e4aSElliott Hughes contours with the winding direction reversed, while keeping the starting 2186*e1fe3e4aSElliott Hughes point (#1071). 2187*e1fe3e4aSElliott Hughes- [filterPen] Added ``ContourFilterPen`` to manipulate contours as a whole 2188*e1fe3e4aSElliott Hughes rather than segment by segment. 2189*e1fe3e4aSElliott Hughes- [arrayTools] Added ``Vector`` class to apply math operations on an array 2190*e1fe3e4aSElliott Hughes of numbers, and ``pairwise`` function to loop over pairs of items in an 2191*e1fe3e4aSElliott Hughes iterable. 2192*e1fe3e4aSElliott Hughes- [varLib] Added support for building and interpolation of ``cvar`` table 2193*e1fe3e4aSElliott Hughes (f874cf6, a25a401). 2194*e1fe3e4aSElliott Hughes 2195*e1fe3e4aSElliott Hughes3.16.0 (released 2017-10-03) 2196*e1fe3e4aSElliott Hughes---------------------------- 2197*e1fe3e4aSElliott Hughes 2198*e1fe3e4aSElliott Hughes- [head] Try using ``SOURCE_DATE_EPOCH`` environment variable when setting 2199*e1fe3e4aSElliott Hughes the ``head`` modified timestamp to ensure reproducible builds (#1063). 2200*e1fe3e4aSElliott Hughes See https://reproducible-builds.org/specs/source-date-epoch/ 2201*e1fe3e4aSElliott Hughes- [VTT] Decode VTT's ``TSI*`` tables text as UTF-8 (#1060). 2202*e1fe3e4aSElliott Hughes- Added support for Graphite font tables: Feat, Glat, Gloc, Silf and Sill. 2203*e1fe3e4aSElliott Hughes Thanks @mhosken! (#1054). 2204*e1fe3e4aSElliott Hughes- [varLib] Default to using axis "name" attribute if "labelname" element 2205*e1fe3e4aSElliott Hughes is missing (588f524). 2206*e1fe3e4aSElliott Hughes- [merge] Added support for merging Script records. Remove unused features 2207*e1fe3e4aSElliott Hughes and lookups after merge (d802580, 556508b). 2208*e1fe3e4aSElliott Hughes- Added ``fontTools.svgLib`` package. Includes a parser for SVG Paths that 2209*e1fe3e4aSElliott Hughes supports the Pen protocol (#1051). Also, added a snippet to convert SVG 2210*e1fe3e4aSElliott Hughes outlines to UFO GLIF (#1053). 2211*e1fe3e4aSElliott Hughes- [AAT] Added support for ``ankr``, ``bsln``, ``mort``, ``morx``, ``gcid``, 2212*e1fe3e4aSElliott Hughes and ``cidg``. 2213*e1fe3e4aSElliott Hughes- [subset] Implemented subsetting of ``prop``, ``opbd``, ``bsln``, ``lcar``. 2214*e1fe3e4aSElliott Hughes 2215*e1fe3e4aSElliott Hughes3.15.1 (released 2017-08-18) 2216*e1fe3e4aSElliott Hughes---------------------------- 2217*e1fe3e4aSElliott Hughes 2218*e1fe3e4aSElliott Hughes- [otConverters] Implemented ``__add__`` and ``__radd__`` methods on 2219*e1fe3e4aSElliott Hughes ``otConverters._LazyList`` that decompile a lazy list before adding 2220*e1fe3e4aSElliott Hughes it to another list or ``_LazyList`` instance. Fixes an ``AttributeError`` 2221*e1fe3e4aSElliott Hughes in the ``subset`` module when attempting to sum ``_LazyList`` objects 2222*e1fe3e4aSElliott Hughes (6ef48bd2, 1aef1683). 2223*e1fe3e4aSElliott Hughes- [AAT] Support the `opbd` table with optical bounds (a47f6588). 2224*e1fe3e4aSElliott Hughes- [AAT] Support `prop` table with glyph properties (d05617b4). 2225*e1fe3e4aSElliott Hughes 2226*e1fe3e4aSElliott Hughes 2227*e1fe3e4aSElliott Hughes3.15.0 (released 2017-08-17) 2228*e1fe3e4aSElliott Hughes---------------------------- 2229*e1fe3e4aSElliott Hughes 2230*e1fe3e4aSElliott Hughes- [AAT] Added support for AAT lookups. The ``lcar`` table can be decompiled 2231*e1fe3e4aSElliott Hughes and recompiled; futher work needed to handle ``morx`` table (#1025). 2232*e1fe3e4aSElliott Hughes- [subset] Keep (empty) DefaultLangSys for Script 'DFLT' (6eb807b5). 2233*e1fe3e4aSElliott Hughes- [subset] Support GSUB/GPOS.FeatureVariations (fe01d87b). 2234*e1fe3e4aSElliott Hughes- [varLib] In ``models.supportScalars``, ignore an axis when its peak value 2235*e1fe3e4aSElliott Hughes is 0 (fixes #1020). 2236*e1fe3e4aSElliott Hughes- [varLib] Add default mappings to all axes in avar to fix rendering issue 2237*e1fe3e4aSElliott Hughes in some rasterizers (19c4b377, 04eacf13). 2238*e1fe3e4aSElliott Hughes- [varLib] Flatten multiple tail PairPosFormat2 subtables before merging 2239*e1fe3e4aSElliott Hughes (c55ef525). 2240*e1fe3e4aSElliott Hughes- [ttLib] Added support for recalculating font bounding box in ``CFF`` and 2241*e1fe3e4aSElliott Hughes ``head`` tables, and min/max values in ``hhea`` and ``vhea`` tables (#970). 2242*e1fe3e4aSElliott Hughes 2243*e1fe3e4aSElliott Hughes3.14.0 (released 2017-07-31) 2244*e1fe3e4aSElliott Hughes---------------------------- 2245*e1fe3e4aSElliott Hughes 2246*e1fe3e4aSElliott Hughes- [varLib.merger] Remove Extensions subtables before merging (f7c20cf8). 2247*e1fe3e4aSElliott Hughes- [varLib] Initialize the avar segment map with required default entries 2248*e1fe3e4aSElliott Hughes (#1014). 2249*e1fe3e4aSElliott Hughes- [varLib] Implemented optimal IUP optmiziation (#1019). 2250*e1fe3e4aSElliott Hughes- [otData] Add ``AxisValueFormat4`` for STAT table v1.2 from OT v1.8.2 2251*e1fe3e4aSElliott Hughes (#1015). 2252*e1fe3e4aSElliott Hughes- [name] Fixed BCP46 language tag for Mac langID=9: 'si' -> 'sl'. 2253*e1fe3e4aSElliott Hughes- [subset] Return value from ``_DehintingT2Decompiler.op_hintmask`` 2254*e1fe3e4aSElliott Hughes (c0d672ba). 2255*e1fe3e4aSElliott Hughes- [cffLib] Allow to get TopDict by index as well as by name (dca96c9c). 2256*e1fe3e4aSElliott Hughes- [cffLib] Removed global ``isCFF2`` state; use one set of classes for 2257*e1fe3e4aSElliott Hughes both CFF and CFF2, maintaining backward compatibility existing code (#1007). 2258*e1fe3e4aSElliott Hughes- [cffLib] Deprecated maxstack operator, per OpenType spec update 1.8.1. 2259*e1fe3e4aSElliott Hughes- [cffLib] Added missing default (-100) for UnderlinePosition (#983). 2260*e1fe3e4aSElliott Hughes- [feaLib] Enable setting nameIDs greater than 255 (#1003). 2261*e1fe3e4aSElliott Hughes- [varLib] Recalculate ValueFormat when merging SinglePos (#996). 2262*e1fe3e4aSElliott Hughes- [varLib] Do not emit MVAR if there are no entries in the variation store 2263*e1fe3e4aSElliott Hughes (#987). 2264*e1fe3e4aSElliott Hughes- [ttx] For ``-x`` option, pad with space if table tag length is < 4. 2265*e1fe3e4aSElliott Hughes 2266*e1fe3e4aSElliott Hughes3.13.1 (released 2017-05-30) 2267*e1fe3e4aSElliott Hughes---------------------------- 2268*e1fe3e4aSElliott Hughes 2269*e1fe3e4aSElliott Hughes- [feaLib.builder] Removed duplicate lookups optimization. The original 2270*e1fe3e4aSElliott Hughes lookup order and semantics of the feature file are preserved (#976). 2271*e1fe3e4aSElliott Hughes 2272*e1fe3e4aSElliott Hughes3.13.0 (released 2017-05-24) 2273*e1fe3e4aSElliott Hughes---------------------------- 2274*e1fe3e4aSElliott Hughes 2275*e1fe3e4aSElliott Hughes- [varLib.mutator] Implement IUP optimization (#969). 2276*e1fe3e4aSElliott Hughes- [_g_l_y_f.GlyphCoordinates] Changed ``__bool__()`` semantics to match those 2277*e1fe3e4aSElliott Hughes of other iterables (e46f949). Removed ``__abs__()`` (3db5be2). 2278*e1fe3e4aSElliott Hughes- [varLib.interpolate_layout] Added ``mapped`` keyword argument to 2279*e1fe3e4aSElliott Hughes ``interpolate_layout`` to allow disabling avar mapping: if False (default), 2280*e1fe3e4aSElliott Hughes the location is mapped using the map element of the axes in designspace file; 2281*e1fe3e4aSElliott Hughes if True, it is assumed that location is in designspace's internal space and 2282*e1fe3e4aSElliott Hughes no mapping is performed (#950, #975). 2283*e1fe3e4aSElliott Hughes- [varLib.interpolate_layout] Import designspace-loading logic from varLib. 2284*e1fe3e4aSElliott Hughes- [varLib] Fixed bug with recombining PairPosClass2 subtables (81498e5, #914). 2285*e1fe3e4aSElliott Hughes- [cffLib.specializer] When copying iterables, cast to list (462b7f86). 2286*e1fe3e4aSElliott Hughes 2287*e1fe3e4aSElliott Hughes3.12.1 (released 2017-05-18) 2288*e1fe3e4aSElliott Hughes---------------------------- 2289*e1fe3e4aSElliott Hughes 2290*e1fe3e4aSElliott Hughes- [pens.t2CharStringPen] Fixed AttributeError when calling addComponent in 2291*e1fe3e4aSElliott Hughes T2CharStringPen (#965). 2292*e1fe3e4aSElliott Hughes 2293*e1fe3e4aSElliott Hughes3.12.0 (released 2017-05-17) 2294*e1fe3e4aSElliott Hughes---------------------------- 2295*e1fe3e4aSElliott Hughes 2296*e1fe3e4aSElliott Hughes- [cffLib.specializer] Added new ``specializer`` module to optimize CFF 2297*e1fe3e4aSElliott Hughes charstrings, used by the T2CharStringPen (#948). 2298*e1fe3e4aSElliott Hughes- [varLib.mutator] Sort glyphs by component depth before calculating composite 2299*e1fe3e4aSElliott Hughes glyphs' bounding boxes to ensure deltas are correctly caclulated (#945). 2300*e1fe3e4aSElliott Hughes- [_g_l_y_f] Fixed loss of precision in GlyphCoordinates by using 'd' (double) 2301*e1fe3e4aSElliott Hughes instead of 'f' (float) as ``array.array`` typecode (#963, #964). 2302*e1fe3e4aSElliott Hughes 2303*e1fe3e4aSElliott Hughes3.11.0 (released 2017-05-03) 2304*e1fe3e4aSElliott Hughes---------------------------- 2305*e1fe3e4aSElliott Hughes 2306*e1fe3e4aSElliott Hughes- [t2CharStringPen] Initial support for specialized Type2 path operators: 2307*e1fe3e4aSElliott Hughes vmoveto, hmoveto, vlineto, hlineto, vvcurveto, hhcurveto, vhcurveto and 2308*e1fe3e4aSElliott Hughes hvcurveto. This should produce more compact charstrings (#940, #403). 2309*e1fe3e4aSElliott Hughes- [Doc] Added Sphinx sources for the documentation. Thanks @gferreira (#935). 2310*e1fe3e4aSElliott Hughes- [fvar] Expose flags in XML (#932) 2311*e1fe3e4aSElliott Hughes- [name] Add helper function for building multi-lingual names (#921) 2312*e1fe3e4aSElliott Hughes- [varLib] Fixed kern merging when a PairPosFormat2 has ClassDef1 with glyphs 2313*e1fe3e4aSElliott Hughes that are NOT present in the Coverage (1b5e1c4, #939). 2314*e1fe3e4aSElliott Hughes- [varLib] Fixed non-deterministic ClassDef order with PY3 (f056c12, #927). 2315*e1fe3e4aSElliott Hughes- [feLib] Throw an error when the same glyph is defined in multiple mark 2316*e1fe3e4aSElliott Hughes classes within the same lookup (3e3ff00, #453). 2317*e1fe3e4aSElliott Hughes 2318*e1fe3e4aSElliott Hughes3.10.0 (released 2017-04-14) 2319*e1fe3e4aSElliott Hughes---------------------------- 2320*e1fe3e4aSElliott Hughes 2321*e1fe3e4aSElliott Hughes- [varLib] Added support for building ``avar`` table, using the designspace 2322*e1fe3e4aSElliott Hughes ``<map>`` elements. 2323*e1fe3e4aSElliott Hughes- [varLib] Removed unused ``build(..., axisMap)`` argument. Axis map should 2324*e1fe3e4aSElliott Hughes be specified in designspace file now. We do not accept nonstandard axes 2325*e1fe3e4aSElliott Hughes if ``<axes>`` element is not present. 2326*e1fe3e4aSElliott Hughes- [varLib] Removed "custom" axis from the ``standard_axis_map``. This was 2327*e1fe3e4aSElliott Hughes added before when glyphsLib was always exporting the (unused) custom axis. 2328*e1fe3e4aSElliott Hughes- [varLib] Added partial support for building ``MVAR`` table; does not 2329*e1fe3e4aSElliott Hughes implement ``gasp`` table variations yet. 2330*e1fe3e4aSElliott Hughes- [pens] Added FilterPen base class, for pens that control another pen; 2331*e1fe3e4aSElliott Hughes factored out ``addComponent`` method from BasePen into a separate abstract 2332*e1fe3e4aSElliott Hughes DecomposingPen class; added DecomposingRecordingPen, which records 2333*e1fe3e4aSElliott Hughes components decomposed as regular contours. 2334*e1fe3e4aSElliott Hughes- [TSI1] Fixed computation of the textLength of VTT private tables (#913). 2335*e1fe3e4aSElliott Hughes- [loggingTools] Added ``LogMixin`` class providing a ``log`` property to 2336*e1fe3e4aSElliott Hughes subclasses, which returns a ``logging.Logger`` named after the latter. 2337*e1fe3e4aSElliott Hughes- [loggingTools] Added ``assertRegex`` method to ``CapturingLogHandler``. 2338*e1fe3e4aSElliott Hughes- [py23] Added backport for python 3's ``types.SimpleNamespace`` class. 2339*e1fe3e4aSElliott Hughes- [EBLC] Fixed issue with python 3 ``zip`` iterator. 2340*e1fe3e4aSElliott Hughes 2341*e1fe3e4aSElliott Hughes3.9.2 (released 2017-04-08) 2342*e1fe3e4aSElliott Hughes--------------------------- 2343*e1fe3e4aSElliott Hughes 2344*e1fe3e4aSElliott Hughes- [pens] Added pen to draw glyphs using WxPython ``GraphicsPath`` class: 2345*e1fe3e4aSElliott Hughes https://wxpython.org/docs/api/wx.GraphicsPath-class.html 2346*e1fe3e4aSElliott Hughes- [varLib.merger] Fixed issue with recombining multiple PairPosFormat2 2347*e1fe3e4aSElliott Hughes subtables (#888) 2348*e1fe3e4aSElliott Hughes- [varLib] Do not encode gvar deltas that are all zeroes, or if all values 2349*e1fe3e4aSElliott Hughes are smaller than tolerance. 2350*e1fe3e4aSElliott Hughes- [ttLib] _TTGlyphSet glyphs now also have ``height`` and ``tsb`` (top 2351*e1fe3e4aSElliott Hughes side bearing) attributes from the ``vmtx`` table, if present. 2352*e1fe3e4aSElliott Hughes- [glyf] In ``GlyphCoordintes`` class, added ``__bool__`` / ``__nonzero__`` 2353*e1fe3e4aSElliott Hughes methods, and ``array`` property to get raw array. 2354*e1fe3e4aSElliott Hughes- [ttx] Support reading TTX files with BOM (#896) 2355*e1fe3e4aSElliott Hughes- [CFF2] Fixed the reporting of the number of regions in the font. 2356*e1fe3e4aSElliott Hughes 2357*e1fe3e4aSElliott Hughes3.9.1 (released 2017-03-20) 2358*e1fe3e4aSElliott Hughes--------------------------- 2359*e1fe3e4aSElliott Hughes 2360*e1fe3e4aSElliott Hughes- [varLib.merger] Fixed issue while recombining multiple PairPosFormat2 2361*e1fe3e4aSElliott Hughes subtables if they were split because of offset overflows (9798c30). 2362*e1fe3e4aSElliott Hughes- [varLib.merger] Only merge multiple PairPosFormat1 subtables if there is 2363*e1fe3e4aSElliott Hughes at least one of the fonts with a non-empty Format1 subtable (0f5a46b). 2364*e1fe3e4aSElliott Hughes- [varLib.merger] Fixed IndexError with empty ClassDef1 in PairPosFormat2 2365*e1fe3e4aSElliott Hughes (aad0d46). 2366*e1fe3e4aSElliott Hughes- [varLib.merger] Avoid reusing Class2Record (mutable) objects (e6125b3). 2367*e1fe3e4aSElliott Hughes- [varLib.merger] Calculate ClassDef1 and ClassDef2's Format when merging 2368*e1fe3e4aSElliott Hughes PairPosFormat2 (23511fd). 2369*e1fe3e4aSElliott Hughes- [macUtils] Added missing ttLib import (b05f203). 2370*e1fe3e4aSElliott Hughes 2371*e1fe3e4aSElliott Hughes3.9.0 (released 2017-03-13) 2372*e1fe3e4aSElliott Hughes--------------------------- 2373*e1fe3e4aSElliott Hughes 2374*e1fe3e4aSElliott Hughes- [feaLib] Added (partial) support for parsing feature file comments ``# ...`` 2375*e1fe3e4aSElliott Hughes appearing in between statements (#879). 2376*e1fe3e4aSElliott Hughes- [feaLib] Cleaned up syntax tree for FeatureNames. 2377*e1fe3e4aSElliott Hughes- [ttLib] Added support for reading/writing ``CFF2`` table (thanks to 2378*e1fe3e4aSElliott Hughes @readroberts at Adobe), and ``TTFA`` (ttfautohint) table. 2379*e1fe3e4aSElliott Hughes- [varLib] Fixed regression introduced with 3.8.0 in the calculation of 2380*e1fe3e4aSElliott Hughes ``NumShorts``, i.e. the number of deltas in ItemVariationData's delta sets 2381*e1fe3e4aSElliott Hughes that use a 16-bit representation (b2825ff). 2382*e1fe3e4aSElliott Hughes 2383*e1fe3e4aSElliott Hughes3.8.0 (released 2017-03-05) 2384*e1fe3e4aSElliott Hughes--------------------------- 2385*e1fe3e4aSElliott Hughes 2386*e1fe3e4aSElliott Hughes- New pens: MomentsPen, StatisticsPen, RecordingPen, and TeePen. 2387*e1fe3e4aSElliott Hughes- [misc] Added new ``fontTools.misc.symfont`` module, for symbolic font 2388*e1fe3e4aSElliott Hughes statistical analysis; requires ``sympy`` (http://www.sympy.org/en/index.html) 2389*e1fe3e4aSElliott Hughes- [varLib] Added experimental ``fontTools.varLib.interpolatable`` module for 2390*e1fe3e4aSElliott Hughes finding wrong contour order between different masters 2391*e1fe3e4aSElliott Hughes- [varLib] designspace.load() now returns a dictionary, instead of a tuple, 2392*e1fe3e4aSElliott Hughes and supports <axes> element (#864); the 'masters' item was renamed 'sources', 2393*e1fe3e4aSElliott Hughes like the <sources> element in the designspace document 2394*e1fe3e4aSElliott Hughes- [ttLib] Fixed issue with recalculating ``head`` modified timestamp when 2395*e1fe3e4aSElliott Hughes saving CFF fonts 2396*e1fe3e4aSElliott Hughes- [ttLib] In TupleVariation, round deltas before compiling (#861, fixed #592) 2397*e1fe3e4aSElliott Hughes- [feaLib] Ignore duplicate glyphs in classes used as MarkFilteringSet and 2398*e1fe3e4aSElliott Hughes MarkAttachmentType (#863) 2399*e1fe3e4aSElliott Hughes- [merge] Changed the ``gasp`` table merge logic so that only the one from 2400*e1fe3e4aSElliott Hughes the first font is retained, similar to other hinting tables (#862) 2401*e1fe3e4aSElliott Hughes- [Tests] Added tests for the ``varLib`` package, as well as test fonts 2402*e1fe3e4aSElliott Hughes from the "Annotated OpenType Specification" (AOTS) to exercise ``ttLib``'s 2403*e1fe3e4aSElliott Hughes table readers/writers (<https://github.com/adobe-type-tools/aots>) 2404*e1fe3e4aSElliott Hughes 2405*e1fe3e4aSElliott Hughes3.7.2 (released 2017-02-17) 2406*e1fe3e4aSElliott Hughes--------------------------- 2407*e1fe3e4aSElliott Hughes 2408*e1fe3e4aSElliott Hughes- [subset] Keep advance widths when stripping ".notdef" glyph outline in 2409*e1fe3e4aSElliott Hughes CID-keyed CFF fonts (#845) 2410*e1fe3e4aSElliott Hughes- [feaLib] Zero values now produce the same results as makeotf (#633, #848) 2411*e1fe3e4aSElliott Hughes- [feaLib] More compact encoding for “Contextual positioning with in-line 2412*e1fe3e4aSElliott Hughes single positioning rules” (#514) 2413*e1fe3e4aSElliott Hughes 2414*e1fe3e4aSElliott Hughes3.7.1 (released 2017-02-15) 2415*e1fe3e4aSElliott Hughes--------------------------- 2416*e1fe3e4aSElliott Hughes 2417*e1fe3e4aSElliott Hughes- [subset] Fixed issue with ``--no-hinting`` option whereby advance widths in 2418*e1fe3e4aSElliott Hughes Type 2 charstrings were also being stripped (#709, #343) 2419*e1fe3e4aSElliott Hughes- [feaLib] include statements now resolve relative paths like makeotf (#838) 2420*e1fe3e4aSElliott Hughes- [feaLib] table ``name`` now handles Unicode codepoints beyond the Basic 2421*e1fe3e4aSElliott Hughes Multilingual Plane, also supports old-style MacOS platform encodings (#842) 2422*e1fe3e4aSElliott Hughes- [feaLib] correctly escape string literals when emitting feature syntax (#780) 2423*e1fe3e4aSElliott Hughes 2424*e1fe3e4aSElliott Hughes3.7.0 (released 2017-02-11) 2425*e1fe3e4aSElliott Hughes--------------------------- 2426*e1fe3e4aSElliott Hughes 2427*e1fe3e4aSElliott Hughes- [ttx, mtiLib] Preserve ordering of glyph alternates in GSUB type 3 (#833). 2428*e1fe3e4aSElliott Hughes- [feaLib] Glyph names can have dashes, as per new AFDKO syntax v1.20 (#559). 2429*e1fe3e4aSElliott Hughes- [feaLib] feaLib.Parser now needs the font's glyph map for parsing. 2430*e1fe3e4aSElliott Hughes- [varLib] Fix regression where GPOS values were stored as 0. 2431*e1fe3e4aSElliott Hughes- [varLib] Allow merging of class-based kerning when ClassDefs are different 2432*e1fe3e4aSElliott Hughes 2433*e1fe3e4aSElliott Hughes3.6.3 (released 2017-02-06) 2434*e1fe3e4aSElliott Hughes--------------------------- 2435*e1fe3e4aSElliott Hughes 2436*e1fe3e4aSElliott Hughes- [varLib] Fix building variation of PairPosFormat2 (b5c34ce). 2437*e1fe3e4aSElliott Hughes- Populate defaults even for otTables that have postRead (e45297b). 2438*e1fe3e4aSElliott Hughes- Fix compiling of MultipleSubstFormat1 with zero 'out' glyphs (b887860). 2439*e1fe3e4aSElliott Hughes 2440*e1fe3e4aSElliott Hughes3.6.2 (released 2017-01-30) 2441*e1fe3e4aSElliott Hughes--------------------------- 2442*e1fe3e4aSElliott Hughes 2443*e1fe3e4aSElliott Hughes- [varLib.merger] Fixed "TypeError: reduce() of empty sequence with no 2444*e1fe3e4aSElliott Hughes initial value" (3717dc6). 2445*e1fe3e4aSElliott Hughes 2446*e1fe3e4aSElliott Hughes3.6.1 (released 2017-01-28) 2447*e1fe3e4aSElliott Hughes--------------------------- 2448*e1fe3e4aSElliott Hughes 2449*e1fe3e4aSElliott Hughes- [py23] Fixed unhandled exception occurring at interpreter shutdown in 2450*e1fe3e4aSElliott Hughes the "last resort" logging handler (972b3e6). 2451*e1fe3e4aSElliott Hughes- [agl] Ensure all glyph names are of native 'str' type; avoid mixing 2452*e1fe3e4aSElliott Hughes 'str' and 'unicode' in TTFont.glyphOrder (d8c4058). 2453*e1fe3e4aSElliott Hughes- Fixed inconsistent title levels in README.rst that caused PyPI to 2454*e1fe3e4aSElliott Hughes incorrectly render the reStructuredText page. 2455*e1fe3e4aSElliott Hughes 2456*e1fe3e4aSElliott Hughes3.6.0 (released 2017-01-26) 2457*e1fe3e4aSElliott Hughes--------------------------- 2458*e1fe3e4aSElliott Hughes 2459*e1fe3e4aSElliott Hughes- [varLib] Refactored and improved the variation-font-building process. 2460*e1fe3e4aSElliott Hughes- Assembly code in the fpgm, prep, and glyf tables is now indented in 2461*e1fe3e4aSElliott Hughes XML output for improved readability. The ``instruction`` element is 2462*e1fe3e4aSElliott Hughes written as a simple tag if empty (#819). 2463*e1fe3e4aSElliott Hughes- [ttx] Fixed 'I/O operation on closed file' error when dumping 2464*e1fe3e4aSElliott Hughes multiple TTXs to standard output with the '-o -' option. 2465*e1fe3e4aSElliott Hughes- The unit test modules (``*_test.py``) have been moved outside of the 2466*e1fe3e4aSElliott Hughes fontTools package to the Tests folder, thus they are no longer 2467*e1fe3e4aSElliott Hughes installed (#811). 2468*e1fe3e4aSElliott Hughes 2469*e1fe3e4aSElliott Hughes3.5.0 (released 2017-01-14) 2470*e1fe3e4aSElliott Hughes--------------------------- 2471*e1fe3e4aSElliott Hughes 2472*e1fe3e4aSElliott Hughes- Font tables read from XML can now be written back to XML with no 2473*e1fe3e4aSElliott Hughes loss. 2474*e1fe3e4aSElliott Hughes- GSUB/GPOS LookupType is written out in XML as an element, not 2475*e1fe3e4aSElliott Hughes comment. (#792) 2476*e1fe3e4aSElliott Hughes- When parsing cmap table, do not store items mapped to glyph id 0. 2477*e1fe3e4aSElliott Hughes (#790) 2478*e1fe3e4aSElliott Hughes- [otlLib] Make ClassDef sorting deterministic. Fixes #766 (7d1ddb2) 2479*e1fe3e4aSElliott Hughes- [mtiLib] Added unit tests (#787) 2480*e1fe3e4aSElliott Hughes- [cvar] Implemented cvar table 2481*e1fe3e4aSElliott Hughes- [gvar] Renamed GlyphVariation to TupleVariation to match OpenType 2482*e1fe3e4aSElliott Hughes terminology. 2483*e1fe3e4aSElliott Hughes- [otTables] Handle gracefully empty VarData.Item array when compiling 2484*e1fe3e4aSElliott Hughes XML. (#797) 2485*e1fe3e4aSElliott Hughes- [varLib] Re-enabled generation of ``HVAR`` table for fonts with 2486*e1fe3e4aSElliott Hughes TrueType outlines; removed ``--build-HVAR`` command-line option. 2487*e1fe3e4aSElliott Hughes- [feaLib] The parser can now be extended to support non-standard 2488*e1fe3e4aSElliott Hughes statements in FEA code by using a customized Abstract Syntax Tree. 2489*e1fe3e4aSElliott Hughes See, for example, ``feaLib.builder_test.test_extensions`` and 2490*e1fe3e4aSElliott Hughes baseClass.feax (#794, fixes #773). 2491*e1fe3e4aSElliott Hughes- [feaLib] Added ``feaLib`` command to the 'fonttools' command-line 2492*e1fe3e4aSElliott Hughes tool; applies a feature file to a font. ``fonttools feaLib -h`` for 2493*e1fe3e4aSElliott Hughes help. 2494*e1fe3e4aSElliott Hughes- [pens] The ``T2CharStringPen`` now takes an optional 2495*e1fe3e4aSElliott Hughes ``roundTolerance`` argument to control the rounding of coordinates 2496*e1fe3e4aSElliott Hughes (#804, fixes #769). 2497*e1fe3e4aSElliott Hughes- [ci] Measure test coverage on all supported python versions and OSes, 2498*e1fe3e4aSElliott Hughes combine coverage data and upload to 2499*e1fe3e4aSElliott Hughes https://codecov.io/gh/fonttools/fonttools (#786) 2500*e1fe3e4aSElliott Hughes- [ci] Configured Travis and Appveyor for running tests on Python 3.6 2501*e1fe3e4aSElliott Hughes (#785, 55c03bc) 2502*e1fe3e4aSElliott Hughes- The manual pages installation directory can be customized through 2503*e1fe3e4aSElliott Hughes ``FONTTOOLS_MANPATH`` environment variable (#799, fixes #84). 2504*e1fe3e4aSElliott Hughes- [Snippets] Added otf2ttf.py, for converting fonts from CFF to 2505*e1fe3e4aSElliott Hughes TrueType using the googlei18n/cu2qu module (#802) 2506*e1fe3e4aSElliott Hughes 2507*e1fe3e4aSElliott Hughes3.4.0 (released 2016-12-21) 2508*e1fe3e4aSElliott Hughes--------------------------- 2509*e1fe3e4aSElliott Hughes 2510*e1fe3e4aSElliott Hughes- [feaLib] Added support for generating FEA text from abstract syntax 2511*e1fe3e4aSElliott Hughes tree (AST) objects (#776). Thanks @mhosken 2512*e1fe3e4aSElliott Hughes- Added ``agl.toUnicode`` function to convert AGL-compliant glyph names 2513*e1fe3e4aSElliott Hughes to Unicode strings (#774) 2514*e1fe3e4aSElliott Hughes- Implemented MVAR table (b4d5381) 2515*e1fe3e4aSElliott Hughes 2516*e1fe3e4aSElliott Hughes3.3.1 (released 2016-12-15) 2517*e1fe3e4aSElliott Hughes--------------------------- 2518*e1fe3e4aSElliott Hughes 2519*e1fe3e4aSElliott Hughes- [setup] We no longer use versioneer.py to compute fonttools version 2520*e1fe3e4aSElliott Hughes from git metadata, as this has caused issues for some users (#767). 2521*e1fe3e4aSElliott Hughes Now we bump the version strings manually with a custom ``release`` 2522*e1fe3e4aSElliott Hughes command of setup.py script. 2523*e1fe3e4aSElliott Hughes 2524*e1fe3e4aSElliott Hughes3.3.0 (released 2016-12-06) 2525*e1fe3e4aSElliott Hughes--------------------------- 2526*e1fe3e4aSElliott Hughes 2527*e1fe3e4aSElliott Hughes- [ttLib] Implemented STAT table from OpenType 1.8 (#758) 2528*e1fe3e4aSElliott Hughes- [cffLib] Fixed decompilation of CFF fonts containing non-standard 2529*e1fe3e4aSElliott Hughes key/value pairs in FontDict (issue #740; PR #744) 2530*e1fe3e4aSElliott Hughes- [py23] minor: in ``round3`` function, allow the second argument to be 2531*e1fe3e4aSElliott Hughes ``None`` (#757) 2532*e1fe3e4aSElliott Hughes- The standalone ``sstruct`` and ``xmlWriter`` modules, deprecated 2533*e1fe3e4aSElliott Hughes since vesion 3.2.0, have been removed. They can be imported from the 2534*e1fe3e4aSElliott Hughes ``fontTools.misc`` package. 2535*e1fe3e4aSElliott Hughes 2536*e1fe3e4aSElliott Hughes3.2.3 (released 2016-12-02) 2537*e1fe3e4aSElliott Hughes--------------------------- 2538*e1fe3e4aSElliott Hughes 2539*e1fe3e4aSElliott Hughes- [py23] optimized performance of round3 function; added backport for 2540*e1fe3e4aSElliott Hughes py35 math.isclose() (9d8dacb) 2541*e1fe3e4aSElliott Hughes- [subset] fixed issue with 'narrow' (UCS-2) Python 2 builds and 2542*e1fe3e4aSElliott Hughes ``--text``/``--text-file`` options containing non-BMP chararcters 2543*e1fe3e4aSElliott Hughes (16d0e5e) 2544*e1fe3e4aSElliott Hughes- [varLib] fixed issuewhen normalizing location values (8fa2ee1, #749) 2545*e1fe3e4aSElliott Hughes- [inspect] Made it compatible with both python2 and python3 (167ee60, 2546*e1fe3e4aSElliott Hughes #748). Thanks @pnemade 2547*e1fe3e4aSElliott Hughes 2548*e1fe3e4aSElliott Hughes3.2.2 (released 2016-11-24) 2549*e1fe3e4aSElliott Hughes--------------------------- 2550*e1fe3e4aSElliott Hughes 2551*e1fe3e4aSElliott Hughes- [varLib] Do not emit null axes in fvar (1bebcec). Thanks @robmck-ms 2552*e1fe3e4aSElliott Hughes- [varLib] Handle fonts without GPOS (7915a45) 2553*e1fe3e4aSElliott Hughes- [merge] Ignore LangSys if None (a11bc56) 2554*e1fe3e4aSElliott Hughes- [subset] Fix subsetting MathVariants (78d3cbe) 2555*e1fe3e4aSElliott Hughes- [OS/2] Fix "Private Use (plane 15)" range (08a0d55). Thanks @mashabow 2556*e1fe3e4aSElliott Hughes 2557*e1fe3e4aSElliott Hughes3.2.1 (released 2016-11-03) 2558*e1fe3e4aSElliott Hughes--------------------------- 2559*e1fe3e4aSElliott Hughes 2560*e1fe3e4aSElliott Hughes- [OS/2] fix checking ``fsSelection`` bits matching ``head.macStyle`` 2561*e1fe3e4aSElliott Hughes bits 2562*e1fe3e4aSElliott Hughes- [varLib] added ``--build-HVAR`` option to generate ``HVAR`` table for 2563*e1fe3e4aSElliott Hughes fonts with TrueType outlines. For ``CFF2``, it is enabled by default. 2564*e1fe3e4aSElliott Hughes 2565*e1fe3e4aSElliott Hughes3.2.0 (released 2016-11-02) 2566*e1fe3e4aSElliott Hughes--------------------------- 2567*e1fe3e4aSElliott Hughes 2568*e1fe3e4aSElliott Hughes- [varLib] Improve support for OpenType 1.8 Variable Fonts: 2569*e1fe3e4aSElliott Hughes- Implement GDEF's VariationStore 2570*e1fe3e4aSElliott Hughes- Implement HVAR/VVAR tables 2571*e1fe3e4aSElliott Hughes- Partial support for loading MutatorMath .designspace files with 2572*e1fe3e4aSElliott Hughes varLib.designspace module 2573*e1fe3e4aSElliott Hughes- Add varLib.models with Variation fonts interpolation models 2574*e1fe3e4aSElliott Hughes- Implement GSUB/GPOS FeatureVariations 2575*e1fe3e4aSElliott Hughes- Initial support for interpolating and merging OpenType Layout tables 2576*e1fe3e4aSElliott Hughes (see ``varLib.interpolate_layout`` and ``varLib.merger`` modules) 2577*e1fe3e4aSElliott Hughes- [API change] Change version to be an integer instead of a float in 2578*e1fe3e4aSElliott Hughes XML output for GSUB, GPOS, GDEF, MATH, BASE, JSTF, HVAR, VVAR, feat, 2579*e1fe3e4aSElliott Hughes hhea and vhea tables. Scripts that set the Version for those to 1.0 2580*e1fe3e4aSElliott Hughes or other float values also need fixing. A warning is emitted when 2581*e1fe3e4aSElliott Hughes code or XML needs fix. 2582*e1fe3e4aSElliott Hughes- several bug fixes to the cffLib module, contributed by Adobe's 2583*e1fe3e4aSElliott Hughes @readroberts 2584*e1fe3e4aSElliott Hughes- The XML output for CFF table now has a 'major' and 'minor' elements 2585*e1fe3e4aSElliott Hughes for specifying whether it's version 1.0 or 2.0 (support for CFF2 is 2586*e1fe3e4aSElliott Hughes coming soon) 2587*e1fe3e4aSElliott Hughes- [setup.py] remove undocumented/deprecated ``extra_path`` Distutils 2588*e1fe3e4aSElliott Hughes argument. This means that we no longer create a "FontTools" subfolder 2589*e1fe3e4aSElliott Hughes in site-packages containing the actual fontTools package, as well as 2590*e1fe3e4aSElliott Hughes the standalone xmlWriter and sstruct modules. The latter modules are 2591*e1fe3e4aSElliott Hughes also deprecated, and scheduled for removal in upcoming releases. 2592*e1fe3e4aSElliott Hughes Please change your import statements to point to from fontTools.misc 2593*e1fe3e4aSElliott Hughes import xmlWriter and from fontTools.misc import sstruct. 2594*e1fe3e4aSElliott Hughes- [scripts] Add a 'fonttools' command-line tool that simply runs 2595*e1fe3e4aSElliott Hughes ``fontTools.*`` sub-modules: e.g. ``fonttools ttx``, 2596*e1fe3e4aSElliott Hughes ``fonttools subset``, etc. 2597*e1fe3e4aSElliott Hughes- [hmtx/vmts] Read advance width/heights as unsigned short (uint16); 2598*e1fe3e4aSElliott Hughes automatically round float values to integers. 2599*e1fe3e4aSElliott Hughes- [ttLib/xmlWriter] add 'newlinestr=None' keyword argument to 2600*e1fe3e4aSElliott Hughes ``TTFont.saveXML`` for overriding os-specific line endings (passed on 2601*e1fe3e4aSElliott Hughes to ``XMLWriter`` instances). 2602*e1fe3e4aSElliott Hughes- [versioning] Use versioneer instead of ``setuptools_scm`` to 2603*e1fe3e4aSElliott Hughes dynamically load version info from a git checkout at import time. 2604*e1fe3e4aSElliott Hughes- [feaLib] Support backslash-prefixed glyph names. 2605*e1fe3e4aSElliott Hughes 2606*e1fe3e4aSElliott Hughes3.1.2 (released 2016-09-27) 2607*e1fe3e4aSElliott Hughes--------------------------- 2608*e1fe3e4aSElliott Hughes 2609*e1fe3e4aSElliott Hughes- restore Makefile as an alternative way to build/check/install 2610*e1fe3e4aSElliott Hughes- README.md: update instructions for installing package from source, 2611*e1fe3e4aSElliott Hughes and for running test suite 2612*e1fe3e4aSElliott Hughes- NEWS: Change log was out of sync with tagged release 2613*e1fe3e4aSElliott Hughes 2614*e1fe3e4aSElliott Hughes3.1.1 (released 2016-09-27) 2615*e1fe3e4aSElliott Hughes--------------------------- 2616*e1fe3e4aSElliott Hughes 2617*e1fe3e4aSElliott Hughes- Fix ``ttLibVersion`` attribute in TTX files still showing '3.0' 2618*e1fe3e4aSElliott Hughes instead of '3.1'. 2619*e1fe3e4aSElliott Hughes- Use ``setuptools_scm`` to manage package versions. 2620*e1fe3e4aSElliott Hughes 2621*e1fe3e4aSElliott Hughes3.1.0 (released 2016-09-26) 2622*e1fe3e4aSElliott Hughes--------------------------- 2623*e1fe3e4aSElliott Hughes 2624*e1fe3e4aSElliott Hughes- [feaLib] New library to parse and compile Adobe FDK OpenType Feature 2625*e1fe3e4aSElliott Hughes files. 2626*e1fe3e4aSElliott Hughes- [mtiLib] New library to parse and compile Monotype 'FontDame' 2627*e1fe3e4aSElliott Hughes OpenType Layout Tables files. 2628*e1fe3e4aSElliott Hughes- [voltLib] New library to parse Microsoft VOLT project files. 2629*e1fe3e4aSElliott Hughes- [otlLib] New library to work with OpenType Layout tables. 2630*e1fe3e4aSElliott Hughes- [varLib] New library to work with OpenType Font Variations. 2631*e1fe3e4aSElliott Hughes- [pens] Add ttGlyphPen to draw to TrueType glyphs, and t2CharStringPen 2632*e1fe3e4aSElliott Hughes to draw to Type 2 Charstrings (CFF); add areaPen and perimeterPen. 2633*e1fe3e4aSElliott Hughes- [ttLib.tables] Implement 'meta' and 'trak' tables. 2634*e1fe3e4aSElliott Hughes- [ttx] Add --flavor option for compiling to 'woff' or 'woff2'; add 2635*e1fe3e4aSElliott Hughes ``--with-zopfli`` option to use Zopfli to compress WOFF 1.0 fonts. 2636*e1fe3e4aSElliott Hughes- [subset] Support subsetting 'COLR'/'CPAL' and 'CBDT'/'CBLC' color 2637*e1fe3e4aSElliott Hughes fonts tables, and 'gvar' table for variation fonts. 2638*e1fe3e4aSElliott Hughes- [Snippets] Add ``symfont.py``, for symbolic font statistics analysis; 2639*e1fe3e4aSElliott Hughes interpolatable.py, a preliminary script for detecting interpolation 2640*e1fe3e4aSElliott Hughes errors; ``{merge,dump}_woff_metadata.py``. 2641*e1fe3e4aSElliott Hughes- [classifyTools] Helpers to classify things into classes. 2642*e1fe3e4aSElliott Hughes- [CI] Run tests on Windows, Linux and macOS using Appveyor and Travis 2643*e1fe3e4aSElliott Hughes CI; check unit test coverage with Coverage.py/Coveralls; automatic 2644*e1fe3e4aSElliott Hughes deployment to PyPI on tags. 2645*e1fe3e4aSElliott Hughes- [loggingTools] Use Python built-in logging module to print messages. 2646*e1fe3e4aSElliott Hughes- [py23] Make round() behave like Python 3 built-in round(); define 2647*e1fe3e4aSElliott Hughes round2() and round3(). 2648*e1fe3e4aSElliott Hughes 2649*e1fe3e4aSElliott Hughes3.0 (released 2015-09-01) 2650*e1fe3e4aSElliott Hughes------------------------- 2651*e1fe3e4aSElliott Hughes 2652*e1fe3e4aSElliott Hughes- Add Snippet scripts for cmap subtable format conversion, printing 2653*e1fe3e4aSElliott Hughes GSUB/GPOS features, building a GX font from two masters 2654*e1fe3e4aSElliott Hughes- TTX WOFF2 support and a ``-f`` option to overwrite output file(s) 2655*e1fe3e4aSElliott Hughes- Support GX tables: ``avar``, ``gvar``, ``fvar``, ``meta`` 2656*e1fe3e4aSElliott Hughes- Support ``feat`` and gzip-compressed SVG tables 2657*e1fe3e4aSElliott Hughes- Upgrade Mac East Asian encodings to native implementation if 2658*e1fe3e4aSElliott Hughes available 2659*e1fe3e4aSElliott Hughes- Add Roman Croatian and Romanian encodings, codecs for mac-extended 2660*e1fe3e4aSElliott Hughes East Asian encodings 2661*e1fe3e4aSElliott Hughes- Implement optimal GLYF glyph outline packing; disabled by default 2662*e1fe3e4aSElliott Hughes 2663*e1fe3e4aSElliott Hughes2.5 (released 2014-09-24) 2664*e1fe3e4aSElliott Hughes------------------------- 2665*e1fe3e4aSElliott Hughes 2666*e1fe3e4aSElliott Hughes- Add a Qt pen 2667*e1fe3e4aSElliott Hughes- Add VDMX table converter 2668*e1fe3e4aSElliott Hughes- Load all OpenType sub-structures lazily 2669*e1fe3e4aSElliott Hughes- Add support for cmap format 13. 2670*e1fe3e4aSElliott Hughes- Add pyftmerge tool 2671*e1fe3e4aSElliott Hughes- Update to Unicode 6.3.0d3 2672*e1fe3e4aSElliott Hughes- Add pyftinspect tool 2673*e1fe3e4aSElliott Hughes- Add support for Google CBLC/CBDT color bitmaps, standard EBLC/EBDT 2674*e1fe3e4aSElliott Hughes embedded bitmaps, and ``SVG`` table (thanks to Read Roberts at Adobe) 2675*e1fe3e4aSElliott Hughes- Add support for loading, saving and ttx'ing WOFF file format 2676*e1fe3e4aSElliott Hughes- Add support for Microsoft COLR/CPAL layered color glyphs 2677*e1fe3e4aSElliott Hughes- Support PyPy 2678*e1fe3e4aSElliott Hughes- Support Jython, by replacing numpy with array/lists modules and 2679*e1fe3e4aSElliott Hughes removed it, pure-Python StringIO, not cStringIO 2680*e1fe3e4aSElliott Hughes- Add pyftsubset and Subsetter object, supporting CFF and TTF 2681*e1fe3e4aSElliott Hughes- Add to ttx args for -q for quiet mode, -z to choose a bitmap dump 2682*e1fe3e4aSElliott Hughes format 2683*e1fe3e4aSElliott Hughes 2684*e1fe3e4aSElliott Hughes2.4 (released 2013-06-22) 2685*e1fe3e4aSElliott Hughes------------------------- 2686*e1fe3e4aSElliott Hughes 2687*e1fe3e4aSElliott Hughes- Option to write to arbitrary files 2688*e1fe3e4aSElliott Hughes- Better dump format for DSIG 2689*e1fe3e4aSElliott Hughes- Better detection of OTF XML 2690*e1fe3e4aSElliott Hughes- Fix issue with Apple's kern table format 2691*e1fe3e4aSElliott Hughes- Fix mangling of TT glyph programs 2692*e1fe3e4aSElliott Hughes- Fix issues related to mona.ttf 2693*e1fe3e4aSElliott Hughes- Fix Windows Installer instructions 2694*e1fe3e4aSElliott Hughes- Fix some modern MacOS issues 2695*e1fe3e4aSElliott Hughes- Fix minor issues and typos 2696*e1fe3e4aSElliott Hughes 2697*e1fe3e4aSElliott Hughes2.3 (released 2009-11-08) 2698*e1fe3e4aSElliott Hughes------------------------- 2699*e1fe3e4aSElliott Hughes 2700*e1fe3e4aSElliott Hughes- TrueType Collection (TTC) support 2701*e1fe3e4aSElliott Hughes- Python 2.6 support 2702*e1fe3e4aSElliott Hughes- Update Unicode data to 5.2.0 2703*e1fe3e4aSElliott Hughes- Couple of bug fixes 2704*e1fe3e4aSElliott Hughes 2705*e1fe3e4aSElliott Hughes2.2 (released 2008-05-18) 2706*e1fe3e4aSElliott Hughes------------------------- 2707*e1fe3e4aSElliott Hughes 2708*e1fe3e4aSElliott Hughes- ClearType support 2709*e1fe3e4aSElliott Hughes- cmap format 1 support 2710*e1fe3e4aSElliott Hughes- PFA font support 2711*e1fe3e4aSElliott Hughes- Switched from Numeric to numpy 2712*e1fe3e4aSElliott Hughes- Update Unicode data to 5.1.0 2713*e1fe3e4aSElliott Hughes- Update AGLFN data to 1.6 2714*e1fe3e4aSElliott Hughes- Many bug fixes 2715*e1fe3e4aSElliott Hughes 2716*e1fe3e4aSElliott Hughes2.1 (released 2008-01-28) 2717*e1fe3e4aSElliott Hughes------------------------- 2718*e1fe3e4aSElliott Hughes 2719*e1fe3e4aSElliott Hughes- Many years worth of fixes and features 2720*e1fe3e4aSElliott Hughes 2721*e1fe3e4aSElliott Hughes2.0b2 (released 2002-??-??) 2722*e1fe3e4aSElliott Hughes--------------------------- 2723*e1fe3e4aSElliott Hughes 2724*e1fe3e4aSElliott Hughes- Be "forgiving" when interpreting the maxp table version field: 2725*e1fe3e4aSElliott Hughes interpret any value as 1.0 if it's not 0.5. Fixes dumping of these 2726*e1fe3e4aSElliott Hughes GPL fonts: http://www.freebsd.org/cgi/pds.cgi?ports/chinese/wangttf 2727*e1fe3e4aSElliott Hughes- Fixed ttx -l: it turned out this part of the code didn't work with 2728*e1fe3e4aSElliott Hughes Python 2.2.1 and earlier. My bad to do most of my testing with a 2729*e1fe3e4aSElliott Hughes different version than I shipped TTX with :-( 2730*e1fe3e4aSElliott Hughes- Fixed bug in ClassDef format 1 subtable (Andreas Seidel bumped into 2731*e1fe3e4aSElliott Hughes this one). 2732*e1fe3e4aSElliott Hughes 2733*e1fe3e4aSElliott Hughes2.0b1 (released 2002-09-10) 2734*e1fe3e4aSElliott Hughes--------------------------- 2735*e1fe3e4aSElliott Hughes 2736*e1fe3e4aSElliott Hughes- Fixed embarrassing bug: the master checksum in the head table is now 2737*e1fe3e4aSElliott Hughes calculated correctly even on little-endian platforms (such as Intel). 2738*e1fe3e4aSElliott Hughes- Made the cmap format 4 compiler smarter: the binary data it creates 2739*e1fe3e4aSElliott Hughes is now more or less as compact as possible. TTX now makes more 2740*e1fe3e4aSElliott Hughes compact data than in any shipping font I've tested it with. 2741*e1fe3e4aSElliott Hughes- Dump glyph names as a separate "GlyphOrder" pseudo table as opposed 2742*e1fe3e4aSElliott Hughes to as part of the glyf table (obviously needed for CFF-OTF's). 2743*e1fe3e4aSElliott Hughes- Added proper support for the CFF table. 2744*e1fe3e4aSElliott Hughes- Don't barf on empty tables (questionable, but "there are font out 2745*e1fe3e4aSElliott Hughes there...") 2746*e1fe3e4aSElliott Hughes- When writing TT glyf data, align glyphs on 4-byte boundaries. This 2747*e1fe3e4aSElliott Hughes seems to be the current recommendation by MS. Also: don't barf on 2748*e1fe3e4aSElliott Hughes fonts which are already 4-byte aligned. 2749*e1fe3e4aSElliott Hughes- Windows installer contributed bu Adam Twardoch! Yay! 2750*e1fe3e4aSElliott Hughes- Changed the command line interface again, now by creating one new 2751*e1fe3e4aSElliott Hughes tool replacing the old ones: ttx It dumps and compiles, depending on 2752*e1fe3e4aSElliott Hughes input file types. The options have changed somewhat. 2753*e1fe3e4aSElliott Hughes- The -d option is back (output dir) 2754*e1fe3e4aSElliott Hughes- ttcompile's -i options is now called -m (as in "merge"), to avoid 2755*e1fe3e4aSElliott Hughes clash with dump's -i. 2756*e1fe3e4aSElliott Hughes- The -s option ("split tables") no longer creates a directory, but 2757*e1fe3e4aSElliott Hughes instead outputs a small .ttx file containing references to the 2758*e1fe3e4aSElliott Hughes individual table files. This is not a true link, it's a simple file 2759*e1fe3e4aSElliott Hughes name, and the referenced file should be in the same directory so 2760*e1fe3e4aSElliott Hughes ttcompile can find them. 2761*e1fe3e4aSElliott Hughes- compile no longer accepts a directory as input argument. Instead it 2762*e1fe3e4aSElliott Hughes can parse the new "mini-ttx" format as output by "ttx -s". 2763*e1fe3e4aSElliott Hughes- all arguments are input files 2764*e1fe3e4aSElliott Hughes- Renamed the command line programs and moved them to the Tools 2765*e1fe3e4aSElliott Hughes subdirectory. They are now installed by the setup.py install script. 2766*e1fe3e4aSElliott Hughes- Added OpenType support. BASE, GDEF, GPOS, GSUB and JSTF are (almost) 2767*e1fe3e4aSElliott Hughes fully supported. The XML output is not yet final, as I'm still 2768*e1fe3e4aSElliott Hughes considering to output certain subtables in a more human-friendly 2769*e1fe3e4aSElliott Hughes manner. 2770*e1fe3e4aSElliott Hughes- Fixed 'kern' table to correctly accept subtables it doesn't know 2771*e1fe3e4aSElliott Hughes about, as well as interpreting Apple's definition of the 'kern' table 2772*e1fe3e4aSElliott Hughes headers correctly. 2773*e1fe3e4aSElliott Hughes- Fixed bug where glyphnames were not calculated from 'cmap' if it was 2774*e1fe3e4aSElliott Hughes (one of the) first tables to be decompiled. More specifically: it 2775*e1fe3e4aSElliott Hughes cmap was the first to ask for a glyphID -> glyphName mapping. 2776*e1fe3e4aSElliott Hughes- Switched XML parsers: use expat instead of xmlproc. Should be faster. 2777*e1fe3e4aSElliott Hughes- Removed my UnicodeString object: I now require Python 2.0 or up, 2778*e1fe3e4aSElliott Hughes which has unicode support built in. 2779*e1fe3e4aSElliott Hughes- Removed assert in glyf table: redundant data at the end of the table 2780*e1fe3e4aSElliott Hughes is now ignored instead of raising an error. Should become a warning. 2781*e1fe3e4aSElliott Hughes- Fixed bug in hmtx/vmtx code that only occured if all advances were 2782*e1fe3e4aSElliott Hughes equal. 2783*e1fe3e4aSElliott Hughes- Fixed subtle bug in TT instruction disassembler. 2784*e1fe3e4aSElliott Hughes- Couple of fixes to the 'post' table. 2785*e1fe3e4aSElliott Hughes- Updated OS/2 table to latest spec. 2786*e1fe3e4aSElliott Hughes 2787*e1fe3e4aSElliott Hughes1.0b1 (released 2001-08-10) 2788*e1fe3e4aSElliott Hughes--------------------------- 2789*e1fe3e4aSElliott Hughes 2790*e1fe3e4aSElliott Hughes- Reorganized the command line interface for ttDump.py and 2791*e1fe3e4aSElliott Hughes ttCompile.py, they now behave more like "normal" command line tool, 2792*e1fe3e4aSElliott Hughes in that they accept multiple input files for batch processing. 2793*e1fe3e4aSElliott Hughes- ttDump.py and ttCompile.py don't silently override files anymore, but 2794*e1fe3e4aSElliott Hughes ask before doing so. Can be overridden by -f. 2795*e1fe3e4aSElliott Hughes- Added -d option to both ttDump.py and ttCompile.py. 2796*e1fe3e4aSElliott Hughes- Installation is now done with distutils. (Needs work for environments 2797*e1fe3e4aSElliott Hughes without compilers.) 2798*e1fe3e4aSElliott Hughes- Updated installation instructions. 2799*e1fe3e4aSElliott Hughes- Added some workarounds so as to handle certain buggy fonts more 2800*e1fe3e4aSElliott Hughes gracefully. 2801*e1fe3e4aSElliott Hughes- Updated Unicode table to Unicode 3.0 (Thanks Antoine!) 2802*e1fe3e4aSElliott Hughes- Included a Python script by Adam Twardoch that adds some useful stuff 2803*e1fe3e4aSElliott Hughes to the Windows registry. 2804*e1fe3e4aSElliott Hughes- Moved the project to SourceForge. 2805*e1fe3e4aSElliott Hughes 2806*e1fe3e4aSElliott Hughes1.0a6 (released 2000-03-15) 2807*e1fe3e4aSElliott Hughes--------------------------- 2808*e1fe3e4aSElliott Hughes 2809*e1fe3e4aSElliott Hughes- Big reorganization: made ttLib a subpackage of the new fontTools 2810*e1fe3e4aSElliott Hughes package, changed several module names. Called the entire suite 2811*e1fe3e4aSElliott Hughes "FontTools" 2812*e1fe3e4aSElliott Hughes- Added several submodules to fontTools, some new, some older. 2813*e1fe3e4aSElliott Hughes- Added experimental CFF/GPOS/GSUB support to ttLib, read-only (but XML 2814*e1fe3e4aSElliott Hughes dumping of GPOS/GSUB is for now disabled) 2815*e1fe3e4aSElliott Hughes- Fixed hdmx endian bug 2816*e1fe3e4aSElliott Hughes- Added -b option to ttCompile.py, it disables recalculation of 2817*e1fe3e4aSElliott Hughes bounding boxes, as requested by Werner Lemberg. 2818*e1fe3e4aSElliott Hughes- Renamed tt2xml.pt to ttDump.py and xml2tt.py to ttCompile.py 2819*e1fe3e4aSElliott Hughes- Use ".ttx" as file extension instead of ".xml". 2820*e1fe3e4aSElliott Hughes- TTX is now the name of the XML-based *format* for TT fonts, and not 2821*e1fe3e4aSElliott Hughes just an application. 2822*e1fe3e4aSElliott Hughes 2823*e1fe3e4aSElliott Hughes1.0a5 2824*e1fe3e4aSElliott Hughes----- 2825*e1fe3e4aSElliott Hughes 2826*e1fe3e4aSElliott HughesNever released 2827*e1fe3e4aSElliott Hughes 2828*e1fe3e4aSElliott Hughes- More tables supported: hdmx, vhea, vmtx 2829*e1fe3e4aSElliott Hughes 2830*e1fe3e4aSElliott Hughes1.0a3 & 1.0a4 2831*e1fe3e4aSElliott Hughes------------- 2832*e1fe3e4aSElliott Hughes 2833*e1fe3e4aSElliott HughesNever released 2834*e1fe3e4aSElliott Hughes 2835*e1fe3e4aSElliott Hughes- fixed most portability issues 2836*e1fe3e4aSElliott Hughes- retracted the "Euro_or_currency" change from 1.0a2: it was 2837*e1fe3e4aSElliott Hughes nonsense! 2838*e1fe3e4aSElliott Hughes 2839*e1fe3e4aSElliott Hughes1.0a2 (released 1999-05-02) 2840*e1fe3e4aSElliott Hughes--------------------------- 2841*e1fe3e4aSElliott Hughes 2842*e1fe3e4aSElliott Hughes- binary release for MacOS 2843*e1fe3e4aSElliott Hughes- genenates full FOND resources: including width table, PS font name 2844*e1fe3e4aSElliott Hughes info and kern table if applicable. 2845*e1fe3e4aSElliott Hughes- added cmap format 4 support. Extra: dumps Unicode char names as XML 2846*e1fe3e4aSElliott Hughes comments! 2847*e1fe3e4aSElliott Hughes- added cmap format 6 support 2848*e1fe3e4aSElliott Hughes- now accepts true type files starting with "true" (instead of just 2849*e1fe3e4aSElliott Hughes 0x00010000 and "OTTO") 2850*e1fe3e4aSElliott Hughes- 'glyf' table support is now complete: I added support for composite 2851*e1fe3e4aSElliott Hughes scale, xy-scale and two-by-two for the 'glyf' table. For now, 2852*e1fe3e4aSElliott Hughes component offset scale behaviour defaults to Apple-style. This only 2853*e1fe3e4aSElliott Hughes affects the (re)calculation of the glyph bounding box. 2854*e1fe3e4aSElliott Hughes- changed "Euro" to "Euro_or_currency" in the Standard Apple Glyph 2855*e1fe3e4aSElliott Hughes order list, since we cannot tell from the 'post' table which is 2856*e1fe3e4aSElliott Hughes meant. I should probably doublecheck with a Unicode encoding if 2857*e1fe3e4aSElliott Hughes available. (This does not affect the output!) 2858*e1fe3e4aSElliott Hughes 2859*e1fe3e4aSElliott HughesFixed bugs: - 'hhea' table is now recalculated correctly - fixed wrong 2860*e1fe3e4aSElliott Hughesassumption about sfnt resource names 2861*e1fe3e4aSElliott Hughes 2862*e1fe3e4aSElliott Hughes1.0a1 (released 1999-04-27) 2863*e1fe3e4aSElliott Hughes--------------------------- 2864*e1fe3e4aSElliott Hughes 2865*e1fe3e4aSElliott Hughes- initial binary release for MacOS 2866