OTF is an OpenType font with PostScript outlines. TTX is the XML form of a font, readable and editable by hand. fontTools sits between the two, and this page says exactly what happens to an OTF file on the way to becoming a TTX one.
What runs when an OTF file becomes TTX
fontTools in our own Python, on a machine we rent and watch. Your OTF file is uploaded once, fontTools runs once, the TTX comes back, and neither file is kept. OTF to TTX is one of the 3649 pairs that engine was probed on with a real file, which is why it has a page here and why the pairs the probe could not prove do not.
What survives from the OTF into the TTX
Every glyph, unchanged. This pair does not redraw anything: the outlines that leave the OTF arrive in the TTX point for point, so the letters render exactly as the designer drew them. The engine counts them on the way out and refuses the file if the count moved. Measured on this pair: the probe file came back at 1 243 980 bytes in 0.3 s.
Hinting, kerning pairs and OpenType features: the tables that tell a renderer how to space and substitute glyphs. This pair moves the container around them rather than through them.
Everything, in readable form. The TTX is the whole font written out as XML: every table, every glyph with its coordinates, the name table, the character map. Measured on DejaVu Sans, the 6253 glyphs are each described one by one.
The ability to change it by hand and put it back. TTX is not a dead end: fontTools reads it back into a font, which is how people fix a metric, rename a family or drop a table without owning a font editor.
What OTF to TTX costs you
Nothing about the OTF itself, and that is worth saying plainly rather than inventing a caveat. What this pair changes is how the font is packaged, never what it draws.
Being a font. Nothing renders a TTX: no browser, no word processor, no operating system. It is a description of a font, to read or to edit, and it has to go back through fontTools to become one again.
Compactness, and by a lot. The XML weighs about sixteen times the font: measured, 759 720 bytes of OTF become 11 943 515 characters of TTX. That is why the input is capped lower here than for the other targets.
Where OTF and TTX files come from
OTF. Type foundries write it, and so does anything descended from Adobe tools. Its outlines are cubic curves in a CFF table, not quadratic ones in a glyf table, and that difference is not cosmetic: it is why an OTF cannot simply be renamed to TTF.
TTX. Not a font anything can display: it is the XML that fontTools writes when you ask to see inside one. Every table, every glyph, in text. It weighs about sixteen times the font, measured: DejaVu Sans becomes 11,9 MB of XML.
If a model is going to read the TTX
Structure is what survives from the OTF file, and structure is what a model needs. OTF in, TTX out, with the heading tree intact instead of flattened into one long paragraph.
OTF to TTX, measured rather than promised
Running OTF to TTX against the real engine with a real file, fontTools wrote 1,243,980 bytes of TTX in 0.3 seconds, machine otherwise idle. That is one OTF file on one day and not an average, which is why the number is given together with the file that produced it.
The OTF to TTX verdict was reached by reading the font back with fontTools and checking what kind of outlines it holds, meaning the output was read back and recognised. Which check was used matters, because they do not all prove the same thing, and a status code of 200 proves nothing whatsoever about whether the TTX file has anything inside it.
What we will not pretend about OTF to TTX
An OTF file over 25 MB is refused before the upload finishes rather than after it, so you do not wait for a rejection.
An OTF to TTX run that passes 50 seconds is killed, and the fontTools process is killed with it. A run left behind would sit on one of the machine's two cores until somebody noticed.
This family will not change the kind of outlines a font carries, and that rules out OTF to TTF. A TrueType font draws with quadratic curves, a PostScript one with cubic curves, and turning one into the other means approximating every curve in the file. It can be done, it moves points, and it is not what happens here. Asking for it returns 415 with the name of the target that would have worked.
Renaming would have been easy and it would have been a lie. Measured on 30 August with a real OTF file: asking fontTools for a plain sfnt returns a file whose first four bytes are OTTO, byte for byte identical to the .otf output. Served as .ttf it opens in most tools and breaks in the ones that read the extension to decide what to do. The engine refuses it instead.
One OTF file at a time, chosen in the browser. There is nothing else to set up and nothing else on offer.
OTF to TTX: what people ask
What actually converts my OTF file to TTX?
fontTools does it, in our own Python, on a machine we rent and watch. Not a browser trick and not somebody else service: the OTF file is uploaded once, fontTools runs once, the TTX comes back, and neither file is kept afterwards.
How long does OTF to TTX take?
On the file the probe used, fontTools took 0.3 seconds and wrote 1,243,980 bytes of TTX. That is one real measurement on one real OTF file, not an average and not a promise about yours: a larger OTF takes longer, and past 50 seconds the run is stopped.
What do I lose going from OTF to TTX?
The one to know about first: Nothing about the OTF itself, and that is worth saying plainly rather than inventing a caveat. What this pair changes is how the font is packaged, never what it draws.
Will the TTX look different from the OTF?
No. Not slightly, not in edge cases: the outlines are copied rather than redrawn, so every glyph has the same coordinates it had before. The engine counts the glyphs on the way out and refuses the file if the count moved, which is the one way this could go wrong silently.
Can I turn the TTX back into a font?
Yes, that is what it is for. fontTools reads TTX back into a font, which is how people fix a metric, rename a family or drop a table by hand. This tool writes TTX; putting it back is a step you run yourself.
Why is there a smaller size limit on this one?
Because the XML weighs about sixteen times the font. Measured: a 760 KB font becomes 11,9 MB of TTX. The input is capped at 5 MB here against 25 MB for the other targets, so that the worst case stays around a hundred megabytes instead of four hundred.
Is OTF to TTX free?
There is a free allowance every month, and one OTF to TTX conversion costs half a credit against it. When the allowance runs out the tool says so and stops, rather than quietly handing you a worse TTX.