Skip to content

OpenCode Font

A TYPEFACE WITH 63,591 POSSIBLE COMBINATIONS

A TYPEFACE WITH 63,591 POSSIBLE COMBINATIONS

Pl. 00

The film

Narrated · Captions

A short film on the greatest six letters ever drawn.

4:5 cut
Pl. 01/16

Specimen

Edition 1.001 · 16 plates

Font

Six letters cut from the OpenCode wordmark. No curves, no diagonals, no exceptions: every edge falls on a grid of 120-unit modules.

Typeface
OpenCode
Glyphs
o p e n c d
Grid
4 × 7 modules
Module
120 / 1,000 em
Format
OpenType CFF
Edition
1.001
6
glyphs
28
positions
120
units a module
0
curves
Pl. 02/16

Construction

Live · SVG · scrub to inspect

Each letter, rebuilt from nothing: the grid, the metrics, one module at a time, the shade, the outline, and the measurements that prove it.

x 600base 0asc 720desc −120stem 120240600advance 600d · 00/15grid 0000ms
  1. 01Grid0–700ms
  2. 02Metrics450–950ms
  3. 03Modules870–2420ms
  4. 04Shade2340–2790ms
  5. 05Outline2710–3510ms
  6. 06Callouts3430–4330ms
0000ms
x 600base 0asc 720desc −120stem 120240600advance 600
o · 14 + 4 modules
x 600base 0asc 720desc −120stem 120240600advance 600
p · 15 + 4 modules
x 600base 0asc 720desc −120stem 120240600advance 600
e · 15 + 3 modules
x 600base 0asc 720desc −120stem 120240600advance 600
n · 11 + 6 modules
x 600base 0asc 720desc −120stem 120360600advance 600
c · 11 + 6 modules
x 600base 0asc 720desc −120stem 120240600advance 600
d · 15 + 4 modules
Pl. 03/16

Timeline

Total 4330ms · 6 tracks

The same construction as a schedule. Letters with more modules take longer to place; nothing else changes.

o
GridMetricsModulesShadeOutlineCallouts
p
GridMetricsModulesShadeOutlineCallouts
e
GridMetricsModulesShadeOutlineCallouts
n
GridMetricsModulesShadeOutlineCallouts
c
GridMetricsModulesShadeOutlineCallouts
d
GridMetricsModulesShadeOutlineCallouts
Pl. 04/16

Exploded view

Isometric · 30°

Every module lifts by a stated rule: the order it was placed, its row, or its distance from the centre. Equal steps stay equal.

(60, 120) · row 5z 180u(300, 360) · row 3z 540u(420, 600) · row 1z 900u

z = e × 180u × (6 − row)

row = 0 at the ascender, 6 at the descender

Modules
18
Top
900u
Pl. 05/16

Glyph passports

6 documents · issued 1.001

One page per letter: identity, measurements and every point of its outline in font units.

PassportNo. 001
Name
Latin small letter o
Code point
U+006F
Born
OpenCode wordmark
Ink / shade
14 / 4
Coverage
50.0%
Counter
6 modules
Contours
2 · 8 points
Outline points, font units
#Contourxy
011420480
021180480
031180120
041420120
0525400
062600
07260600
082540600
PassportNo. 002
Name
Latin small letter p
Code point
U+0070
Born
OpenCode wordmark
Ink / shade
15 / 4
Coverage
53.6%
Counter
6 modules
Contours
2 · 10 points
Outline points, font units
#Contourxy
011180120
021420120
031420480
041180480
0525400
0621800
072180-120
08260-120
09260600
102540600
PassportNo. 003
Name
Latin small letter e
Code point
U+0065
Born
OpenCode wordmark
Ink / shade
15 / 3
Coverage
53.6%
Counter
5 modules
Contours
2 · 12 points
Outline points, font units
#Contourxy
011540240
021180240
031180120
041540120
0515400
061600
07160600
081540600
092180360
102420360
112420480
122180480
PassportNo. 004
Name
Latin small letter n
Code point
U+006E
Born
OpenCode wordmark
Ink / shade
11 / 6
Coverage
39.3%
Counter
9 modules
Contours
2 · 10 points
Outline points, font units
#Contourxy
011420480
021180480
0311800
041600
05160600
061420600
0725400
0824200
092420480
102540480
PassportNo. 005
Name
Latin small letter c
Code point
U+0063
Born
OpenCode wordmark
Ink / shade
11 / 6
Coverage
39.3%
Counter
9 modules
Contours
1 · 8 points
Outline points, font units
#Contourxy
011540480
021180480
031180120
041540120
0515400
061600
07160600
081540600
PassportNo. 006
Name
Latin small letter d
Code point
U+0064
Born
OpenCode wordmark
Ink / shade
15 / 4
Coverage
53.6%
Counter
6 modules
Contours
2 · 10 points
Outline points, font units
#Contourxy
011420480
021180480
031180120
041420120
0525400
062600
07260600
082420600
092420720
102540720
Pl. 06/16

Analysis

8 figures · computed from the outlines

Ink, counters, symmetry and the 28 positions of the grid, counted across all six letters.

