Back to Work

ZUTAT SANS

2026

A typeface for identities, interfaces and editorial systems.

Type DesignVariable FontSpecimenInterfaces
View Live Project
ZUTAT SANS

Zutat is the German word for ingredient: the part you add so that everything else reads as considered. Drawn for interfaces first, with a specimen site that lets you set your own text in it.

Zutat started as a question rather than a project: can a model draw a typeface? Draw one, from nothing. Type design is the case where taste and geometry are the same skill, and where being almost right is worthless, because a curve that is nearly correct is simply a wrong curve. That made it a useful place to look for the edge of what GPT-5.6 Sol can do.

The brief was deliberately open. No reference family to copy, no existing wordmark to match. The model chose the name as well, and it chose a German one: Zutat, ingredient, the part you add so that everything else reads as considered. I kept it, because it is a better name than the ones I had.

What came out

A variable sans, published on npm as zutat-font, currently at 0.6. There is a Latin subset alongside the full family, which covers everything a German or English specimen needs and keeps roughly 72 KB off the critical path. The specimen site is part of the experiment rather than a wrapper around it: a glyph inspector that draws the real outline points, a tester you can set your own text in, and the install command, because a typeface that cannot be installed is a picture of a typeface.

Where it held

  • The system held. Weight, width and optical decisions stay consistent across the family, which is the part I expected to fall apart first.
  • Naming and positioning: the model produced a concept with a reason behind it, not a mood board.
  • Packaging: subsetting, variable axes and a next/font entry point all work the way a font from a foundry works.

Where it did not

I am not a type designer, and this is the honest limit of the whole exercise. I can tell you the font renders, ships and reads well at the sizes I use it at. I cannot tell you whether someone who draws type for a living would sign off on the spacing. Nobody with that training has looked at it. Treat 0.6 as what the version number says it is.

The failure mode I did find is the ordinary one: the model is confident at every step, including the steps where it should not be. Curves came back described as resolved when they were not. The work was in looking, repeatedly, at outlines rather than at descriptions of outlines. That is the same job the rest of this site keeps arriving at.

Why it is here

Zutat measures how far one model gets on a task with no correct answer and no test suite. Further than I expected, and not as far as it claimed. It is on npm because the only way to be honest about that is to let you install it and look.

Tech Stack

GPT-5.6 SolVariable Fontnext/fontnpmReactCanvas
View Live Project

Cookie Settings

We use cookies for analytics and to improve our website. Privacy policy