• Home
  • Raw
  • Download

Lines Matching +full:6 +full:- +full:aat +full:- +full:fonts

1 3.39.0 (released 2019-03-19)
2 ----------------------------
4 - [ttLib/glyf] Raise more specific error when encountering recursive
6 - [Doc/designspaceLib] Defined new ``public.skipExportGlyphs`` lib key (#1534,
7 unified-font-object/ufo-spec#84).
8 - [varLib] Use ``vmtx`` to compute vertical phantom points; or ``hhea.ascent``
10 - [gvar/cvar] Sort XML element's min/value/max attributes in TupleVariation
12 - [varLib.plot] Added support for 2D plots with only 1 variation axis (#1522).
13 - [designspaceLib] Use axes maps when normalizing locations in
15 - [mutator] Set ``OVERLAP_SIMPLE`` and ``OVERLAP_COMPOUND`` glyf flags by
16 default in ``instantiateVariableFont``. Added ``--no-overlap`` cli option
18 - [subset] Fixed subsetting ``VVAR`` table (#1516, #1517).
20 option ``--retain-gids`` is used.
21 - [feaLib] Added ``forceChained`` in MultipleSubstStatement (#1511).
26 - [varLib] In ``load_designspace``, provide a default English name for the
28 - Remove pyftinspect because it is unmaintained and bitrotted.
30 3.38.0 (released 2019-02-18)
31 ----------------------------
33 - [cffLib] Fixed RecursionError when unpickling or deepcopying TTFont with
35 - [subset] Fixed AttributeError when using --desubroutinize option (#1490).
37 - [CPAL] Make Color a subclass of namedtuple (173a0f5).
38 - [feaLib] Allow hyphen in glyph class names.
39 - [feaLib] Added 'tables' option to __main__.py (#1497).
40 - [feaLib] Add support for special-case contextual positioning formatting
42 - [svgLib] Support converting SVG basic shapes (rect, circle, etc.) into
44 - [Snippets] Added name-viewer.ipynb Jupyter notebook.
47 3.37.3 (released 2019-02-05)
48 ----------------------------
50 - The previous release accidentally changed several files from Unix to DOS
51 line-endings. Fix that.
53 3.37.2 (released 2019-02-05)
54 ----------------------------
56 - [varLib] Temporarily revert the fix to ``load_masters()``, which caused a
57 crash in ``interpolate_layout()`` when ``deepcopy``-ing OTFs.
59 3.37.1 (released 2019-02-05)
60 ----------------------------
62 - [varLib] ``load_masters()`` now actually assigns the fonts it loads to the
64 - [varLib] Fixed an MVAR table generation crash when sparse masters were
66 - [voltLib] ``parse_coverage_()`` returns a tuple instead of an ast.Enum.
67 - [feaLib] A MarkClassDefinition inside a block is no longer doubly indented
70 3.37.0 (released 2019-01-28)
71 ----------------------------
73 - [svgLib] Added support for converting elliptical arcs to cubic bezier curves
75 - [py23] Added backport for ``math.isfinite``.
76 - [varLib] Apply HIDDEN flag to fvar axis if designspace axis has attribute
78 - Fixed "DeprecationWarning: invalid escape sequence" in Python 3.7.
79 - [voltLib] Fixed parsing glyph groups. Distinguish different PROCESS_MARKS.
81 - [feaLib] Distinguish missing value and explicit ``<NULL>`` for PairPos2
82 format A (#1459). Round-trip ``useExtension`` keyword. Implemented
84 - [subset] Insert empty widths into hdmx when retaining gids (#1458).
86 3.36.0 (released 2019-01-17)
87 ----------------------------
89 - [ttx] Added ``--no-recalc-timestamp`` option to keep the original font's
91 - [ttx/psCharStrings] Fixed issues while dumping and round-tripping CFF2 table
93 - [voltLib] Fixed check for duplicate anchors (#1450). Don't try to read past
95 - [varLib] Use sentinel value -0x8000 (-32768) to ignore post.underlineThickness
98 - [subset] Added ``--retain-gids`` option to subset font without modifying the
100 - [ufoLib] Replace deprecated calls to ``getbytes`` and ``setbytes`` with new
102 - [varLib] Allow loading masters from TTX files as well (#1441).
104 3.35.2 (released 2019-01-14)
105 ----------------------------
107 - [hmtx/vmtx]: Allow to compile/decompile ``hmtx`` and ``vmtx`` tables even
110 - [varLib] Added support for localized axes' ``labelname`` and named instances'
113 3.35.1 (released 2019-01-09)
114 ----------------------------
116 - [_m_a_x_p] Include ``maxComponentElements`` in ``maxp`` table's recalculation.
118 3.35.0 (released 2019-01-07)
119 ----------------------------
121 - [psCharStrings] In ``encodeFloat`` function, use float's "general format" with
126 - [_n_a_m_e/fontBuilder] Make ``_n_a_m_e_table.addMultilingualName`` also add
130 - [varLib] Make ``build`` optionally accept a ``DesignSpaceDocument`` object,
134 - [sfnt] Allow SFNTReader objects to be deep-copied.
135 - Require typing>=3.6.4 on py27 to fix issue with singledispatch (#1423).
136 - [designspaceLib/t1Lib/macRes] Fixed some cases where pathlib.Path objects were
138 - [varLib] Fixed merging of multiple PairPosFormat2 subtables (#1411).
139 - [varLib] The default STAT table version is now set to 1.1, to improve
142 3.34.2 (released 2018-12-17)
143 ----------------------------
145 - [merge] Fixed AssertionError when none of the script tables in GPOS/GSUB have
148 3.34.1 (released 2018-12-17)
149 ----------------------------
151 - [varLib] Work around macOS rendering issue for composites without gvar entry (#1381).
153 3.34.0 (released 2018-12-14)
154 ----------------------------
156 - [varLib] Support generation of CFF2 variable fonts. ``model.reorderMasters()``
159 - [cffLib, subset] Code clean-up and fixing related to CFF2 support.
160 - [ttLib.tables.ttProgram] Use raw strings for regex patterns (#1389).
161 - [fontbuilder] Initial support for building CFF2 fonts. Set CFF's
163 - [plistLib] Accept the more general ``collections.Mapping`` instead of the
167 3.33.0 (released 2018-11-30)
168 ----------------------------
169 - [subset] subsetter bug fix with variable fonts.
170 - [varLib.featureVar] Improve FeatureVariations generation with many rules.
171 - [varLib] Enable sparse masters when building variable fonts:
172 https://github.com/fonttools/fonttools/pull/1368#issuecomment-437257368
173 - [varLib.mutator] Add IDEF for GETVARIATION opcode, for handling hints in an
175 - [ttLib] Ignore the length of kern table subtable format 0
177 3.32.0 (released 2018-11-01)
178 ----------------------------
180 - [ufoLib] Make ``UFOWriter`` a subclass of ``UFOReader``, and use mixins
182 - [featureVars] Fixed normalization error when a condition's minimum/maximum
184 - [setup.py] Added ``[plot]`` to extras, to optionally install ``matplotlib``,
186 - [varLib] Take total bounding box into account when resolving model (7ee81c8).
188 - [subset] Don't error if ``STAT`` has no ``AxisValue`` tables.
189 - [fontBuilder] Added a new submodule which contains a ``FontBuilder`` wrapper
194 3.31.0 (released 2018-10-21)
195 ----------------------------
197 - [ufoLib] Merged the `ufoLib <https://github.com/unified-font-objects/ufoLib>`__
205 - [morx] Support AAT action type to insert glyphs and clean up compilation
206 of AAT action tables (4a1871f, 2011ccf).
207 - [subset] The ``--no-hinting`` on a CFF font now also drops the optional
210 - [subset] Include nameIDs referenced by STAT table (#1327).
211 - [loggingTools] Added ``msg=None`` argument to
213 - [varLib.mutator] Implemented ``FeatureVariations`` instantiation (#1244).
214 - [g_l_y_f] Added PointPen support to ``_TTGlyph`` objects (#1334).
216 3.30.0 (released 2018-09-18)
217 ----------------------------
219 - [feaLib] Skip building noop class PairPos subtables when Coverage is NULL
221 - [ttx] Expose the previously reserved bit flag ``OVERLAP_SIMPLE`` of
223 implementations to specify a non-zero fill with overlapping contours (#1316).
224 - [ttLib] Added support for decompiling/compiling ``TS1C`` tables containing
226 - [varLib] Use ``fontTools.designspaceLib`` to read DesignSpaceDocument. The
230 - [varLib] Implemented building GSUB FeatureVariations table from the ``rules``
232 - [subset] Added ``--no-layout-closure`` option to not expand the subset with
234 will be subset to only rules that are relevant to the otherwise-specified
237 3.29.1 (released 2018-09-10)
238 ----------------------------
240 - [feaLib] Fixed issue whereby lookups from DFLT/dflt were not included in the
241 DFLT/non-dflt language systems (#1307).
242 - [graphite] Fixed issue on big-endian architectures (e.g. ppc64) (#1311).
243 - [subset] Added ``--layout-scripts`` option to add/exclude set of OpenType
247 3.29.0 (released 2018-07-26)
248 ----------------------------
250 - [feaLib] In the OTL table builder, when the ``name`` table is excluded
253 - [otBase] Try ``ExtensionLookup`` if other offset-overflow methods fail
255 - [feaLib] Added support for explicit ``subtable;`` break statements in
257 - [cffLib.specializer] Make sure the stack depth does not exceed maxstack - 1,
260 - [otTables] Added support for fixing offset overflow errors occurring inside
262 - [subset] Write the default output file extension based on ``--flavor`` option,
264 - [unicodedata] Updated Blocks, Scripts and ScriptExtensions for Unicode 11
266 - [xmlWriter] Added context manager to XMLWriter class to autoclose file
268 - [psCharStrings] Optimize the charstring's bytecode by encoding as integers
270 - [ttFont] Fixed missing import of ``TTLibError`` exception (#1285).
271 - [feaLib] Allow any languages other than ``dflt`` under ``DFLT`` script
274 3.28.0 (released 2018-06-19)
275 ----------------------------
277 - [featureVars] Added experimental module to build ``FeatureVariations``
279 - [fixedTools] Added ``otRound`` to round floats to nearest integer towards
283 - [subset] Improved GSUB closure memoize algorithm.
284 - [varLib.models] Fixed regression in model resolution (180124, #1269).
285 - [feaLib.ast] Fixed error when converting ``SubtableStatement`` to string
287 - [varLib.mutator] Set ``OS/2.usWeightClass`` and ``usWidthClass``, and
290 - [py23/loggingTools] Don't automatically set ``logging.lastResort`` handler
293 3.27.1 (released 2018-06-11)
294 ----------------------------
296 - [ttGlyphPen] Issue a warning and skip building non-existing components
298 - [tests] Fixed issue running ttx_test.py from a tagged commit.
300 3.27.0 (released 2018-06-11)
301 ----------------------------
303 - [designspaceLib] Added new ``conditionSet`` element to ``rule`` element in
309 - [cffLib] Fixed issues when compiling CFF2 or converting from CFF when the
311 - [varLib] Avoid attempting to build ``cvar`` table when ``glyf`` table is not
312 present, as is the case for CFF2 fonts.
313 - [subset] Handle None coverages in MarkGlyphSets; revert commit 02616ab that
315 - [ttFont] Allow to build glyph order from ``maxp.numGlyphs`` when ``post`` or
317 - [ttFont] Added ``__len__`` method to ``_TTGlyphSet``.
318 - [glyf] Ensure ``GlyphCoordinates`` never overflow signed shorts (#1230).
319 - [py23] Added alias for ``itertools.izip`` shadowing the built-in ``zip``.
320 - [loggingTools] Memoize ``log`` property of ``LogMixin`` class (fbab12).
321 - [ttx] Impoved test coverage (#1261).
322 - [Snippets] Addded script to append a suffix to all family names in a font.
323 - [varLib.plot] Make it work with matplotlib >= 2.1 (b38e2b).
325 3.26.0 (released 2018-05-03)
326 ----------------------------
328 - [designspace] Added a new optional ``layer`` attribute to the source element,
333 - [varLib.models] Refine modeling one last time (0ecf5c5).
334 - [otBase] Fixed sharing of tables referred to by different offset sizes
336 - [subset] Don't drop a GDEF that only has VarStore (fc819d6). Set to None
338 - [varLib]: Added ``--master-finder`` command-line option (#1249).
339 - [varLib.mutator] Prune fvar nameIDs from instance's name table (#1245).
340 - [otTables] Allow decompiling bad ClassDef tables with invalid format, with
342 - [varLib] Make STAT v1.2 and reuse nameIDs from fvar table (#1242).
343 - [varLib.plot] Show master locations. Set axis limits to -1, +1.
344 - [subset] Handle HVAR direct mapping. Passthrough 'cvar'.
345 Added ``--font-number`` command-line option for collections.
346 - [t1Lib] Allow a text encoding to be specified when parsing a Type 1 font
348 - [ttLib] Added context manager API to ``TTFont`` class, so it can be used in
349 ``with`` statements to auto-close the file when exiting the context (#1232).
351 3.25.0 (released 2018-04-03)
352 ----------------------------
354 - [varLib] Improved support-resolution algorithm. Previously, the on-axis
360 - [varLib.models] Added a ``main()`` entry point, that takes positions and
362 - [varLib.plot] Added new module to plot a designspace's
364 - [varLib.mutator] Added -o option to specify output file path (2ef60fa).
365 - [otTables] Fixed IndexError while pruning of HVAR pre-write (6b6c34a).
366 - [varLib.models] Convert delta array to floats if values overflows signed
369 3.24.2 (released 2018-03-26)
370 ----------------------------
372 - [otBase] Don't fail during ``ValueRecord`` copy if src has more items.
378 3.24.1 (released 2018-03-06)
379 ----------------------------
381 - [varLib] Don't remap the same ``DeviceTable`` twice in VarStore optimizer
383 - [varLib] Add ``--disable-iup`` option to ``fonttools varLib`` script,
386 - [ttCollection] Fixed issue while decompiling ttc with python3 (#1207).
388 3.24.0 (released 2018-03-01)
389 ----------------------------
391 - [ttGlyphPen] Decompose composite glyphs if any components' transform is too
395 - [ttx] Added new ``-g`` option to dump glyphs from the ``glyf`` table
397 - Copied ``ufoLib.filenames`` module to ``fontTools.misc.filenames``, used
398 for the ttx split-glyphs option (#1202).
399 - [feaLib] Added support for ``cvParameters`` blocks in Character Variant
400 feautures ``cv01-cv99`` (#860, #1169).
401 - [Snippets] Added ``checksum.py`` script to generate/check SHA1 hash of
403 - [varLib.mutator] Fixed issue while instantiating some variable fonts
406 - [varLib/subset] Fixed issue with subsetting GPOS variation data not
408 - [feaLib/voltLib] In all AST elements, the ``location`` is no longer a
414 3.23.0 (released 2018-02-26)
415 ----------------------------
417 - [designspaceLib] Added an optional ``lib`` element to the designspace as a
421 in-memory font objects (#1175).
422 - [cffLib] Fixed issue with lazy-loading of attributes when attempting to
424 - [ttx] Fixed regression introduced in 3.22.0 that affected the split tables
425 ``-s`` option (#1188).
426 - [feaLib] Added ``IncludedFeaNotFound`` custom exception subclass, raised
428 - [otTables] Changed ``VarIdxMap`` to use glyph names internally instead of
431 - [varLib] Implemented VarStore optimizer (#1184).
432 - [subset] Implemented pruning of GDEF VarStore, HVAR and MVAR (#1179).
433 - [sfnt] Restore backward compatiblity with ``numFonts`` attribute of
435 - [merge] Initial support for merging ``LangSysRecords`` (#1180).
436 - [ttCollection] don't seek(0) when writing to possibly unseekable strems.
437 - [subset] Keep all ``--name-IDs`` from 0 to 6 by default (#1170, #605, #114).
438 - [cffLib] Added ``width`` module to calculate optimal CFF default and
440 - [varLib] Don’t fail if STAT already in the master fonts (#1166).
442 3.22.0 (released 2018-02-04)
443 ----------------------------
445 - [subset] Support subsetting ``endchar`` acting as ``seac``-like components
447 - [feaLib] Allow to build from pre-parsed ``ast.FeatureFile`` object.
450 - [textTools] Replaced ``safeEval`` with ``ast.literal_eval`` (#1139).
451 - [feaLib] Added option to the parser to not resolve ``include`` statements
453 - [ttLib] Added new ``ttCollection`` module to read/write TrueType and
454 OpenType Collections. Exports a ``TTCollection`` class with a ``fonts``
456 and ``saveXML``, plus some list-like methods. The ``importXML`` method is
458 - [unicodeadata] Added ``ot_tag_to_script`` function that converts from
460 - Added new ``designspaceLib`` subpackage, originally from Erik Van Blokland's
464 - Added new FontTools icon images (8ee7c32).
465 - [unicodedata] Added ``script_horizontal_direction`` function that returns
467 - [otConverters] Don't write descriptive name string as XML comment if the
469 - [unicodedata] Add ``ot_tags_from_script`` function to get the list of
471 - [feaLib] Don't error when "enumerated" kern pairs conflict with preceding
473 - [loggingTools] In ``CapturingLogHandler.assertRegex`` method, match the
475 - [sbix] Fixed TypeError when concatenating str and bytes (#1154).
476 - [bezierTools] Implemented cusp support and removed ``approximate_fallback``
479 3.21.2 (released 2018-01-08)
480 ----------------------------
482 - [varLib] Fixed merging PairPos Format1/2 with missing subtables (#1125).
484 3.21.1 (released 2018-01-03)
485 ----------------------------
487 - [feaLib] Allow mixed single/multiple substitutions (#612)
488 - Added missing ``*.afm`` test assets to MAINFEST.in (#1137).
489 - Fixed dumping ``SVG`` tables containing color palettes (#1124).
491 3.21.0 (released 2017-12-18)
492 ----------------------------
494 - [cmap] when compiling format6 subtable, don't assume gid0 is always called
496 - [ot] Allow decompiling fonts with bad Coverage format number (1aafae8).
497 - Change FontTools licence to MIT (#1127).
498 - [post] Prune extra names already in standard Mac set (df1e8c7).
499 - [subset] Delete empty SubrsIndex after subsetting (#994, #1118).
500 - [varLib] Don't share points in cvar by default, as it currently fails on
502 - [afmLib] Make poor old afmLib work on python3.
504 3.20.1 (released 2017-11-22)
505 ----------------------------
507 - [unicodedata] Fixed issue with ``script`` and ``script_extension`` functions
508 returning inconsistent short vs long names. They both return the short four-
510 to look up the long human-readable script name from the script code, and
513 3.20.0 (released 2017-11-21)
514 ----------------------------
516 - [unicodedata] Addded new module ``fontTools.unicodedata`` which exports the
517 same interface as the built-in ``unicodedata`` module, with the addition of
522 - [feaLib] Added ``__str__`` method to all ``ast`` elements (delegates to the
524 - [feaLib] ``Parser`` constructor now accepts a ``glyphNames`` iterable
527 - [bezierTools] Added arc length calculation functions originally from
529 - [varLib] Started generating STAT table (8af4309). Right now it just reflects
532 * Name-table entries are not shared with fvar.
533 - [py23] Added backports for ``redirect_stdout`` and ``redirect_stderr``
535 - [Graphite] Fixed some round-trip bugs (#1093).
537 3.19.0 (released 2017-11-06)
538 ----------------------------
540 - [varLib] Try set of used points instead of all points when testing whether to
542 - [CFF2] Fixed issue with reading/writing PrivateDict BlueValues to TTX file.
548 - [_k_e_r_n] Fixed compilation of AAT kern version=1.0 tables (#1089, #1094)
549 - [ttLib] Added getBestCmap() convenience method to TTFont class and cmap table
552 - [morx] Emit more meaningful subtable flags. Implement InsertionMorphAction
554 3.18.0 (released 2017-10-30)
555 ----------------------------
557 - [feaLib] Fixed writing back nested glyph classes (#1086).
558 - [TupleVariation] Reactivated shared points logic, bugfixes (#1009).
559 - [AAT] Implemented ``morx`` ligature subtables (#1082).
560 - [reverseContourPen] Keep duplicate lineTo following a moveTo (#1080,
562 - [varLib.mutator] Suport instantiation of GPOS, GDEF and MVAR (#1079).
563 - [sstruct] Fixed issue with ``unicode_literals`` and ``struct`` module in
566 3.17.0 (released 2017-10-16)
567 ----------------------------
569 - [svgPathPen] Added an ``SVGPathPen`` that translates segment pen commands
572 - [reverseContourPen] Added ``ReverseContourPen``, a filter pen that draws
575 - [filterPen] Added ``ContourFilterPen`` to manipulate contours as a whole
577 - [arrayTools] Added ``Vector`` class to apply math operations on an array
580 - [varLib] Added support for building and interpolation of ``cvar`` table
583 3.16.0 (released 2017-10-03)
584 ----------------------------
586 - [head] Try using ``SOURCE_DATE_EPOCH`` environment variable when setting
588 See https://reproducible-builds.org/specs/source-date-epoch/
589 - [VTT] Decode VTT's ``TSI*`` tables text as UTF-8 (#1060).
590 - Added support for Graphite font tables: Feat, Glat, Gloc, Silf and Sill.
592 - [varLib] Default to using axis "name" attribute if "labelname" element
594 - [merge] Added support for merging Script records. Remove unused features
596 - Added ``fontTools.svgLib`` package. Includes a parser for SVG Paths that
599 - [AAT] Added support for ``ankr``, ``bsln``, ``mort``, ``morx``, ``gcid``,
601 - [subset] Implemented subsetting of ``prop``, ``opbd``, ``bsln``, ``lcar``.
603 3.15.1 (released 2017-08-18)
604 ----------------------------
606 - [otConverters] Implemented ``__add__`` and ``__radd__`` methods on
610 (6ef48bd2, 1aef1683).
611 - [AAT] Support the `opbd` table with optical bounds (a47f6588).
612 - [AAT] Support `prop` table with glyph properties (d05617b4).
615 3.15.0 (released 2017-08-17)
616 ----------------------------
618 - [AAT] Added support for AAT lookups. The ``lcar`` table can be decompiled
620 - [subset] Keep (empty) DefaultLangSys for Script 'DFLT' (6eb807b5).
621 - [subset] Support GSUB/GPOS.FeatureVariations (fe01d87b).
622 - [varLib] In ``models.supportScalars``, ignore an axis when its peak value
624 - [varLib] Add default mappings to all axes in avar to fix rendering issue
626 - [varLib] Flatten multiple tail PairPosFormat2 subtables before merging
628 - [ttLib] Added support for recalculating font bounding box in ``CFF`` and
631 3.14.0 (released 2017-07-31)
632 ----------------------------
634 - [varLib.merger] Remove Extensions subtables before merging (f7c20cf8).
635 - [varLib] Initialize the avar segment map with required default entries
637 - [varLib] Implemented optimal IUP optmiziation (#1019).
638 - [otData] Add ``AxisValueFormat4`` for STAT table v1.2 from OT v1.8.2
640 - [name] Fixed BCP46 language tag for Mac langID=9: 'si' -> 'sl'.
641 - [subset] Return value from ``_DehintingT2Decompiler.op_hintmask``
643 - [cffLib] Allow to get TopDict by index as well as by name (dca96c9c).
644 - [cffLib] Removed global ``isCFF2`` state; use one set of classes for
646 - [cffLib] Deprecated maxstack operator, per OpenType spec update 1.8.1.
647 - [cffLib] Added missing default (-100) for UnderlinePosition (#983).
648 - [feaLib] Enable setting nameIDs greater than 255 (#1003).
649 - [varLib] Recalculate ValueFormat when merging SinglePos (#996).
650 - [varLib] Do not emit MVAR if there are no entries in the variation store
652 - [ttx] For ``-x`` option, pad with space if table tag length is < 4.
654 3.13.1 (released 2017-05-30)
655 ----------------------------
657 - [feaLib.builder] Removed duplicate lookups optimization. The original
660 3.13.0 (released 2017-05-24)
661 ----------------------------
663 - [varLib.mutator] Implement IUP optimization (#969).
664 - [_g_l_y_f.GlyphCoordinates] Changed ``__bool__()`` semantics to match those
666 - [varLib.interpolate_layout] Added ``mapped`` keyword argument to
671 - [varLib.interpolate_layout] Import designspace-loading logic from varLib.
672 - [varLib] Fixed bug with recombining PairPosClass2 subtables (81498e5, #914).
673 - [cffLib.specializer] When copying iterables, cast to list (462b7f86).
675 3.12.1 (released 2017-05-18)
676 ----------------------------
678 - [pens.t2CharStringPen] Fixed AttributeError when calling addComponent in
681 3.12.0 (released 2017-05-17)
682 ----------------------------
684 - [cffLib.specializer] Added new ``specializer`` module to optimize CFF
686 - [varLib.mutator] Sort glyphs by component depth before calculating composite
688 - [_g_l_y_f] Fixed loss of precision in GlyphCoordinates by using 'd' (double)
691 3.11.0 (released 2017-05-03)
692 ----------------------------
694 - [t2CharStringPen] Initial support for specialized Type2 path operators:
697 - [Doc] Added Sphinx sources for the documentation. Thanks @gferreira (#935).
698 - [fvar] Expose flags in XML (#932)
699 - [name] Add helper function for building multi-lingual names (#921)
700 - [varLib] Fixed kern merging when a PairPosFormat2 has ClassDef1 with glyphs
702 - [varLib] Fixed non-deterministic ClassDef order with PY3 (f056c12, #927).
703 - [feLib] Throw an error when the same glyph is defined in multiple mark
706 3.10.0 (released 2017-04-14)
707 ----------------------------
709 - [varLib] Added support for building ``avar`` table, using the designspace
711 - [varLib] Removed unused ``build(..., axisMap)`` argument. Axis map should
714 - [varLib] Removed "custom" axis from the ``standard_axis_map``. This was
716 - [varLib] Added partial support for building ``MVAR`` table; does not
718 - [pens] Added FilterPen base class, for pens that control another pen;
722 - [TSI1] Fixed computation of the textLength of VTT private tables (#913).
723 - [loggingTools] Added ``LogMixin`` class providing a ``log`` property to
725 - [loggingTools] Added ``assertRegex`` method to ``CapturingLogHandler``.
726 - [py23] Added backport for python 3's ``types.SimpleNamespace`` class.
727 - [EBLC] Fixed issue with python 3 ``zip`` iterator.
729 3.9.2 (released 2017-04-08)
730 ---------------------------
732 - [pens] Added pen to draw glyphs using WxPython ``GraphicsPath`` class:
733 https://wxpython.org/docs/api/wx.GraphicsPath-class.html
734 - [varLib.merger] Fixed issue with recombining multiple PairPosFormat2
736 - [varLib] Do not encode gvar deltas that are all zeroes, or if all values
738 - [ttLib] _TTGlyphSet glyphs now also have ``height`` and ``tsb`` (top
740 - [glyf] In ``GlyphCoordintes`` class, added ``__bool__`` / ``__nonzero__``
742 - [ttx] Support reading TTX files with BOM (#896)
743 - [CFF2] Fixed the reporting of the number of regions in the font.
745 3.9.1 (released 2017-03-20)
746 ---------------------------
748 - [varLib.merger] Fixed issue while recombining multiple PairPosFormat2
750 - [varLib.merger] Only merge multiple PairPosFormat1 subtables if there is
751 at least one of the fonts with a non-empty Format1 subtable (0f5a46b).
752 - [varLib.merger] Fixed IndexError with empty ClassDef1 in PairPosFormat2
754 - [varLib.merger] Avoid reusing Class2Record (mutable) objects (e6125b3).
755 - [varLib.merger] Calculate ClassDef1 and ClassDef2's Format when merging
757 - [macUtils] Added missing ttLib import (b05f203).
759 3.9.0 (released 2017-03-13)
760 ---------------------------
762 - [feaLib] Added (partial) support for parsing feature file comments ``# ...``
764 - [feaLib] Cleaned up syntax tree for FeatureNames.
765 - [ttLib] Added support for reading/writing ``CFF2`` table (thanks to
767 - [varLib] Fixed regression introduced with 3.8.0 in the calculation of
769 that use a 16-bit representation (b2825ff).
771 3.8.0 (released 2017-03-05)
772 ---------------------------
774 - New pens: MomentsPen, StatisticsPen, RecordingPen, and TeePen.
775 - [misc] Added new ``fontTools.misc.symfont`` module, for symbolic font
777 - [varLib] Added experimental ``fontTools.varLib.interpolatable`` module for
779 - [varLib] designspace.load() now returns a dictionary, instead of a tuple,
782 - [ttLib] Fixed issue with recalculating ``head`` modified timestamp when
783 saving CFF fonts
784 - [ttLib] In TupleVariation, round deltas before compiling (#861, fixed #592)
785 - [feaLib] Ignore duplicate glyphs in classes used as MarkFilteringSet and
787 - [merge] Changed the ``gasp`` table merge logic so that only the one from
789 - [Tests] Added tests for the ``varLib`` package, as well as test fonts
791 table readers/writers (<https://github.com/adobe-type-tools/aots>)
793 3.7.2 (released 2017-02-17)
794 ---------------------------
796 - [subset] Keep advance widths when stripping ".notdef" glyph outline in
797 CID-keyed CFF fonts (#845)
798 - [feaLib] Zero values now produce the same results as makeotf (#633, #848)
799 - [feaLib] More compact encoding for “Contextual positioning with in-line
802 3.7.1 (released 2017-02-15)
803 ---------------------------
805 - [subset] Fixed issue with ``--no-hinting`` option whereby advance widths in
807 - [feaLib] include statements now resolve relative paths like makeotf (#838)
808 - [feaLib] table ``name`` now handles Unicode codepoints beyond the Basic
809 Multilingual Plane, also supports old-style MacOS platform encodings (#842)
810 - [feaLib] correctly escape string literals when emitting feature syntax (#780)
812 3.7.0 (released 2017-02-11)
813 ---------------------------
815 - [ttx, mtiLib] Preserve ordering of glyph alternates in GSUB type 3 (#833).
816 - [feaLib] Glyph names can have dashes, as per new AFDKO syntax v1.20 (#559).
817 - [feaLib] feaLib.Parser now needs the font's glyph map for parsing.
818 - [varLib] Fix regression where GPOS values were stored as 0.
819 - [varLib] Allow merging of class-based kerning when ClassDefs are different
821 3.6.3 (released 2017-02-06)
822 ---------------------------
824 - [varLib] Fix building variation of PairPosFormat2 (b5c34ce).
825 - Populate defaults even for otTables that have postRead (e45297b).
826 - Fix compiling of MultipleSubstFormat1 with zero 'out' glyphs (b887860).
828 3.6.2 (released 2017-01-30)
829 ---------------------------
831 - [varLib.merger] Fixed "TypeError: reduce() of empty sequence with no
834 3.6.1 (released 2017-01-28)
835 ---------------------------
837 - [py23] Fixed unhandled exception occurring at interpreter shutdown in
839 - [agl] Ensure all glyph names are of native 'str' type; avoid mixing
841 - Fixed inconsistent title levels in README.rst that caused PyPI to
844 3.6.0 (released 2017-01-26)
845 ---------------------------
847 - [varLib] Refactored and improved the variation-font-building process.
848 - Assembly code in the fpgm, prep, and glyf tables is now indented in
851 - [ttx] Fixed 'I/O operation on closed file' error when dumping
852 multiple TTXs to standard output with the '-o -' option.
853 - The unit test modules (``*_test.py``) have been moved outside of the
857 3.5.0 (released 2017-01-14)
858 ---------------------------
860 - Font tables read from XML can now be written back to XML with no
862 - GSUB/GPOS LookupType is written out in XML as an element, not
864 - When parsing cmap table, do not store items mapped to glyph id 0.
866 - [otlLib] Make ClassDef sorting deterministic. Fixes #766 (7d1ddb2)
867 - [mtiLib] Added unit tests (#787)
868 - [cvar] Implemented cvar table
869 - [gvar] Renamed GlyphVariation to TupleVariation to match OpenType
871 - [otTables] Handle gracefully empty VarData.Item array when compiling
873 - [varLib] Re-enabled generation of ``HVAR`` table for fonts with
874 TrueType outlines; removed ``--build-HVAR`` command-line option.
875 - [feaLib] The parser can now be extended to support non-standard
879 - [feaLib] Added ``feaLib`` command to the 'fonttools' command-line
880 tool; applies a feature file to a font. ``fonttools feaLib -h`` for
882 - [pens] The ``T2CharStringPen`` now takes an optional
885 - [ci] Measure test coverage on all supported python versions and OSes,
888 - [ci] Configured Travis and Appveyor for running tests on Python 3.6
890 - The manual pages installation directory can be customized through
892 - [Snippets] Added otf2ttf.py, for converting fonts from CFF to
895 3.4.0 (released 2016-12-21)
896 ---------------------------
898 - [feaLib] Added support for generating FEA text from abstract syntax
900 - Added ``agl.toUnicode`` function to convert AGL-compliant glyph names
902 - Implemented MVAR table (b4d5381)
904 3.3.1 (released 2016-12-15)
905 ---------------------------
907 - [setup] We no longer use versioneer.py to compute fonttools version
912 3.3.0 (released 2016-12-06)
913 ---------------------------
915 - [ttLib] Implemented STAT table from OpenType 1.8 (#758)
916 - [cffLib] Fixed decompilation of CFF fonts containing non-standard
918 - [py23] minor: in ``round3`` function, allow the second argument to be
920 - The standalone ``sstruct`` and ``xmlWriter`` modules, deprecated
924 3.2.3 (released 2016-12-02)
925 ---------------------------
927 - [py23] optimized performance of round3 function; added backport for
929 - [subset] fixed issue with 'narrow' (UCS-2) Python 2 builds and
930 ``--text``/``--text-file`` options containing non-BMP chararcters
932 - [varLib] fixed issuewhen normalizing location values (8fa2ee1, #749)
933 - [inspect] Made it compatible with both python2 and python3 (167ee60,
936 3.2.2 (released 2016-11-24)
937 ---------------------------
939 - [varLib] Do not emit null axes in fvar (1bebcec). Thanks @robmck-ms
940 - [varLib] Handle fonts without GPOS (7915a45)
941 - [merge] Ignore LangSys if None (a11bc56)
942 - [subset] Fix subsetting MathVariants (78d3cbe)
943 - [OS/2] Fix "Private Use (plane 15)" range (08a0d55). Thanks @mashabow
945 3.2.1 (released 2016-11-03)
946 ---------------------------
948 - [OS/2] fix checking ``fsSelection`` bits matching ``head.macStyle``
950 - [varLib] added ``--build-HVAR`` option to generate ``HVAR`` table for
951 fonts with TrueType outlines. For ``CFF2``, it is enabled by default.
953 3.2.0 (released 2016-11-02)
954 ---------------------------
956 - [varLib] Improve support for OpenType 1.8 Variable Fonts:
957 - Implement GDEF's VariationStore
958 - Implement HVAR/VVAR tables
959 - Partial support for loading MutatorMath .designspace files with
961 - Add varLib.models with Variation fonts interpolation models
962 - Implement GSUB/GPOS FeatureVariations
963 - Initial support for interpolating and merging OpenType Layout tables
965 - [API change] Change version to be an integer instead of a float in
970 - several bug fixes to the cffLib module, contributed by Adobe's
972 - The XML output for CFF table now has a 'major' and 'minor' elements
975 - [setup.py] remove undocumented/deprecated ``extra_path`` Distutils
977 in site-packages containing the actual fontTools package, as well as
982 - [scripts] Add a 'fonttools' command-line tool that simply runs
983 ``fontTools.*`` sub-modules: e.g. ``fonttools ttx``,
985 - [hmtx/vmts] Read advance width/heights as unsigned short (uint16);
987 - [ttLib/xmlWriter] add 'newlinestr=None' keyword argument to
988 ``TTFont.saveXML`` for overriding os-specific line endings (passed on
990 - [versioning] Use versioneer instead of ``setuptools_scm`` to
992 - [feaLib] Support backslash-prefixed glyph names.
994 3.1.2 (released 2016-09-27)
995 ---------------------------
997 - restore Makefile as an alternative way to build/check/install
998 - README.md: update instructions for installing package from source,
1000 - NEWS: Change log was out of sync with tagged release
1002 3.1.1 (released 2016-09-27)
1003 ---------------------------
1005 - Fix ``ttLibVersion`` attribute in TTX files still showing '3.0'
1007 - Use ``setuptools_scm`` to manage package versions.
1009 3.1.0 (released 2016-09-26)
1010 ---------------------------
1012 - [feaLib] New library to parse and compile Adobe FDK OpenType Feature
1014 - [mtiLib] New library to parse and compile Monotype 'FontDame'
1016 - [voltLib] New library to parse Microsoft VOLT project files.
1017 - [otlLib] New library to work with OpenType Layout tables.
1018 - [varLib] New library to work with OpenType Font Variations.
1019 - [pens] Add ttGlyphPen to draw to TrueType glyphs, and t2CharStringPen
1021 - [ttLib.tables] Implement 'meta' and 'trak' tables.
1022 - [ttx] Add --flavor option for compiling to 'woff' or 'woff2'; add
1023 ``--with-zopfli`` option to use Zopfli to compress WOFF 1.0 fonts.
1024 - [subset] Support subsetting 'COLR'/'CPAL' and 'CBDT'/'CBLC' color
1025 fonts tables, and 'gvar' table for variation fonts.
1026 - [Snippets] Add ``symfont.py``, for symbolic font statistics analysis;
1029 - [classifyTools] Helpers to classify things into classes.
1030 - [CI] Run tests on Windows, Linux and macOS using Appveyor and Travis
1033 - [loggingTools] Use Python built-in logging module to print messages.
1034 - [py23] Make round() behave like Python 3 built-in round(); define
1037 3.0 (released 2015-09-01)
1038 -------------------------
1040 - Add Snippet scripts for cmap subtable format conversion, printing
1042 - TTX WOFF2 support and a ``-f`` option to overwrite output file(s)
1043 - Support GX tables: ``avar``, ``gvar``, ``fvar``, ``meta``
1044 - Support ``feat`` and gzip-compressed SVG tables
1045 - Upgrade Mac East Asian encodings to native implementation if
1047 - Add Roman Croatian and Romanian encodings, codecs for mac-extended
1049 - Implement optimal GLYF glyph outline packing; disabled by default
1051 2.5 (released 2014-09-24)
1052 -------------------------
1054 - Add a Qt pen
1055 - Add VDMX table converter
1056 - Load all OpenType sub-structures lazily
1057 - Add support for cmap format 13.
1058 - Add pyftmerge tool
1059 - Update to Unicode 6.3.0d3
1060 - Add pyftinspect tool
1061 - Add support for Google CBLC/CBDT color bitmaps, standard EBLC/EBDT
1063 - Add support for loading, saving and ttx'ing WOFF file format
1064 - Add support for Microsoft COLR/CPAL layered color glyphs
1065 - Support PyPy
1066 - Support Jython, by replacing numpy with array/lists modules and
1067 removed it, pure-Python StringIO, not cStringIO
1068 - Add pyftsubset and Subsetter object, supporting CFF and TTF
1069 - Add to ttx args for -q for quiet mode, -z to choose a bitmap dump
1072 2.4 (released 2013-06-22)
1073 -------------------------
1075 - Option to write to arbitrary files
1076 - Better dump format for DSIG
1077 - Better detection of OTF XML
1078 - Fix issue with Apple's kern table format
1079 - Fix mangling of TT glyph programs
1080 - Fix issues related to mona.ttf
1081 - Fix Windows Installer instructions
1082 - Fix some modern MacOS issues
1083 - Fix minor issues and typos
1085 2.3 (released 2009-11-08)
1086 -------------------------
1088 - TrueType Collection (TTC) support
1089 - Python 2.6 support
1090 - Update Unicode data to 5.2.0
1091 - Couple of bug fixes
1093 2.2 (released 2008-05-18)
1094 -------------------------
1096 - ClearType support
1097 - cmap format 1 support
1098 - PFA font support
1099 - Switched from Numeric to numpy
1100 - Update Unicode data to 5.1.0
1101 - Update AGLFN data to 1.6
1102 - Many bug fixes
1104 2.1 (released 2008-01-28)
1105 -------------------------
1107 - Many years worth of fixes and features
1109 2.0b2 (released 2002-??-??)
1110 ---------------------------
1112 - Be "forgiving" when interpreting the maxp table version field:
1114 GPL fonts: http://www.freebsd.org/cgi/pds.cgi?ports/chinese/wangttf
1115 - Fixed ttx -l: it turned out this part of the code didn't work with
1117 different version than I shipped TTX with :-(
1118 - Fixed bug in ClassDef format 1 subtable (Andreas Seidel bumped into
1121 2.0b1 (released 2002-09-10)
1122 ---------------------------
1124 - Fixed embarrassing bug: the master checksum in the head table is now
1125 calculated correctly even on little-endian platforms (such as Intel).
1126 - Made the cmap format 4 compiler smarter: the binary data it creates
1129 - Dump glyph names as a separate "GlyphOrder" pseudo table as opposed
1130 to as part of the glyf table (obviously needed for CFF-OTF's).
1131 - Added proper support for the CFF table.
1132 - Don't barf on empty tables (questionable, but "there are font out
1134 - When writing TT glyf data, align glyphs on 4-byte boundaries. This
1136 fonts which are already 4-byte aligned.
1137 - Windows installer contributed bu Adam Twardoch! Yay!
1138 - Changed the command line interface again, now by creating one new
1141 - The -d option is back (output dir)
1142 - ttcompile's -i options is now called -m (as in "merge"), to avoid
1143 clash with dump's -i.
1144 - The -s option ("split tables") no longer creates a directory, but
1149 - compile no longer accepts a directory as input argument. Instead it
1150 can parse the new "mini-ttx" format as output by "ttx -s".
1151 - all arguments are input files
1152 - Renamed the command line programs and moved them to the Tools
1154 - Added OpenType support. BASE, GDEF, GPOS, GSUB and JSTF are (almost)
1156 considering to output certain subtables in a more human-friendly
1158 - Fixed 'kern' table to correctly accept subtables it doesn't know
1161 - Fixed bug where glyphnames were not calculated from 'cmap' if it was
1163 cmap was the first to ask for a glyphID -> glyphName mapping.
1164 - Switched XML parsers: use expat instead of xmlproc. Should be faster.
1165 - Removed my UnicodeString object: I now require Python 2.0 or up,
1167 - Removed assert in glyf table: redundant data at the end of the table
1169 - Fixed bug in hmtx/vmtx code that only occured if all advances were
1171 - Fixed subtle bug in TT instruction disassembler.
1172 - Couple of fixes to the 'post' table.
1173 - Updated OS/2 table to latest spec.
1175 1.0b1 (released 2001-08-10)
1176 ---------------------------
1178 - Reorganized the command line interface for ttDump.py and
1181 - ttDump.py and ttCompile.py don't silently override files anymore, but
1182 ask before doing so. Can be overridden by -f.
1183 - Added -d option to both ttDump.py and ttCompile.py.
1184 - Installation is now done with distutils. (Needs work for environments
1186 - Updated installation instructions.
1187 - Added some workarounds so as to handle certain buggy fonts more
1189 - Updated Unicode table to Unicode 3.0 (Thanks Antoine!)
1190 - Included a Python script by Adam Twardoch that adds some useful stuff
1192 - Moved the project to SourceForge.
1194 1.0a6 (released 2000-03-15)
1195 ---------------------------
1197 - Big reorganization: made ttLib a subpackage of the new fontTools
1200 - Added several submodules to fontTools, some new, some older.
1201 - Added experimental CFF/GPOS/GSUB support to ttLib, read-only (but XML
1203 - Fixed hdmx endian bug
1204 - Added -b option to ttCompile.py, it disables recalculation of
1206 - Renamed tt2xml.pt to ttDump.py and xml2tt.py to ttCompile.py
1207 - Use ".ttx" as file extension instead of ".xml".
1208 - TTX is now the name of the XML-based *format* for TT fonts, and not
1212 -----
1216 - More tables supported: hdmx, vhea, vmtx
1219 -------------
1223 - fixed most portability issues
1224 - retracted the "Euro_or_currency" change from 1.0a2: it was
1227 1.0a2 (released 1999-05-02)
1228 ---------------------------
1230 - binary release for MacOS
1231 - genenates full FOND resources: including width table, PS font name
1233 - added cmap format 4 support. Extra: dumps Unicode char names as XML
1235 - added cmap format 6 support
1236 - now accepts true type files starting with "true" (instead of just
1238 - 'glyf' table support is now complete: I added support for composite
1239 scale, xy-scale and two-by-two for the 'glyf' table. For now,
1240 component offset scale behaviour defaults to Apple-style. This only
1242 - changed "Euro" to "Euro_or_currency" in the Standard Apple Glyph
1247 Fixed bugs: - 'hhea' table is now recalculated correctly - fixed wrong
1250 1.0a1 (released 1999-04-27)
1251 ---------------------------
1253 - initial binary release for MacOS