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 | <!-- begin table list --> |
| 22 | <!-- end table list --> |
Just | e5ad9c9 | 2000-03-15 20:56:20 +0000 | [diff] [blame] | 23 | |
jvr | 15174d0 | 2002-09-10 13:13:25 +0000 | [diff] [blame^] | 24 | <ul> |
| 25 | <li>As a command line tool (Windows/DOS, Unix, MacOSX)</li> |
| 26 | <li>By dropping files onto the application (Windows, MacOS)</li> |
| 27 | </ul> |
Just | e5ad9c9 | 2000-03-15 20:56:20 +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 | 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 neccesary will append a unique number to the output filename (before the extension), eg.: "Arial#1.ttf". |
| 31 | |
Just | e5ad9c9 | 2000-03-15 20:56:20 +0000 | [diff] [blame] | 32 | <P> |
jvr | 15174d0 | 2002-09-10 13:13:25 +0000 | [diff] [blame^] | 33 | 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: |
| 34 | <ul> |
| 35 | <li>specifying the folder where the output files are created</li> |
| 36 | <li>specifying which tables to dump or which tables to exclude</li> |
| 37 | <li>merging partial .ttx files with existing .ttf or .otf files</li> |
| 38 | <li>listing brief table info isntead of dumping to .ttx</li> |
| 39 | <li>splitting tables to separate .ttx files</li> |
| 40 | <li>disabling TT instruction disassembly</li> |
| 41 | </ul> |
Just | e5ad9c9 | 2000-03-15 20:56:20 +0000 | [diff] [blame] | 42 | |
jvr | 15174d0 | 2002-09-10 13:13:25 +0000 | [diff] [blame^] | 43 | <H3>The TTX file format</H3> |
Just | e5ad9c9 | 2000-03-15 20:56:20 +0000 | [diff] [blame] | 44 | |
jvr | 15174d0 | 2002-09-10 13:13:25 +0000 | [diff] [blame^] | 45 | The following tables are currently supported: |
Just | e5ad9c9 | 2000-03-15 20:56:20 +0000 | [diff] [blame] | 46 | |
jvr | 15174d0 | 2002-09-10 13:13:25 +0000 | [diff] [blame^] | 47 | <P> |
| 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 | |
Just | e5ad9c9 | 2000-03-15 20:56:20 +0000 | [diff] [blame] | 76 | <H3>Thank-you's</H3> |
| 77 | |
| 78 | (in alphabetical order) |
| 79 | Erik van Blokland, Petr van Blokland, Jelle Bosma, Vincent Connare, |
jvr | a12cf92 | 2002-09-10 11:55:09 +0000 | [diff] [blame] | 80 | Simon Daniels, Hannes Famira, Greg Hitchcock, John Hudson, Jack Jansen, |
| 81 | Antoine Leca, Werner Lemberg, Peter Lofting, Dave Opstad, Laurence Penney, |
Just | e5ad9c9 | 2000-03-15 20:56:20 +0000 | [diff] [blame] | 82 | Guido van Rossum, Adam Twardoch. |
| 83 | |
| 84 | <H3>Copyrights</H3> |
| 85 | |
jvr | ec8ca4b | 2002-05-03 19:02:26 +0000 | [diff] [blame] | 86 | FontTools/TTX -- 1999-2002 Just van Rossum; Letterror (just@letterror.com) |
Just | 4977da4 | 1999-12-18 18:18:09 +0000 | [diff] [blame] | 87 | |
| 88 | </BODY> |
| 89 | </HTML> |