## TTX/FontTools Version 3.5.0

2017-01-14

- Font tables read from XML can now be written back to XML with no loss.
- GSUB/GPOS LookupType is written out in XML as an element, not comment. (#792)
- When parsing cmap table, do not store items mapped to glyph id 0. (#790)
- [otlLib] Make ClassDef sorting deterministic. Fixes #766 (7d1ddb2)
- [mtiLib] Added unit tests (#787)
- [cvar] Implemented cvar table
- [gvar] Renamed GlyphVariation to TupleVariation to match OpenType terminology.
- [otTables] Handle gracefully empty VarData.Item array when compiling XML. (#797)
- [varLib] Re-enabled generation of `HVAR` table for fonts with TrueType
  outlines; removed `--build-HVAR` command-line option.
- [feaLib] The parser can now be extended to support non-standard statements in
  FEA code by using a customized Abstract Syntax Tree. See, for example,
  `feaLib.builder_test.test_extensions` and baseClass.feax (#794, fixes #773).
- [feaLib] Added `feaLib` command to the 'fonttools' command-line tool; applies
  a feature file to a font. `fonttools feaLib -h` for help.
- [pens] The `T2CharStringPen` now takes an optional `roundTolerance` argument
  to control the rounding of coordinates (#804, fixes #769).
- [ci] Measure test coverage on all supported python versions and OSes, combine
  coverage data and upload to https://codecov.io/gh/fonttools/fonttools (#786)
- [ci] Configured Travis and Appveyor for running tests on Python 3.6 (#785, 55c03bc)
- The manual pages installation directory can be customized through
  FONTTOOLS_MANPATH environment variable (#799, fixes #84).
- [Snippets] Added otf2ttf.py, for converting fonts from CFF to TrueType using
  the googlei18n/cu2qu module (#802)

## TTX/FontTools Version 3.4.0

2016-12-21

- [feaLib] Added support for generating FEA text from abstract syntax tree
  (AST) objects (#776). Thanks @mhosken
- Added `agl.toUnicode` function to convert AGL-compliant glyph names to
  Unicode strings (#774)
- Implemented MVAR table (b4d5381)

## TTX/FontTools Version 3.3.1

2016-12-15

- [setup] We no longer use versioneer.py to compute fonttools version from git
  metadata, as this has caused issues for some users (#767). Now we bump the
  version strings manually with a custom `release` command of setup.py script.

## TTX/FontTools Version 3.3.0

2016-12-06

- [ttLib] Implemented STAT table from OpenType 1.8 (#758)
- [cffLib] Fixed decompilation of CFF fonts containing non-standard key/value pairs in FontDict (issue #740; PR #744)
- [py23] minor: in `round3` function, allow the second argument to be `None` (#757)
- The standalone `sstruct` and `xmlWriter` modules, deprecated since vesion 3.2.0, have been removed. They can be imported from the `fontTools.misc` package.

## TTX/FontTools Version 3.2.3

2016-12-02

- [py23] optimized performance of round3 function; added backport for py35 math.isclose() (9d8dacb)
- [subset] fixed issue with 'narrow' (UCS-2) Python 2 builds and --text/--text-file options containing non-BMP chararcters (16d0e5e)
- [varLib] fixed issuewhen normalizing location values (8fa2ee1, #749)
- [inspect] Made it compatible with both python2 and python3 (167ee60, #748). Thanks @pnemade

## TTX/FontTools Version 3.2.2

2016-11-24

- [varLib] Do not emit null axes in fvar (1bebcec). Thanks @robmck-ms
- [varLib] Handle fonts without GPOS (7915a45)
- [merge] Ignore LangSys if None (a11bc56)
- [subset] Fix subsetting MathVariants (78d3cbe)
- [OS/2] Fix "Private Use (plane 15)" range (08a0d55). Thanks @mashabow

## TTX/FontTools Version 3.2.1 

2016-11-03

- [OS/2] fix checking `fsSelection` bits matching `head.macStyle` bits
- [varLib] added `--build-HVAR` option to generate `HVAR` table for fonts with TrueType outlines. For `CFF2`, it is enabled by default.

## TTX/FontTools Version 3.2.0

2016-11-02

- [varLib] Improve support for OpenType 1.8 Variable Fonts:
  * Implement GDEF's VariationStore
  * Implement HVAR/VVAR tables
  * Partial support for loading MutatorMath .designspace files with varLib.designspace module
  * Add varLib.models with Variation fonts interpolation models
  * Implement GSUB/GPOS FeatureVariations
  * Initial support for interpolating and merging OpenType Layout tables (see varLib.interpolate_layout and varLib.merger)
- [API change] Change version to be an integer instead of a float in XML output for GSUB, GPOS, GDEF, MATH, BASE, JSTF, HVAR, VVAR, feat, hhea and vhea tables. Scripts that set the Version for those to 1.0 or other float values also need fixing. A warning is emitted when code or XML needs fix.
- several bug fixes to the cffLib module, contributed by Adobe's @readroberts
- The XML output for CFF table now has a 'major' and 'minor' elements for specifying whether it's version 1.0 or 2.0 (support for CFF2 is coming soon)
- [setup.py] remove undocumented/deprecated 'extra_path' Distutils argument. This means that we no longer create a "FontTools" subfolder in site-packages containing the actual fontTools package, as well as the standalone xmlWriter and sstruct modules. The latter modules are also deprecated, and scheduled for removal in upcoming releases. Please change your import statements to point to from fontTools.misc import xmlWriter and from fontTools.misc import sstruct.
- [scripts] Add a 'fonttools' command-line tool that simply runs fontTools.* sub-modules: e.g. `fonttools ttx`, `fonttools subset`, etc.
- [hmtx/vmts] Read advance width/heights as unsigned short (uint16); automatically round float values to integers.
- [ttLib/xmlWriter] add 'newlinestr=None' keyword argument to `TTFont.saveXML` for overriding os-specific line endings (passed on to `XMLWriter` instances).
- [versioning] Use versioneer instead of setuptools_scm to dynamically load version info from a git checkout at import time.
- [feaLib] Support backslash-prefixed glyph names.

## TTX/FontTools Version 3.1.2

2016-09-27

- restore Makefile as an alternative way to build/check/install
- README.md: update instructions for installing package from source, and for running test suite
- NEWS: Change log was out of sync with tagged release

## TTX/FontTools Version 3.1.1

2016-09-27

- Fix 'ttLibVersion' attribute in TTX files still showing '3.0' instead of '3.1'.
- Use setuptools_scm to manage package versions.

## TTX/FontTools Version 3.1.0

2016-09-26

- [feaLib] New library to parse and compile Adobe FDK OpenType Feature files.
- [mtiLib] New library to parse and compile Monotype 'FontDame' OpenType Layout Tables files.
- [voltLib] New library to parse Microsoft VOLT project files.
- [otlLib] New library to work with OpenType Layout tables.
- [varLib] New library to work with OpenType Font Variations.
- [pens] Add ttGlyphPen to draw to TrueType glyphs, and t2CharStringPen to draw to Type 2 Charstrings (CFF); add areaPen and perimeterPen.
- [ttLib.tables] Implement 'meta' and 'trak' tables.
- [ttx] Add --flavor option for compiling to 'woff' or 'woff2'; add --with-zopfli option to use Zopfli to compress WOFF 1.0 fonts.
- [subset] Support subsetting 'COLR'/'CPAL' and 'CBDT'/'CBLC' color fonts tables, and 'gvar' table for variation fonts.
- [Snippets] Add symfont.py, for symbolic font statistics analysis; interpolatable.py, a preliminary script for detecting interpolation errors; {merge,dump}_woff_metadata.py.
- [classifyTools] Helpers to classify things into classes.
- [CI] Run tests on Windows, Linux and macOS using Appveyor and Travis CI; check unit test coverage with Coverage.py/Coveralls; automatic deployment to PyPI on tags.
- [loggingTools] Use Python built-in logging module to print messages.
- [py23] Make round() behave like Python 3 built-in round(); define round2() and round3().

## TTX/FontTools Version 3.0

2015-09-01 <https://github.com/behdad/fonttools/commit/58f86f318af8b2f8b553e8cceef678d6ce0017c5>

- Add Snippet scripts for cmap subtable format conversion, printing GSUB/GPOS features, building a GX font from two masters
- TTX WOFF2 support and a `-f` option to overwrite output file(s)
- Support GX tables: `avar`, `gvar`, `fvar`, `meta`
- Support `feat` and gzip-compressed SVG tables
- Upgrade Mac East Asian encodings to native implementation if available
- Add Roman Croatian and Romanian encodings, codecs for mac-extended East Asian encodings
- Implement optimal GLYF glyph outline packing; disabled by default

## TTX/FontTools Version 2.5

2014-09-24 <https://github.com/behdad/fonttools/commit/8388a2e37ce349dac6555bb824c82723e3b65fbf>

- Add a Qt pen
- Add VDMX table converter
- Load all OpenType sub-structures lazily
- Add support for cmap format 13.
- Add pyftmerge tool
- Update to Unicode 6.3.0d3
- Add pyftinspect tool
- Add support for Google CBLC/CBDT color bitmaps, standard EBLC/EBDT embedded bitmaps, and `SVG ` table (thanks to Read Roberts at Adobe)
- Add support for loading, saving and ttx'ing WOFF file format
- Add support for Microsoft COLR/CPAL layered color glyphs
- Support PyPy
- Support Jython, by replacing numpy with array/lists modules and removed it, pure-Python StringIO, not cStringIO
- Add pyftsubset and Subsetter object, supporting CFF and TTF
- Add to ttx args for -q for quiet mode, -z to choose a bitmap dump format

## TTX/FontTools Version 2.4

- Option to write to arbitrary files
- Better dump format for DSIG
- Better detection of OTF XML
- Fix issue with Apple's kern table format
- Fix mangling of TT glyph programs
- Fix issues related to mona.ttf
- Fix Windows Installer instructions
- Fix some modern MacOS issues
- Fix minor issues and typos

## TTX/FontTools Version 2.3

- TrueType Collection (TTC) support
- Python 2.6 support
- Update Unicode data to 5.2.0
- Couple of bug fixes

## TTX/FontTools Version 2.2

- ClearType support
- cmap format 1 support
- PFA font support
- Switched from Numeric to numpy
- Update Unicode data to 5.1.0
- Update AGLFN data to 1.6
- Many bug fixes

## TTX/FontTools Version 2.1

- Many years worth of fixes and features

## TTX/FontTools Version 2.0 beta 2 (released ??? 2002)

- Be "forgiving" when interpreting the maxp table version field:
  interpret any value as 1.0 if it's not 0.5. Fixes dumping of these
  GPL fonts: http://www.freebsd.org/cgi/pds.cgi?ports/chinese/wangttf
- Fixed ttx -l: it turned out this part of the code didn't work with
  Python 2.2.1 and earlier. My bad to do most of my testing with a
  different version than I shipped TTX with :-(
- Fixed bug in ClassDef format 1 subtable (Andreas Seidel bumped into
  this one).

## TTX/FontTools Version 2.0 beta 1 (released September 10 2002)

- Fixed embarrassing bug: the master checksum in the head table is now
  calculated correctly even on little-endian platforms (such as Intel).
- Made the cmap format 4 compiler smarter: the binary data it creates is
  now more or less as compact as possible. TTX now makes more compact
  data than in any shipping font I've tested it with.
- Dump glyph names as a separate "GlyphOrder" pseudo table as opposed to
  as part of the glyf table (obviously needed for CFF-OTF's).
- Added proper support for the CFF table.
- Don't barf on empty tables (questionable, but "there are font out there...")
- When writing TT glyf data, align glyphs on 4-byte boundaries. This seems
  to be the current recommendation by MS. Also: don't barf on fonts which
  are already 4-byte aligned.
- Windows installer contributed bu Adam Twardoch! Yay!
- Changed the command line interface again, now by creating one new tool
  replacing the old ones: ttx
  It dumps and compiles, depending on input file types. The options have
  changed somewhat. 
  - The -d option is back (output dir)
  - ttcompile's -i options is now called -m (as in "merge"), to avoid clash
    with dump's -i.
  - The -s option ("split tables") no longer creates a directory,
    but instead outputs a small .ttx file containing references to the
    individual table files. This is not a true link, it's a simple file
    name, and the referenced file should be in the same directory so
    ttcompile can find them.
  - compile no longer accepts a directory as input argument. Instead it
    can parse the new "mini-ttx" format as output by "ttx -s".
  - all arguments are input files
- Renamed the command line programs and moved them to the Tools
  subdirectory. They are now installed by the setup.py install script.
- Added OpenType support. BASE, GDEF, GPOS, GSUB and JSTF are (almost)
  fully supported. The XML output is not yet final, as I'm still
  considering to output certain subtables in a more human-friendly
  manner.
- Fixed 'kern' table to correctly accept subtables it doesn't know about,
  as well as interpreting Apple's definition of the 'kern' table headers
  correctly.
- Fixed bug where glyphnames were not calculated from 'cmap' if it was
  (one of the) first tables to be decompiled. More specifically: it cmap
  was the first to ask for a glyphID -> glyphName mapping.
- Switched XML parsers: use expat instead of xmlproc. Should be faster.
- Removed my UnicodeString object: I now require Python 2.0 or up, which
  has unicode support built in.
- Removed assert in glyf table: redundant data at the end of the table
  is now ignored instead of raising an error. Should become a warning.
- Fixed bug in hmtx/vmtx code that only occured if all advances were equal.
- Fixed subtle bug in TT instruction disassembler.
- Couple of fixes to the 'post' table.
- Updated OS/2 table to latest spec.

## TTX/FontTools Version 1.0 beta 1 

2001-08-10

- Reorganized the command line interface for ttDump.py and ttCompile.py,
  they now behave more like "normal" command line tool, in that they accept
  multiple input files for batch processing. 
- ttDump.py and ttCompile.py don't silently override files anymore, but ask
  before doing so. Can be overridden by -f.
- Added -d <destination-directory> option to both ttDump.py and ttCompile.py.
- Installation is now done with distutils. (Needs work for environments without
  compilers.)
- Updated installation instructions.
- Added some workarounds so as to handle certain buggy fonts more gracefully.
- Updated Unicode table to Unicode 3.0 (Thanks Antoine!)
- Included a Python script by Adam Twardoch that adds some useful stuff to the
  Windows registry.
- Moved the project to SourceForge.

## TTX/FontTools Version 1.0 alpha 6

2000-03-15

- Big reorganization: made ttLib a subpackage of the new fontTools package,
  changed several module names. Called the entire suite "FontTools"
- Added several submodules to fontTools, some new, some older.
- Added experimental CFF/GPOS/GSUB support to ttLib, read-only (but XML dumping
  of GPOS/GSUB is for now disabled)
- Fixed hdmx endian bug
- Added -b option to ttCompile.py, it disables recalculation of bounding boxes,
  as requested by Werner Lemberg.
- Renamed tt2xml.pt to ttDump.py and xml2tt.py to ttCompile.py
- Use ".ttx" as file extension instead of ".xml".
- TTX is now the name of the XML-based *format* for TT fonts, and not just
  an application.

## Version 1.0 alpha 5

Never released

- More tables supported: hdmx, vhea, vmtx

## Version 1.0 alpha 3 & 4

Never released

- fixed most portability issues
- retracted the "Euro_or_currency" change from 1.0a2: it was nonsense!

## Version 1.0 alpha 2 

1999-05-02

- binary release for MacOS
- genenates full FOND resources: including width table, PS
  font name info and kern table if applicable. 
- added cmap format 4 support. Extra: dumps Unicode char names as XML comments! 
- added cmap format 6 support 
- now accepts true type files starting with "true"
  (instead of just 0x00010000 and "OTTO") 
- 'glyf' table support is now complete: I added support for composite scale, 
  xy-scale and two-by-two for the 'glyf' table. For now, component offset scale 
  behaviour defaults to Apple-style. This only affects the (re)calculation of 
  the glyph bounding box. 
- changed "Euro" to "Euro_or_currency" in the Standard Apple Glyph order list, 
  since we cannot tell from the 'post' table which is meant. I should probably 
  doublecheck with a Unicode encoding if available. (This does not affect the 
  output!)

Fixed bugs: 
- 'hhea' table is now recalculated correctly 
- fixed wrong assumption about sfnt resource names

## Version 1.0 alpha 1

1999-04-27

- initial binary release for MacOS

