Procedural font engine · SDK and API
Custom fonts, inside your product.
Let your users make their own typeface.
Real, installable fonts in milliseconds, without leaving your app. Press a letter and turn: this is the engine.
Set in Expo
Turn it.
Read the call.
Every change writes the code and compiles a whole font, right here in your browser. The numbers are what your machine just did.
import { createEngine } from "@typomat/engine";
const engine = await createEngine({ licenseKey });
const ttf = engine.compile({
weight: 118,
contrast: 0.92,
width: 0.9,
xHeight: 470,
serif: 0.5,
serifShape: -0.6,
}, { name: "Your brand" });Compiled in
…
File size
…
Characters
80
One engine.
Endless faces.
Each of these is the same drawing code, with different numbers. 64 parameters reach from hairline to poster, serif to stencil.
weight 90 · contrast 0.75 · slant 12
weight 150 · width 0.62 · contrast 0.05
weight 118 · contrast 0.92 · serif 0.5
weight 170 · width 1.5 · contrast 0.05
weight 70 · arch 1 · contrast 0.6
weight 120 · flare 1 · contrast 0.5
weight 14 · width 1.5 · contrast 0
weight 160 · stencil 1 · contrast 0.1
No prompt.
No waiting.
AI font generators answer a description. Typomat is an instrument: your users shape the font directly, and it answers while their hand is still moving.
| Compared | A prompt-to-font generator | Typomat |
|---|---|---|
| What the user does | Describes a font, then asks again | Turns a dial and watches every letter follow |
| How fast it answers | A wait for each attempt | A whole font in about 90 ms |
| Where it runs | Usually on someone's GPU | In the visitor's browser, or on your server |
| Same input twice | Usually a different result | The same letters, every time |
| Changing one thing | Regenerate and hope | Move one number. Nothing else moves |
Design and social tools
A face for every brand
Each customer gets a typeface of their own, right beside their templates.
Logo makers and brand kits
A wordmark nobody else has
Sell a logo in lettering made for it, not the same fonts as everyone else.
Website builders
A display face per site
Served from your customer's own domain, with nothing to license per page view.
Image, video and PDF APIs
One more parameter
Generated type as part of a render call. Keep your pipeline as it is.
Print on demand
Lettering they shaped
Let the buyer turn the letters on the thing they're buying.
It already ships.
Three times.
This engine runs a real app, a Figma plugin and this website. You're not the first product it goes into.

The Typomat app

Inside Figma

On iPhone
Three ways in.
The same engine each time. Pick how close to your product you want it.
What's in the box.
Measured from the engine this page runs. More in the docs
- Output
- TrueType (.ttf), static
- Kerning
- Yes, generated with each font
- Characters
- 80: A–Z, a–z, 0–9 and basic punctuation
- Parameters
- 64, in 5 groups: form, stroke, ends, flourish, carve
- Also returns
- SVG outlines for any text, with kerning
- Compile time
- About 90 ms a font, on one thread
- Font size
- About 14 KB
- Engine size
- 6 MB, 1.8 MB over the wire
- Runs in
- Modern browsers and Node. No GPU, no network
- No lock-in
- A font is a plain TrueType file. It keeps working without us.
- No royalties
- Your users' fonts are theirs to use commercially, for good.
- Direct line
- You'll talk to Marco, who built the engine.
Good to know
Try it in your product.
Start with the free API trial, or write to Marco about what you're building.




