A monospace built from strokes on a 12-unit grid. Every glyph is 750 units wide. The weight axis sets the stroke. The FRAG axis takes the strokes from clean to broken.
Playground
Set your own text
The weight axis arrives with the variable font. This build has Regular only.
01550100
Clean · safe for body text
FRAG arrives with the variable font.
Made by machines.
Proven for machines.
pc spend --card 0042
The FRAG axis
From clean to broken on one axis
FRAG runs from 0 to 100. Up to 15 it only cuts small notches into the joints, so body text stays safe. From 16 it cuts across the strokes. Past 50 the pieces move and drop out.
0CleanBody text
1–15Ink-trap notchesBody text
16–50Cuts across strokesHeadings
51–100Broken piecesTitles and marks
FRAG arrives with the variable font. Then this section shows Weft at FRAG 0, 8, 15, 30, 50, 70 and 100.
Specimen
From 12 to 200 pixels
12 pxThe loom writes every outline from a table of strokes on a 12-unit grid, and fontmake compiles it.
14 pxThe loom writes every outline from a table of strokes on a 12-unit grid, and fontmake compiles it.
16 pxThe loom writes every outline from a table of strokes on a 12-unit grid.
20 pxEvery glyph is 750 units wide.
24 pxMade by machines. Proven for machines.
32 pxProven for machines: 0123456789
48 pxStrokes on a grid
72 pxWeft 0042
120 pxRg Ka
200 pxWeft
Character set
199 characters
Read from the font's character map when the site is built. Select a character to see it large.
a
Character
Latin Small Letter A
Unicode
U+0061
Glyph
a
Loading the character map.
Look-alikes
Characters that must not be confused
Code, serial numbers and card numbers need these pairs to stay distinct. Each group is set at 48 px.
I l 1 |
O 0 o
rn m
cl d
5 S
2 Z
B 8
g 9 q
u v
Proven readable
Read back by OCR at every FRAG level
CI sets a test text in Weft at each FRAG level, renders it and reads it back with OCR. The character error rate (CER) is the share of characters the OCR gets wrong. The release gate: up to FRAG 15, CER must match FRAG 0.
Agents write the generator, the tests and the CI. People set the goals and review the proofs.
The loom
A Python generator. It reads a table of centre-line strokes on a 12-unit grid, cuts each stroke into pieces with the same points in every master, and writes 12 UFO masters (wght × FRAG) at 1000 units per em. No outline comes from another font.
Every pull request runs the tests, builds the fonts with fontmake, checks them with Fontspector and renders a proof sheet. GitHub Actions are pinned to commit SHAs.