Everything you need to know about TTF
TTF (TrueType Font, .ttf) is a vector font format created by Apple in 1989 and licensed to Microsoft as a counter-strike to Adobe's PostScript Type 1 hegemony. Its quadratic Bezier curves and the integrated hinting bytecode produced sharp text on the low-resolution displays of the era - and it remains the foundation of nearly every modern font format.
How it works under the hood
- Quadratic Beziers. Each glyph outline is described by quadratic curves and straight lines. Simpler math than the cubic curves used by Type 1 - fewer multiplications per pixel.
- Hinting. TrueType ships with a stack-based bytecode that runs at rasterization time to subtly adjust outlines so they snap to pixel grid. This is why hand-hinted fonts (Verdana, Tahoma) look crisp at 11px while modern unhinted fonts can look fuzzy.
- Tables, not blocks. A TTF is a directory of named tables: `cmap` (character to glyph mapping), `glyf` (outlines), `hmtx` (horizontal metrics), `name` (font names per language), `OS/2` (Windows-specific metrics).
- Variable fonts (TrueType GX/v1.8). Modern TTFs can include `fvar` and `gvar` tables that interpolate between weight, width, and slant axes, producing thousands of variants from a single file.
Where you'll actually use it
- Desktop installation - the format every OS understands
- Font fallback in legacy CSS pipelines
- Print workflows where font embedding into PDFs is required
- Linux distributions and open-source toolchains (FreeType is the reference renderer)
How it compares to alternatives
TTF vs OTF: OTF uses cubic Beziers and supports advanced typographic features (ligatures, contextual alternates) via its CFF outline table. TTF vs WOFF2: WOFF2 is a TTF/OTF wrapper compressed with Brotli - 30% smaller for web use. Use TTF for desktop, WOFF2 for browsers.
Things that will trip you up
- Hinting only matters at small sizes (under 16px) - high-DPI screens make it largely irrelevant
- Variable fonts (.ttf with `fvar`) are not supported by IE11 or older Safari - serve a static fallback
- Adding fonts to your CSS as TTF triggers a separate download even if the user has it installed - prefer system fonts when possible