Fig. 01Modules per glyph
o14+4
p15+4
e15+3
n11+6
c11+6
d15+4
Ink in blue, shade in grey. The n and the c are the lightest letters.
Fig. 02Ink coverage
50%o
54%p
54%e
39%n
39%c
54%d
Share of the 4 × 7 cell that is ink. Never more than 54%, never less than 39%.
Fig. 03Ink against counter
o p den cink →↑ counter
Ink against white modules inside the x-height. Every letter lands on one line: they always add up to 20.
Fig. 04Stroke contrast
1:1120u / 120u · σ = 0
Thick over thin, measured on every stroke. There is no thin.
Fig. 05Symmetry
o100% · 100%
p100% · 100%
e90% · 90%
n90% · 70%
c70% · 100%
d100% · 100%
How much of the ink survives a mirror, left to right and top to bottom.
Fig. 06Coverage heatmap
0001
6665
6005
6115
6004
6556
1000
How many of the six letters put ink in each of the 28 positions. 8 positions are used by all six.
Fig. 07Letter frequency
43o
22p
66e
44n
25c
47d
Across the 50 words the six letters spell. The e carries the language.
Fig. 08Bigrams
opencd
o38018212
p3015000
e27617214
n6011198
c1806000
d6023000
Pairs of letters side by side in the word list. ‘de’ leads with 23; 14 of the 36 pairs never happen.
Pl. 07/16

Kerning

GPOS · kern · 0 entries

Thirty-six pairs. Every one of them spaced by the same 120 units. The kerning table is empty, and that is the point.

opencd
o
p
e
n
c
d

Latin small letter o + Latin small letter d · adjustment 0 · gap 120u

Pl. 08/16

Performance

Measured · zlib level 9, brotli default

A font small enough to read in one sitting.

49,208bytes
OpenCode.otf
11,091bytes
Brotli
19,832bytes
Gzip
9glyphs
Including .notdef, .null and space
4,149code points
Mapped to six letters
0hints
Every edge is on the grid
0curves
Only H and V segments
58points
All six outlines

Live benchmark · Canvas 2D · this device

—

glyphs per millisecond

Outlines
GlyphContoursPointsSegments
o288 straight
p21010 straight
e21212 straight
n21010 straight
c188 straight
d21010 straight
Version history
VersionDateChange
0.12025-11-14The wordmark's outlines land in logo.tsx
0.22026-01-17The splash logo is redrawn on the same grid
1.000—The typewriter at opencode.ai/font
1.001—Installable OTF with a per-visit substitution map
Pl. 09/16

Poster

Offset · 1 colour + paper
Fig. 1 — open · 4 glyphs · 19 modules
Fig. 2 — code · 54 ink modules
Pl. 10/16

Waterfall

7 → 280px · m = size / 7

Sizes are multiples of seven pixels. At every one of them, every module is a whole number of pixels: no blur, no hinting.

  • 7px · m1
  • 14px · m2
  • 21px · m3
  • 28px · m4
  • 42px · m6
  • 56px · m8
  • 84px · m12
  • 112px · m16
  • 168px · m24
  • 224px · m32
  • 280px · m40
Pl. 11/16

Anagrams

8! / (2! × 2!) = 10,080

The letters of opencode can be arranged 10,080 ways. Try them all.

00001/ 10,080
Not a word

27 words fit inside o·p·e·n·c·o·d·e — of 50 the letters can spell

Pl. 12/16

Field

Canvas · ripples decay in 0.7s

A field of the six letters.

Pl. 13/16

Loupe

×5 · 12 × 12 per module

Look closer. Every module of every letter is a grid of 144 smaller squares.

Hover · press and hold on touch

Pl. 14/16

Tester

Snap · 1 module

Type with the six letters. Other characters stay empty.

16 glyphs · 0 empty · 70px
Pl. 15/16

How big is 6³⁵⁹¹

35 levels · 10⁸⁰ atoms each

Every visit maps 3,591 characters to six letters.

That makes 6³⁵⁹¹ possible fonts, a number 2,795 digits long.

The observable universe holds about 10⁸⁰ atoms.

Put a whole universe inside every one of those atoms.

Then a universe inside every atom of those, and keep going.

34 levels down there are 10²⁷²⁰ atoms. Still short.

At level 35 there are 10²⁸⁰⁰, finally more than 6³⁵⁹¹.

Your font is one of them.

log₁₀ 6 = 0.778151…3,591 × 0.778151… = 2794.346³⁵⁹¹ ≈ 10²⁷⁹⁴·³⁴ · 2,795 digits2794.34 ÷ 80 = 34.93 → 35 levels (10²⁷²⁰ is short, 10²⁸⁰⁰ passes)

Pl. 16/16

Colophon

End of specimen

Download the font, install it, then choose OpenCode in any app. Every copy carries its own substitution map.

Typeface
OpenCode 1.001
Drawn on
4 × 7 modules of 120 units
Source
The OpenCode wordmark
Specimen set in
OpenCode, OpenTUI Mono and Inter
Built with
SVG and CSS, no images
Published by
Anomaly