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

- 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 (released August 10 2001)

- 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 (released March 15 2000)

- 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 (released as binary for MacOS, 2 May 1999)

- 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 (27 Apr 1999)

- initial binary release for MacOS

