TTX/FontTools

TTX/FontTools is a suite of tools for manipulating fonts. It is written in
Python and has a BSD-style, open-source licence -- see LICENSE.txt.
It's hosted at http://sourceforge.net/.

The flagship is TTX, a tool to convert OpenType and TrueType font files to
an XML-based format (also called TTX), and back. This lets you edit TTF or
OTF files with any text editor.

The FontTools library currently reads and writes TrueType font files, reads
PostScript Type 1 fonts and more.


Scope

TTX/FontTools' functionality is aimed towards font developers and font tool
developers. It can of course be used to just access fonts (outlines,
metrics, etc.) but it is not optimized for that. It will be further
developed so it can be the core of any font editor. And that's exactly
what it will be for our upcoming major rewrite of RoboFog, our (commercial)
PythonPowered font editor for MacOS.


Installation

For Windows and MacOS there are easy-to-use TTX installers. The rest if this
document is meant for people who want to use TTX/FontTools from the source.

You need the following software:

Python
  The fresh versions as well as older versions (You need 2.0 or higher)
  can be downloaded from
     http://www.python.org/download/
  or here
     http://sourceforge.net/projects/python/
  
  Windows: grab the Windows installer, run the full install.
  Un*x: follow the build instructions.
  MacOS: grab the installer, run "Easy Install"

The numpy extension
  See http://numpy.scipy.org/

Now run the "setup.py" script from the FontTools archive. This will install
all the modules in the right places, as well as tries to compile the one
(optional) C extension contained in FontTools. On Unix it also installs the
"ttx" command line tool. This tool can also be used on Windows, but might
need some fiddling.

For instructions how to build a standalone Windows installer, see
Windows/README.TXT. Thanks a LOT to Adam Twardoch for this essential
contribution.

For TTX usage instructions, see the file "documentation.html".


Feedback

Please join the fonttools-discussion mailing list at SourceForge. Subscription
info can be found if you follow the "Mailing Lists" link at the SourceForge
project page:
  http://sourceforge.net/projects/fonttools/
You can also email me directly at just@letterror.com.

If you want to follow the development of FontTools closely, or would like to
contribute, you can also subscribe to the fonttools-checkins mailing list.


Anonymous SVN-access

The FontTools sources are also accessible through SVN, see:
  http://sourceforge.net/projects/fonttools/
Let me know if you'd like to become a co-developer.


Developer documentation

Sorry, documentation beyond doc strings in the source code is still on my to-do list... 
Below follows a brief overview of what's there.


The library

  Cross-platform
     fontTools.t1Lib -- Provides a Type 1 font reader. Writing is a planned feature.
     fontTools.ttLib -- Extensive TrueType tools. Reads and writes. This is the flagship 
	 of FontTools, it's by far the most mature component. Contains a completely modular
	 TTF table converter architecture. See ttLib/tables/table_API_readme.txt.
     fontTools.afmLib -- And AFM file reader/writer.
     fontTools.cffLib -- Reads CFF fonts. Writing is a planned feature.
     fontTools.unicode -- A simple (but large) module that translates 
	 Unicode values to their descriptive names. Still Unicode 2.0.
     fontTools.agl -- Interface to the Adobe Glyph List: maps unicode values
	 to glyph names and back.

  Mac-specific
     fontTools.fondLib -- A reader/writer class for Mac FOND resources.
     fontTools.nfntLib -- Reads Mac NFNT bitmap font resources.


Thank-you's

(in alphabetical order) 
Erik van Blokland, Petr van Blokland, Jelle Bosma, Vincent Connare, 
Simon Daniels, Hannes Famira, Greg Hitchcock, John Hudson, Jack Jansen,
Antoine Leca, Werner Lemberg, Peter Lofting, Dave Opstad, Laurence Penney, 
Guido van Rossum, Adam Twardoch. 

Copyrights

FontTools/TTX -- 1999-2002 Just van Rossum; Letterror (just@letterror.com) 
See LICENCE.txt for the full license.
