Docs
Font output
A compiled font is an ordinary TrueType file. It installs, embeds and renders like any font from a foundry, because nothing about the format is special.
Format
| Format | TrueType (.ttf), with quadratic outlines |
|---|---|
| Instances | Static: one set of numbers is one font. No variable axes in the file |
| Size | About 14 KB for all 80 characters. Far less when subsetted |
| Tables | OS/2, cmap, glyf, head, hhea, hmtx, kern, loca, maxp, name, post |
Inside the file
A real font from this engine, with each table at its real size in bytes:
acme-display.ttf15.7 KB
glyfThe outlines- 13,988
kernKerning- 474
locaWhere each one starts- 332
hmtxLetter widths- 328
nameThe font's name- 282
cmapCharacters to letters- 204
OS/2Metrics for Windows and browsers- 96
headThe header- 54
hheaLine spacing- 36
maxpLimits- 32
postPostScript names- 32
Characters
This build compiles these 80:
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.,:;!?-'"()/&+=*#_
The engine itself draws 181 characters, adding accented Latin letters, symbols and more punctuation. They reach the SDK and API with a build that lets them all through. If your users need them, tell Marco.
Characters a font doesn't have fall back to the next font in your stack, as with any font. engine.glyphs marks them as missing, so you can tell.
Kerning and spacing
Each font gets its own kerning, written to a kern table and worked out from its parameters, so it follows the letterforms as they change. Browsers and design tools read it. There are no ligatures or alternates: the file has no GSUB or GPOS table.
Hinting
The fonts aren't hinted. They look their best at display sizes and on high-resolution screens, and small text on low-resolution screens depends on the renderer.
Reproducible
The same parameters always draw the same outlines. Timestamps inside the file differ between compiles, so compare outlines, not file hashes. You only need to store the numbers.
Naming
The family name you pass goes into the font's name table. Check that a name is free to use before relying on it: nothing here checks for trademarks.