• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1###
2ttx
3###
4
5
6TTX – From OpenType and TrueType to XML and Back
7------------------------------------------------
8
9Once installed you can use the ttx command to convert binary font files (.otf, .ttf, etc) to the TTX XML format, edit them, and convert them back to binary format. TTX files have a .ttx file extension::
10
11    ttx /path/to/font.otf
12    ttx /path/to/font.ttx
13
14The TTX application can be used in two ways, depending on what platform you run it on:
15
16* As a command line tool (Windows/DOS, Unix, macOS)
17* By dropping files onto the application (Windows, macOS)
18
19TTX 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 never overwrite existing files, but if necessary will append a unique number to the output filename (before the extension) such as ``Arial#1.ttf``.
20
21When 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:
22
23
24* specifying the folder where the output files are created
25* specifying which tables to dump or which tables to exclude
26* merging partial .ttx files with existing .ttf or .otf files
27* listing brief table info instead of dumping to .ttx
28* splitting tables to separate .ttx files
29* disabling TrueType instruction disassembly
30
31The TTX file format
32^^^^^^^^^^^^^^^^^^^
33
34.. begin table list
35
36The following tables are currently supported::
37
38    BASE, CBDT, CBLC, CFF, CFF2, COLR, CPAL, DSIG, Debg, EBDT, EBLC,
39    FFTM, Feat, GDEF, GMAP, GPKG, GPOS, GSUB, Glat, Gloc, HVAR, JSTF,
40    LTSH, MATH, META, MVAR, OS/2, SING, STAT, SVG, Silf, Sill, TSI0,
41    TSI1, TSI2, TSI3, TSI5, TSIB, TSIC, TSID, TSIJ, TSIP, TSIS, TSIV,
42    TTFA, VDMX, VORG, VVAR, ankr, avar, bsln, cidg, cmap, cvar, cvt,
43    feat, fpgm, fvar, gasp, gcid, glyf, gvar, hdmx, head, hhea, hmtx,
44    kern, lcar, loca, ltag, maxp, meta, mort, morx, name, opbd, post,
45    prep, prop, sbix, trak, vhea and vmtx
46
47.. end table list
48
49Other tables are dumped as hexadecimal data.
50
51TrueType fonts use glyph indices (GlyphIDs) 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.
52
53The glyph names are either extracted from the ``CFF`` table or the ``post`` table, or are derived from a Unicode ``cmap`` table. In the latter case the Adobe Glyph List is used to calculate names based on Unicode values. If all of these methods fail, names are invented based on GlyphID (eg ``glyph00142``)
54
55It is possible that different glyphs use the same name. If this happens, we force the names to be unique by appending #n to the name (n being an integer number.) The original names are being kept, so this has no influence on a "round tripped" font.
56
57Because the order in which glyphs are stored inside the binary font is important, we maintain an ordered list of glyph names in the font.
58
59.. automodule:: fontTools.ttx
60   :inherited-members:
61   :members:
62   :undoc-members:
63