Ships as one variable TTF/WOFF2 with all thirteen axes, plus 186 named static instances.
Ferro Flex, a variable grotesk by Ferro Type
A variable grotesk with thirteen axes and one house rule: nothing fake. Drawn weights, a real slant, and ink traps you can spot from the back of the room.
Move across the word — distance sets weight, position sets width.
(01) Foreword
Two people, one attic above a bike shop in Antwerp, and a nine-year argument about the shoulder of the lowercase n. We draw every master by hand, test at nine point on the cheapest newsprint we can find, and would rather close the studio than ship a fake italic.
This paragraph lights up on the GRAD axis — so the lines never reflow.
Type something you’d never dare set in Arial.
Every slider is a real axis in the font file. No synthetic bold, no browser shear, no guessing. Pick a preset, break it, then copy the CSS.
Tip: GRAD adds weight without changing width. Use it for dark mode or backlit signage and your line breaks stay exactly where you left them.
Typefaces(04)
Four families cut from the same variable file. Each ships as one variable font plus static instances for the software that still thinks it’s 2009.
Width locked between 25 and 50. Twelve weights, each with a real slanted companion.
Width locked between 125 and 151. Drawn for wayfinding: open apertures, generous spacing, readable at forty metres.
Optical size pinned at 8. Looser spacing, sturdier joins and ink traps you can actually see.
Eight of thirteen
Thirteen axes. Eight you’ll actually touch.
Registered axes do what the CSS spec promises. Parametric axes nudge single measurements — stem thickness, counter width, x-height — without redrawing anything. Hover a card to scrub it by hand.
Also in the file: YOPQ thin stroke, YTAS ascender, YTDE descender, YTFI figure height, YTUC cap height. For people who read changelogs for fun.
Weight
From hairline to “is that a font or a redaction?”
Width
Condensed enough for a book spine, wide enough for a ferry terminal.
Optical size
Small sizes get sturdier and looser; big sizes get sharper. Automatic in CSS.
Slant
Curves re-drawn at every degree. Your browser’s 14° shear can stay home.
Grade
More ink, same width. Dark mode’s quiet best friend.
Thick stroke
Parametric: fattens the vertical stems, leaves the horizontals alone.
Counter width
Opens the white inside the letter. The stems don’t even notice.
Lowercase height
Tall x-height for small screens, short for long novels.
1,146 glyphs. Eighty of them under the loupe.
Hover or tab through the set. Arrow keys work, because we’re not animals. Every one of these was drawn, argued over, and redrawn at least twice.
Out in the world, carrying the weight.
A few jobs from the last year. The clients had real deadlines and real opinions. The type didn’t complain once.
Notes from the attic.
Short, opinionated, occasionally wrong. We write these when a problem has kept us up for a week and we want company.
In defence of the ink trap, at nine point, on terrible paper
Ink traps are the little notches where strokes meet. On screen they look like a drawing error. On newsprint they’re the difference between an m and a black smudge. We kept them in Ferro Text and made them optional everywhere else.
We printed the same paragraph 214 times on four papers at a press in Mechelen and measured spread under a loupe. At 9 pt on 45 gsm newsprint, an untrapped junction gains roughly 0.08 mm of ink: enough to close the crotch of a v completely.
Above 24 pt nobody needs them, so the opsz axis quietly fills the traps back in as you scale up. Same file, same CSS. You never have to think about it, which is exactly the point.
Your browser’s fake italic is a crime scene
No italic in the font? Browsers shear the roman by about 14° and walk away. Curves go lopsided and the a looks like it’s falling downstairs.
The fix is one line of CSS: font-synthesis: none. Then use a real slant — ours is drawn at every step between 0° and −10°, with the bowls corrected so they stay round instead of turning into eggs.
Thirteen axes, and why we nearly shipped fourteen
Number fourteen was SERF, a serif axis. At 0 it was Ferro. At 100 it was a decent slab. At 47 it was something we don’t talk about.
Interpolating serifs means every serif needs a zero-length state, and zero-length serifs leave tiny spikes at intermediate values. We spent five weeks on it, then put it in a drawer. Next to the handwriting face we drew as a joke in 2019.