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

FormatTrueType (.ttf), with quadratic outlines
InstancesStatic: one set of numbers is one font. No variable axes in the file
SizeAbout 14 KB for all 80 characters. Far less when subsetted
TablesOS/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

glyf The outlines
13,988
kern Kerning
474
loca Where each one starts
332
hmtx Letter widths
328
name The font's name
282
cmap Characters to letters
204
OS/2 Metrics for Windows and browsers
96
head The header
54
hhea Line spacing
36
maxp Limits
32
post PostScript 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.