blob: 0c9beadce1696dce3e2f7410d19bf8285f79a88e [file] [log] [blame]
Just4977da41999-12-18 18:18:09 +00001<HTML>
2<HEAD>
3
jvr15174d02002-09-10 13:13:25 +00004<TITLE>TTX Documentation</TITLE>
Just4977da41999-12-18 18:18:09 +00005
6
7</HEAD>
8<BODY bgcolor="#FFFFFF">
9
jvr15174d02002-09-10 13:13:25 +000010<H3>TTX -- From OpenType and TrueType to XML and Back</H3>
Just4977da41999-12-18 18:18:09 +000011
jvr15174d02002-09-10 13:13:25 +000012<A HREF="http://fonttools.sourceforge.net/">TTX</A> is a tool for manipulating TrueType and OpenType fonts. It is written in Python and has a BSD-style, open-source licence -- see LICENSE.txt. Among other things this means you can use it free of charge. It's hosted at <A HREF="http://sourceforge.net/">sourceforge.net</A>.
Just4977da41999-12-18 18:18:09 +000013
14<P>
jvr15174d02002-09-10 13:13:25 +000015TTX can dump TrueType and OpenType fonts to an XML-based text format, which is also called TTX. TTX files have a .ttx file extension.
Juste5ad9c92000-03-15 20:56:20 +000016
jvr15174d02002-09-10 13:13:25 +000017<H3>How to use TTX</H3>
Juste5ad9c92000-03-15 20:56:20 +000018
jvr15174d02002-09-10 13:13:25 +000019The TTX application works can be used in two ways, depending on what platform you run it on:
Juste5ad9c92000-03-15 20:56:20 +000020
jvr15174d02002-09-10 13:13:25 +000021<ul>
22 <li>As a command line tool (Windows/DOS, Unix, MacOSX)</li>
23 <li>By dropping files onto the application (Windows, MacOS)</li>
24</ul>
Juste5ad9c92000-03-15 20:56:20 +000025
Juste5ad9c92000-03-15 20:56:20 +000026<P>
pabs31344bc92010-01-09 09:12:11 +000027TTX detects what kind of files it is fed: it will output a .ttx file when it sees a .ttf or .otf, and it will compile a .ttf or .otf when the input file is a .ttx file. By default, the output file is created in the same folder as the input file, and will have the same name as the input file but with a different extension. TTX will <I>never</I> overwrite existing files, but if necessary will append a unique number to the output filename (before the extension), eg.: "Arial#1.ttf".
jvr15174d02002-09-10 13:13:25 +000028
Juste5ad9c92000-03-15 20:56:20 +000029<P>
jvr15174d02002-09-10 13:13:25 +000030When using TTX from the command line there are a bunch of extra options, these are explained in the help text, as displayed when typing "ttx -h" at the command prompt. These additional options include:
31<ul>
32 <li>specifying the folder where the output files are created</li>
33 <li>specifying which tables to dump or which tables to exclude</li>
34 <li>merging partial .ttx files with existing .ttf or .otf files</li>
35 <li>listing brief table info isntead of dumping to .ttx</li>
36 <li>splitting tables to separate .ttx files</li>
37 <li>disabling TT instruction disassembly</li>
38</ul>
Juste5ad9c92000-03-15 20:56:20 +000039
jvr15174d02002-09-10 13:13:25 +000040<H3>The TTX file format</H3>
Juste5ad9c92000-03-15 20:56:20 +000041
jvr15174d02002-09-10 13:13:25 +000042The following tables are currently supported:
jvre3b3ada2002-09-13 13:17:39 +000043<BLOCKQUOTE><TT>
jvr2f629e52002-09-10 20:41:40 +000044<!-- begin table list -->
Matt Fontaineb9ba7752013-08-19 14:13:20 -040045<<<<<<< HEAD
Matt Fontainec33b0a22013-08-19 14:13:05 -040046BASE, CFF, DSIG, EBDT, EBLC, GDEF, GMAP, GPKG, GPOS, GSUB, JSTF, LTSH, META, OS/2, SING, TSI0, TSI1, TSI2, TSI3, TSI5, TSIB, TSID, TSIJ, TSIP, TSIS, TSIV, VORG, cmap, cvt, fpgm, gasp, glyf, hdmx, head, hhea, hmtx, kern, loca, maxp, name, post, prep, vhea and vmtx
Matt Fontaineb9ba7752013-08-19 14:13:20 -040047=======
48BASE, CBDT, CBLC, CFF, COLR, CPAL, DSIG, EBDT, EBLC, GDEF, GMAP, GPKG, GPOS, GSUB, JSTF, LTSH, META, OS/2, SING, TSI0, TSI1, TSI2, TSI3, TSI5, TSIB, TSID, TSIJ, TSIP, TSIS, TSIV, VORG, cmap, cvt, fpgm, gasp, glyf, hdmx, head, hhea, hmtx, kern, loca, maxp, name, post, prep, vhea and vmtx
49>>>>>>> 305bad8... Add support for Google CBLC/CBDT color bitmaps
jvr2f629e52002-09-10 20:41:40 +000050<!-- end table list -->
jvre3b3ada2002-09-13 13:17:39 +000051</TT></BLOCKQUOTE>
jvr15174d02002-09-10 13:13:25 +000052Other tables are dumped as hexadecimal data.
Juste5ad9c92000-03-15 20:56:20 +000053
jvr15174d02002-09-10 13:13:25 +000054<P>
Juste5ad9c92000-03-15 20:56:20 +000055TrueType fonts use glyph indices (GlyphID's) to refer to glyphs in most places.
56While this is fine in binary form, it is really hard to work with for
57humans. Therefore we use names instead.
58
jvr7de32f22002-05-12 12:48:14 +000059<P>The glyph names are either extracted from the 'CFF ' table or the 'post' table,
60or are derived from a Unicode 'cmap' table. In the latter case the Adobe Glyph List
61is used to calculate names based on Unicode values. If all of these mthods fail,
62names are invented based on GlyphID (eg. "glyph00142").
63
64<P>It is possible that different glyphs use the same name. If this happens,
65we force the names to be unique by appending "#n" to the name (n being an
66integer number). The original names are being kept, so this has no influence
67on a "round tripped" font.
Juste5ad9c92000-03-15 20:56:20 +000068
69<P>Because the order in which glyphs are stored inside the TT font is
jvr7de32f22002-05-12 12:48:14 +000070important, we maintain an ordered list of glyph names in the font.
Juste5ad9c92000-03-15 20:56:20 +000071
Juste5ad9c92000-03-15 20:56:20 +000072
jvr15174d02002-09-10 13:13:25 +000073<H3>Development and feedback</H3>
74
75TTX/FontTools development is ongoing, but often goes in spurts. Feature requests and bug reports are always welcome. The best place for these is currently the fonttools-discussion mailing list at SourceForge. This list is both for discussion TTX from an end-user perspective as well as TTX/FontTools development. 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>.
jvrf5ccb352001-08-10 08:54:14 +000076
77<P>
jvr15174d02002-09-10 13:13:25 +000078Let me take this opportunity to mention that if you have special needs (eg. custom font monipulators, dufferent table formats, etc.): I am available for contracting.
Just4977da41999-12-18 18:18:09 +000079
jvra0140932002-09-12 22:22:36 +000080<H3>Credits</H3>
81
82Windows setup script: Adam Twardoch
83<BR>Icon: Hannes Famira
84
85<H3>Acknowledgements</H3>
Juste5ad9c92000-03-15 20:56:20 +000086
87(in alphabetical order)
88Erik van Blokland, Petr van Blokland, Jelle Bosma, Vincent Connare,
jvr81383d62003-09-01 16:10:22 +000089Simon Daniels, Hannes Famira, Yannis Haralambous, Greg Hitchcock, John Hudson,
90Jack Jansen, Tom Kacvinsky, Antoine Leca, Werner Lemberg, Tal Leming,
91Peter Lofting, Dave Opstad, Laurence Penney, Read Roberts, Guido van Rossum, Andreas Seidel, Adam Twardoch.
Juste5ad9c92000-03-15 20:56:20 +000092
93<H3>Copyrights</H3>
94
jvre3b3ada2002-09-13 13:17:39 +000095<A HREF="http://fonttools.sourceforge.net/">FontTools/TTX</A>
jvrd453a232003-08-26 12:02:48 +000096<BR>1999-2003 Just van Rossum; LettError (just@letterror.com). See LICENSE.txt for the full license.
jvre3b3ada2002-09-13 13:17:39 +000097<P>
98<A HREF="http://www.python.org/">Python</A>
jvr77bc20a2003-08-25 21:16:12 +000099<BR>Copyright (c) 2001-2003 Python Software Foundation. All Rights Reserved.
jvre3b3ada2002-09-13 13:17:39 +0000100<BR>Copyright (c) 2000 BeOpen.com. All Rights Reserved.
101<BR>Copyright (c) 1995-2001 Corporation for National Research Initiatives. All Rights Reserved.
102<BR>Copyright (c) 1991-1995 Stichting Mathematisch Centrum, Amsterdam. All Rights Reserved.
103<P>
104<A HREF="http://www.pfdubois.com/numpy/">Numeric Python (NumPy)</A>
105<BR>Copyright (c) 1996. The Regents of the University of California. All rights reserved.
Just4977da41999-12-18 18:18:09 +0000106
107</BODY>
108</HTML>