The Printer's First Un-kerned Type: On the Guttering Candle of a Perfectly Set Page Without a `font-feature-settings`

In the hushed, ink-stained quiet of a 15th-century print shop, a typesetter would have known a specific kind of frustration. It wasn't the smudged page or the recalcitrant press. It was the subtle, maddening gap between certain letters. A capital ‘T’ followed by a lowercase ‘o’ would leave a jarring void, a pocket of negative space that disrupted the even texture of a justified block of text. The word ‘To’ would look broken, its letters isolated from one another like distant acquaintances at a gathering.

This was the world before kerning. The individual metal sorts, each bearing a single character, were cast on rectangular blocks of uniform width. A narrow ‘i’ occupied the same physical width as a broad ‘m’. To achieve visual harmony, the printer had to manually file down the edge of a sort or employ clever overhangs, a painstaking process to coax letters into a closer, more natural relationship. It was a fight against the inherent rigidity of the system to achieve a fluid, human-readable result.

We face a similar, if digital, struggle today. We meticulously optimize our fonts—subsetting, preloading, ensuring a swift FOUT or FOIT—and yet, the page can feel… off. The text is present, the layout is stable, the Largest Contentful Paint is a triumph. But the eye stumbles. Words feel loose, uneven. The meticulous craft of the type designer, who spent hours defining the ideal spacing for every possible letter pair, is being ignored by the browser. The page is fast, but it is not yet good.

The Silent Default

This is the modern equivalent of the un-kerned type. Most browsers, in their quest for raw speed, have ‘font-optical-sizing’ and ‘font-kerning’ enabled by default. But this is a baseline. It’s the factory setting. It’s the uniform metal block. For many sophisticated typefaces, especially variable fonts, their true potential—and their true performance—is locked behind a deeper layer of control: `font-feature-settings`.

This CSS property is the digital equivalent of the printer’s file. It allows us to access the specific OpenType features the designer baked into the font: not just kerning, but ligatures, alternate glyphs, number spacing, and stylistic sets. Without explicitly enabling these features, we are serving a neutered version of the font. We get the raw shape of the letters but not the intended rhythm. We get the content, but we lose the craft. The text renders, but it doesn’t sing.

Ignoring `font-feature-settings` is a subtle performance failure. It’s not a failure of speed, but a failure of perceived performance and quality. A page that loads instantly but is unpleasant to read is, in the most human sense, a slow page. It asks the reader to do more work, to decipher a text that is visually jarring. It pulls them out of the flow, making the act of reading feel longer and more laborious than it should.

The lesson from the early printer is that performance is not merely the absence of delay; it is the presence of seamless craftsmanship. It is the invisible hand that files away the rough edges, that brings the ‘T’ and the ‘o’ into a harmonious union. By wielding `font-feature-settings`, we honor the type designer’s intent and complete the optimization journey. We move beyond serving mere words to delivering a refined, effortless, and truly performant reading experience. The candle no longer gutters in the gaps between letters; it burns with a steady, clear light.

Notes & further reading

A few pages I came back to while writing this: