Laboratory
I built a test environment. Algorithm Tester. Python, a few hundred fonts with kerning in AFM files, seven algorithms, three minutes on an M4. For months I’d been fighting the spacing algorithm in 066.KERN — fifteen rays, a blend of average and minimum. Worked on simple glyphs. On T, L, V, Y it gave minus three hundred. I kept tweaking on a single font, by eye. Sometimes better, sometimes not. I didn’t know why. Because I had nothing to compare against. Now I do.
SDF beats rays on hard pairs. It sees the full shape of the channel between letters, not fifteen cross-sections. But the best metric on the reference font turned out to be pure minimum from the rays — not blend, not weighted average. My blending formula, the one I spent weeks on, made it worse. The simpler measurement was better. Hottel crossed-string — a form factor from thermal radiation physics — dead. Correlation practically zero. I tried fixing it. The data said no.
Ink density — how much ink sits at the edge of a glyph — beat everything on spacing. You render, scan pixels, divide. Zero complicated math. Works on ninety percent of fonts. SDF area integral gave the highest correlation of all algorithms. But as standalone spacing it’s useless — the scale doesn’t match and no fit fixes it. It goes to Hermiona as a feature.
Three lessons. Test on data, not by eye. Simple measurements beat complex heuristics. And best correlation and best algorithm are not the same thing.
The tester waits for every next idea. One file, three minutes, an answer.