git-svn-id: svn://svn.code.sf.net/p/fonttools/code/trunk@195 4cde692c-a291-49d1-8350-778aa11640f8
178 lines
7.1 KiB
HTML
178 lines
7.1 KiB
HTML
<HTML>
|
|
<HEAD>
|
|
|
|
<TITLE>FontTools</TITLE>
|
|
|
|
|
|
</HEAD>
|
|
<BODY bgcolor="#FFFFFF">
|
|
|
|
<H1>FontTools</H1>
|
|
|
|
<A HREF="http://fonttools.sourceforge.net/">FontTools</A> is a suite of tools and
|
|
libraries for manipulating fonts. It is written
|
|
in Python and has a BSD-style, open-source licence -- see LICENSE.txt. It's hosted at
|
|
<A HREF="http://sourceforge.net/">sourceforge.net</A>.
|
|
|
|
<P>
|
|
It currently reads and writes TrueType font files, reads PostScript Type 1 fonts
|
|
and more. It contains two command line programs to convert TrueType fonts to an
|
|
XML based format (called TTX) and back.
|
|
|
|
<H3>Scope</H3>
|
|
|
|
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
|
|
<A HREF="http://www.robofog.com/">RoboFog</A>, our (commercial) PythonPowered font
|
|
editor for MacOS.
|
|
|
|
<H3>Installation</H3>
|
|
|
|
You need the following software to use FontTools:
|
|
|
|
<UL>
|
|
<LI>
|
|
<B>Python</B>. The fresh versions as well as older versions (You need 2.0 or higher) can be obtained here:
|
|
<A HREF="http://www.python.org/download/">http://www.python.org/download/</A>
|
|
or here:
|
|
<A HREF="http://sourceforge.net/projects/python/">http://sourceforge.net/projects/python/</A>
|
|
|
|
<P>Windows: grab the Windows installer, run the full install.
|
|
<BR>Un*x: follow the build instructions.
|
|
<BR>MacOS: grab the installer, run "Easy Install"
|
|
<P>
|
|
<LI>
|
|
The <B>Numeric Python</B> extension (you don't need this under MacOS, since it's
|
|
included in the MacPython installer). Get a fresh version from the download page,
|
|
linked from here:
|
|
<A HREF="http://sourceforge.net/projects/numpy/">http://sourceforge.net/projects/numpy/</A>
|
|
<P>Windows: grab the "Numeric-*.exe" archive, it's an installer. Make sure the
|
|
Python version in the archive name (eg. "2.1") matches the Python version you have.
|
|
<BR>Linux/Un*x: get a source archive and run this command from the unpacked directory:
|
|
<BR><TT>python setup.py install</TT>
|
|
<P>
|
|
<LI>
|
|
<B>PyXML</B>, a set of XML tools:
|
|
<A HREF="http://sourceforge.net/projects/pyxml/">http://sourceforge.net/projects/pyxml/</A>
|
|
|
|
<BR>Installation should be very similar to installing Numeric Python, see above.
|
|
|
|
</UL>
|
|
|
|
|
|
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. (XXX: need precompiled Mac and Windows binaries,
|
|
*or* a way to skip compilation when there's no compiler available.)
|
|
|
|
<P>Additional Mac instructions:
|
|
De-binhex "TTX.rsrc.hqx" by dropping it onto StuffIt expander. (Or use your
|
|
own preferred method)
|
|
The "TTX.py" script included in this archive is the Mac-only main program:
|
|
Drop it onto the "BuildApplet" app inside the Python folder; this will
|
|
produce the TTX applet.
|
|
|
|
|
|
<H3>User documentation</H3>
|
|
|
|
<P>For Unix and DOS there are three command line programs:
|
|
<UL>
|
|
<LI>ttdump -- dumps a TrueType (or OpenType) font file to TTX format.
|
|
<LI>ttcompile -- compiles a TTX file back into a TTF (or OTF) file.
|
|
<LI>ttlist -- lists minimal info about each table in a font.
|
|
</UL>
|
|
They can all work with multiple input files. There are some extra
|
|
options which are explained by the 'usage' text; use the -h option to
|
|
display it. The setup.py script installs them as global tools, the
|
|
source is in the Tools directory.
|
|
|
|
<P>For MacOS there's a application called TTX. If you drop a TrueType
|
|
file onto it, it will convert it to XML. If you drop an XML file onto
|
|
it, it will convert it back to TrueType. Please read the additional
|
|
README file in the Mac subdirectory, since it behaves quite differently
|
|
than the command line programs described below.
|
|
|
|
<P>Adam Twardoch contributed a Windows registry script (ttx_shellext_win32.py) which
|
|
makes the two above tools available under the Right Mouse Button. I haven't tested
|
|
these myself, but I'm very interested in hearing about the results!
|
|
|
|
<H3>Note about glyph names and TrueType GlyphID's</H3>
|
|
|
|
TrueType fonts use glyph indices (GlyphID's) to refer to glyphs in most places.
|
|
While this is fine in binary form, it is really hard to work with for
|
|
humans. Therefore we use names instead.
|
|
|
|
<P>The names are derived from what is found in the 'post' table. It is
|
|
possible that different glyphs use the same PS name. If this happens, we
|
|
force the names to be unique by appending "#n" to the name (n being an
|
|
integer number). The original PS names will still be maintained by the
|
|
'post' table, so even though we use a different name internally, we are
|
|
still able to write the 'post' table back in original form. If there is
|
|
no proper 'post' table available, names will be derived from a Unicode
|
|
cmap (if available) in conjuction with the Adobe Glyph List (see fontTools/agl.py).
|
|
|
|
<P>Because the order in which glyphs are stored inside the TT font is
|
|
important, ttLib maintains an ordered list of glyph names in the font.
|
|
|
|
<H3>Feedback</H3>
|
|
|
|
Please join the fonttools-discussion mailing list at SourceForge. Subscription
|
|
info can be found if you follow the "Mailing Lists" link at the
|
|
<A HREF="http://sourceforge.net/projects/fonttools/">SourceForge project page</A>.
|
|
You can also email me directly at <A HREF="mailto:just@letterror.com">just@letterror.com</A>.
|
|
|
|
<P>
|
|
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.
|
|
|
|
<H3>Anonymous CVS-access</H3>
|
|
|
|
The FontTools sources are also accessible through CVS, see the
|
|
the <A HREF="http://sourceforge.net/projects/fonttools/">SourceForge project
|
|
page</A>. Let me know if you'd like to become a co-developer.
|
|
|
|
<H3>Developer documentation</H3>
|
|
|
|
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.
|
|
|
|
<P>
|
|
<H3>The library</H3>
|
|
|
|
Cross-platform
|
|
<UL>
|
|
<LI>fontTools.t1Lib -- Provides a Type 1 font reader. Writing is a planned feature.
|
|
<LI>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.
|
|
<LI>fontTools.afmLib -- And AFM file reader/writer.
|
|
<LI>fontTools.cffLib -- Reads CFF fonts. Writing is a planned feature.
|
|
<LI>fontTools.unicode -- A simple (but large) module that translates
|
|
Unicode values to their descriptive names. Still Unicode 2.0.
|
|
<LI>fontTools.agl -- Interface to the Adobe Glyph List: maps unicode values
|
|
to glyph names and back.
|
|
</UL>
|
|
|
|
Mac-specific
|
|
<UL>
|
|
<LI>fontTools.fondLib -- A reader/writer class for Mac FOND resources.
|
|
<LI>fontTools.nfntLib -- Reads Mac NFNT bitmap font resources.
|
|
</UL>
|
|
|
|
<H3>Thank-you's</H3>
|
|
|
|
(in alphabetical order)
|
|
Erik van Blokland, Petr van Blokland, Jelle Bosma, Vincent Connare,
|
|
Simon Daniels, Hannes Famira, Greg Hitchcock, Jack Jansen, Antoine Leca,
|
|
Werner Lemberg, Peter Lofting, Dave Opstad, Laurence Penney,
|
|
Guido van Rossum, Adam Twardoch.
|
|
|
|
<H3>Copyrights</H3>
|
|
|
|
FontTools/TTX -- 1999-2002 Just van Rossum; Letterror (just@letterror.com)
|
|
|
|
</BODY>
|
|
</HTML>
|