xref: /aosp_15_r20/external/fonttools/NEWS.rst (revision e1fe3e4ad2793916b15cccdc4a7da52a7e1dd0e9)
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