Just | 4977da4 | 1999-12-18 18:18:09 +0000 | [diff] [blame] | 1 | <HTML> |
| 2 | <HEAD> |
| 3 | |
jvr | 15174d0 | 2002-09-10 13:13:25 +0000 | [diff] [blame] | 4 | <TITLE>TTX Documentation</TITLE> |
Just | 4977da4 | 1999-12-18 18:18:09 +0000 | [diff] [blame] | 5 | |
| 6 | |
| 7 | </HEAD> |
| 8 | <BODY bgcolor="#FFFFFF"> |
| 9 | |
jvr | 15174d0 | 2002-09-10 13:13:25 +0000 | [diff] [blame] | 10 | <H3>TTX -- From OpenType and TrueType to XML and Back</H3> |
Just | 4977da4 | 1999-12-18 18:18:09 +0000 | [diff] [blame] | 11 | |
jvr | 15174d0 | 2002-09-10 13:13:25 +0000 | [diff] [blame] | 12 | <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>. |
Just | 4977da4 | 1999-12-18 18:18:09 +0000 | [diff] [blame] | 13 | |
| 14 | <P> |
jvr | 15174d0 | 2002-09-10 13:13:25 +0000 | [diff] [blame] | 15 | TTX can dump TrueType and OpenType fonts to an XML-based text format, which is also called TTX. TTX files have a .ttx file extension. |
Just | e5ad9c9 | 2000-03-15 20:56:20 +0000 | [diff] [blame] | 16 | |
jvr | 15174d0 | 2002-09-10 13:13:25 +0000 | [diff] [blame] | 17 | <H3>How to use TTX</H3> |
Just | e5ad9c9 | 2000-03-15 20:56:20 +0000 | [diff] [blame] | 18 | |
jvr | 15174d0 | 2002-09-10 13:13:25 +0000 | [diff] [blame] | 19 | The TTX application works can be used in two ways, depending on what platform you run it on: |
Just | e5ad9c9 | 2000-03-15 20:56:20 +0000 | [diff] [blame] | 20 | |
jvr | 15174d0 | 2002-09-10 13:13:25 +0000 | [diff] [blame] | 21 | <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> |
Just | e5ad9c9 | 2000-03-15 20:56:20 +0000 | [diff] [blame] | 25 | |
Just | e5ad9c9 | 2000-03-15 20:56:20 +0000 | [diff] [blame] | 26 | <P> |
pabs3 | 1344bc9 | 2010-01-09 09:12:11 +0000 | [diff] [blame] | 27 | TTX 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". |
jvr | 15174d0 | 2002-09-10 13:13:25 +0000 | [diff] [blame] | 28 | |
Just | e5ad9c9 | 2000-03-15 20:56:20 +0000 | [diff] [blame] | 29 | <P> |
jvr | 15174d0 | 2002-09-10 13:13:25 +0000 | [diff] [blame] | 30 | When 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> |
Just | e5ad9c9 | 2000-03-15 20:56:20 +0000 | [diff] [blame] | 39 | |
jvr | 15174d0 | 2002-09-10 13:13:25 +0000 | [diff] [blame] | 40 | <H3>The TTX file format</H3> |
Just | e5ad9c9 | 2000-03-15 20:56:20 +0000 | [diff] [blame] | 41 | |
jvr | 15174d0 | 2002-09-10 13:13:25 +0000 | [diff] [blame] | 42 | The following tables are currently supported: |
jvr | e3b3ada | 2002-09-13 13:17:39 +0000 | [diff] [blame] | 43 | <BLOCKQUOTE><TT> |
jvr | 2f629e5 | 2002-09-10 20:41:40 +0000 | [diff] [blame] | 44 | <!-- begin table list --> |
Denis Jacquerye | 871495a | 2013-12-08 21:12:07 +0000 | [diff] [blame] | 45 | BASE, CBDT, CBLC, CFF, COLR, CPAL, DSIG, EBDT, EBLC, FFTM, GDEF, GMAP, GPKG, GPOS, GSUB, JSTF, LTSH, META, OS/2, SING, SVG, 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, sbix, vhea and vmtx |
jvr | 2f629e5 | 2002-09-10 20:41:40 +0000 | [diff] [blame] | 46 | <!-- end table list --> |
jvr | e3b3ada | 2002-09-13 13:17:39 +0000 | [diff] [blame] | 47 | </TT></BLOCKQUOTE> |
jvr | 15174d0 | 2002-09-10 13:13:25 +0000 | [diff] [blame] | 48 | Other tables are dumped as hexadecimal data. |
Just | e5ad9c9 | 2000-03-15 20:56:20 +0000 | [diff] [blame] | 49 | |
jvr | 15174d0 | 2002-09-10 13:13:25 +0000 | [diff] [blame] | 50 | <P> |
Just | e5ad9c9 | 2000-03-15 20:56:20 +0000 | [diff] [blame] | 51 | TrueType fonts use glyph indices (GlyphID's) to refer to glyphs in most places. |
| 52 | While this is fine in binary form, it is really hard to work with for |
| 53 | humans. Therefore we use names instead. |
| 54 | |
jvr | 7de32f2 | 2002-05-12 12:48:14 +0000 | [diff] [blame] | 55 | <P>The glyph names are either extracted from the 'CFF ' table or the 'post' table, |
| 56 | or are derived from a Unicode 'cmap' table. In the latter case the Adobe Glyph List |
| 57 | is used to calculate names based on Unicode values. If all of these mthods fail, |
| 58 | names are invented based on GlyphID (eg. "glyph00142"). |
| 59 | |
| 60 | <P>It is possible that different glyphs use the same name. If this happens, |
| 61 | we force the names to be unique by appending "#n" to the name (n being an |
| 62 | integer number). The original names are being kept, so this has no influence |
| 63 | on a "round tripped" font. |
Just | e5ad9c9 | 2000-03-15 20:56:20 +0000 | [diff] [blame] | 64 | |
| 65 | <P>Because the order in which glyphs are stored inside the TT font is |
jvr | 7de32f2 | 2002-05-12 12:48:14 +0000 | [diff] [blame] | 66 | important, we maintain an ordered list of glyph names in the font. |
Just | e5ad9c9 | 2000-03-15 20:56:20 +0000 | [diff] [blame] | 67 | |
Just | e5ad9c9 | 2000-03-15 20:56:20 +0000 | [diff] [blame] | 68 | |
jvr | 15174d0 | 2002-09-10 13:13:25 +0000 | [diff] [blame] | 69 | <H3>Development and feedback</H3> |
| 70 | |
| 71 | TTX/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>. |
jvr | f5ccb35 | 2001-08-10 08:54:14 +0000 | [diff] [blame] | 72 | |
| 73 | <P> |
jvr | 15174d0 | 2002-09-10 13:13:25 +0000 | [diff] [blame] | 74 | Let 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. |
Just | 4977da4 | 1999-12-18 18:18:09 +0000 | [diff] [blame] | 75 | |
jvr | a014093 | 2002-09-12 22:22:36 +0000 | [diff] [blame] | 76 | <H3>Credits</H3> |
| 77 | |
| 78 | Windows setup script: Adam Twardoch |
| 79 | <BR>Icon: Hannes Famira |
| 80 | |
| 81 | <H3>Acknowledgements</H3> |
Just | e5ad9c9 | 2000-03-15 20:56:20 +0000 | [diff] [blame] | 82 | |
| 83 | (in alphabetical order) |
| 84 | Erik van Blokland, Petr van Blokland, Jelle Bosma, Vincent Connare, |
jvr | 81383d6 | 2003-09-01 16:10:22 +0000 | [diff] [blame] | 85 | Simon Daniels, Hannes Famira, Yannis Haralambous, Greg Hitchcock, John Hudson, |
| 86 | Jack Jansen, Tom Kacvinsky, Antoine Leca, Werner Lemberg, Tal Leming, |
| 87 | Peter Lofting, Dave Opstad, Laurence Penney, Read Roberts, Guido van Rossum, Andreas Seidel, Adam Twardoch. |
Just | e5ad9c9 | 2000-03-15 20:56:20 +0000 | [diff] [blame] | 88 | |
| 89 | <H3>Copyrights</H3> |
| 90 | |
jvr | e3b3ada | 2002-09-13 13:17:39 +0000 | [diff] [blame] | 91 | <A HREF="http://fonttools.sourceforge.net/">FontTools/TTX</A> |
jvr | d453a23 | 2003-08-26 12:02:48 +0000 | [diff] [blame] | 92 | <BR>1999-2003 Just van Rossum; LettError (just@letterror.com). See LICENSE.txt for the full license. |
jvr | e3b3ada | 2002-09-13 13:17:39 +0000 | [diff] [blame] | 93 | <P> |
| 94 | <A HREF="http://www.python.org/">Python</A> |
jvr | 77bc20a | 2003-08-25 21:16:12 +0000 | [diff] [blame] | 95 | <BR>Copyright (c) 2001-2003 Python Software Foundation. All Rights Reserved. |
jvr | e3b3ada | 2002-09-13 13:17:39 +0000 | [diff] [blame] | 96 | <BR>Copyright (c) 2000 BeOpen.com. All Rights Reserved. |
| 97 | <BR>Copyright (c) 1995-2001 Corporation for National Research Initiatives. All Rights Reserved. |
| 98 | <BR>Copyright (c) 1991-1995 Stichting Mathematisch Centrum, Amsterdam. All Rights Reserved. |
| 99 | <P> |
| 100 | <A HREF="http://www.pfdubois.com/numpy/">Numeric Python (NumPy)</A> |
| 101 | <BR>Copyright (c) 1996. The Regents of the University of California. All rights reserved. |
Just | 4977da4 | 1999-12-18 18:18:09 +0000 | [diff] [blame] | 102 | |
| 103 | </BODY> |
| 104 | </HTML> |