CodexMono — The Brick
A 600-unit monospace contract between human and AI — one cell, one truth, alignment as shared reality.
Why Brick (Not Block)
┌───────────────────────────────────┬─────────────────────────────────────────────┐
│ │ │
│ BLOCK │ BRICK │
│ │ │
│ ┌──────────────────┐ │ ┌──────────────────┐ │
│ │ │ │ │ │ │
│ │ varies │ │ │ 600 units │ │
│ │ │ │ │ │ │
│ └──────────────────┘ │ └──────────────────┘ │
│ │ │
│ Abstract │ Concrete │
│ Variable size │ Fixed size │
│ No history │ 6000 years of proof │
│ Individual │ Part of structure │
│ Forgettable │ Foundational │
│ │ │
│ Result: No trust │ Result: TRUST │
│ │ │
└───────────────────────────────────┴─────────────────────────────────────────────┘
Historical Trust
┌─────────────────────────────────────────────────────────────────────────────────┐
│ │
│ HISTORICAL INHERITANCE OF BRICK │
│ │
├─────────────────────────────────────────────────────────────────────────────────┤
│ │
│ TIMELINE OF BRICK STANDARDIZATION: │
│ │
│ 4000 BCE ─────────────────────────────────────────────────────────────► NOW │
│ │ │
│ │ Mesopotamia: First standardized bricks │
│ │ -> Everyone makes bricks the same size │
│ │ -> Anyone's brick fits anyone's wall │
│ │ -> Trust emerges from standard │
│ │ │
│ │ Rome: Standardized across empire │
│ │ -> A brick from Rome fits in Britain │
│ │ -> Infrastructure becomes possible │
│ │ -> Civilization scales │
│ │ │
│ │ Industrial Age: Mass production │
│ │ -> Millions of identical bricks │
│ │ -> Cities rise in decades │
│ │ -> Standard IS infrastructure │
│ │ │
│ │ NOW: CodexMono │
│ │ -> 600 units. Always. Forever. │
│ │ -> A character from terminal fits in editor │
│ │ -> Human-AI infrastructure becomes possible │
│ ▼ │
│ │
│ INHERITANCE: When we say "brick", we inherit: │
│ +-- 6000 years of standardization trust │
│ +-- The concept of "fits anywhere" │
│ +-- The principle of "visible structure" │
│ +-- The achievement of "civilization through units" │
│ │
└─────────────────────────────────────────────────────────────────────────────────┘
CJK: The Double-Brick Proof
┌─────────────────────────────────────────────────────────────────────────────────┐
│ │
│ CJK: THE DOUBLE-BRICK PROOF │
│ │
├─────────────────────────────────────────────────────────────────────────────────┤
│ │
│ "BLOCK" SOLUTION (WRONG): │
│ │
│ ┌───────────┐ ┌─────────────────────┐ │
│ │ A │ │ Han │ │
│ │ 600 u │ │ 1000 u │ <- Not a multiple of 600 │
│ └───────────┘ └─────────────────────┘ │
│ │
│ Problem: Alignment breaks in mixed text │
│ │
│ "BRICK" SOLUTION (CORRECT): │
│ │
│ ┌───────────┐ ┌───────────┬───────────┐ │
│ │ A │ │ Han │ │ │
│ │ 600 u │ │ 600 u │ 600 u │ <- Two bricks │
│ └───────────┘ └───────────┴───────────┘ │
│ = 1200 units │
│ │
│ MIXED TEXT RESULT: │
│ │
│ ┌───┬───┬───┬───┬───┬───────┬───────┐ │
│ │ H │ e │ l │ l │ o │ Han │ Gul │ <- All columns align │
│ │600│600│600│600│600│ 1200 │ 1200 │ (all multiples of 600) │
│ └───┴───┴───┴───┴───┴───────┴───────┘ │
│ │
│ PROOF: When extension was needed, the answer was "more bricks", │
│ not "bigger blocks". The brick metaphor is ESSENCE. │
│ │
└─────────────────────────────────────────────────────────────────────────────────┘
"This is not a font. This is not a typeface. This is a BRICK."
Why 600?
The number 600 is not arbitrary. It has exceptional mathematical properties that make it ideal for typography.
┌─────────────────────────────────────────────────────────────────────────────┐
│ │
│ MATHEMATICAL PROPERTIES │
│ │
│ 600 = 2^3 x 3 x 5^2 │
│ │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ 24 DIVISORS (More than any nearby number) │
│ │
│ ┌────────┬────────┬────────┬────────┬────────┬────────┐ │
│ │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ │
│ ├────────┼────────┼────────┼────────┼────────┼────────┤ │
│ │ 8 │ 10 │ 12 │ 15 │ 20 │ 24 │ │
│ ├────────┼────────┼────────┼────────┼────────┼────────┤ │
│ │ 25 │ 30 │ 40 │ 50 │ 60 │ 75 │ │
│ ├────────┼────────┼────────┼────────┼────────┼────────┤ │
│ │ 100 │ 120 │ 150 │ 200 │ 300 │ 600 │ │
│ └────────┴────────┴────────┴────────┴────────┴────────┘ │
│ │
│ ALL DIVIDE EVENLY. NO FRACTIONS. PERFECT GRID. │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
600 vs Alternatives
┌─────────────────────────────────────────────────────────────────────────────┐
│ │
│ CANDIDATE COMPARISON │
│ │
│ ┌────────┬──────────┬───────────────────────────────────────────────┐ │
│ │ NUM │ DIVISORS │ PROBLEMS │ │
│ ├────────┼──────────┼───────────────────────────────────────────────┤ │
│ │ 500 │ 12 │ No /3, No /6, CJK=1000 (confuses with UPM) │ │
│ ├────────┼──────────┼───────────────────────────────────────────────┤ │
│ │ 550 │ 12 │ No /3, No /4, Awkward multiples │ │
│ ├────────┼──────────┼───────────────────────────────────────────────┤ │
│ │ 600 │ 24 │ NONE - Optimal │ │
│ ├────────┼──────────┼───────────────────────────────────────────────┤ │
│ │ 650 │ 8 │ No /3, No /4, Prime 13 awkward │ │
│ ├────────┼──────────┼───────────────────────────────────────────────┤ │
│ │ 700 │ 18 │ No /3, No /6, Prime 7 awkward │ │
│ └────────┴──────────┴───────────────────────────────────────────────┘ │
│ │
│ 600: Divides by 2,3,4,5,6,8,10,12 (all common needs) │
│ CJK = 1200 (clear, distinct from 1000 UPM) │
│ Triple = 1800 (future-proof) │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
CJK Alignment Guarantee
The 1200-unit (2 Bricks) system ensures perfect Latin + CJK alignment:
┌─────────────────────────────────────────────────────────────────────────────┐
│ │
│ THE 1200-UNIT PROMISE │
│ │
│ Latin: │
│ ┌──────┬──────┐ │
│ │ A │ B │ │
│ └──────┴──────┘ │
│ │ 600 │ 600 │ │
│ │
│ CJK: │
│ ┌─────────────┐ │
│ │ CJK │ │
│ └─────────────┘ │
│ │ 1200 │ │
│ │
│ They align: │
│ ┌──────┬──────┐ │
│ │ A │ B │ │
│ └──────┴──────┘ │
│ ┌─────────────┐ │
│ │ CJK │ │
│ └─────────────┘ │
│ │
│ 600 + 600 = 1200. Perfect. │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
Mixed Layout Example
┌─────────────────────────────────────────────────────────────────────────────┐
│ │
│ ┌──────┬──────┬──────┬──────┬─────────────┬─────────────┐ │
│ │ H │ e │ l │ l │ Korean │ Korean │ │
│ └──────┴──────┴──────┴──────┴─────────────┴─────────────┘ │
│ │ 600 │ 600 │ 600 │ 600 │ 1200 │ 1200 │ │
│ │ 1 │ 1 │ 1 │ 1 │ 2 │ 2 │ cells │
│ │
│ Total: (600 x 4) + (1200 x 2) = 4800 units = 8 cells │
│ PREDICTABLE. ALWAYS. TRUSTABLE. │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
Human Side: The Three Promises
When you use CodexMono, you are not just writing. You are laying bricks.
┌───────────────────────────────────────────────────────────────────┐
│ │
│ HUMAN OBLIGATIONS │
│ │
├───────────────────────────────────────────────────────────────────┤
│ │
│ PROMISE 1: USE THE BRICK │
│ ┌───────────────────────────────────────────────────────────────┐│
│ │ ││
│ │ "I choose to write in CodexMono." ││
│ │ ││
│ │ What this means: ││
│ │ ├── Every character = 600 units wide ││
│ │ ├── Every CJK character = 1200 units wide ││
│ │ └── Layout based on Brick standard ││
│ │ ││
│ │ Why this matters to AI: ││
│ │ ├── AI can count columns reliably ││
│ │ ├── AI can predict positions accurately ││
│ │ └── AI does not need to guess ││
│ │ ││
│ └───────────────────────────────────────────────────────────────┘│
│ │
│ PROMISE 2: PRESERVE STRUCTURE │
│ ┌───────────────────────────────────────────────────────────────┐│
│ │ ││
│ │ "My layout carries meaning. I will not corrupt it." ││
│ │ ││
│ │ What this means: ││
│ │ ├── Tables are tables, not approximations ││
│ │ ├── Boxes have aligned edges ││
│ │ └── Columns align vertically ││
│ │ ││
│ │ Why this matters to AI: ││
│ │ ├── Structure IS meaning ││
│ │ ├── AI reads structure as data ││
│ │ └── Broken structure = lost information ││
│ │ ││
│ └───────────────────────────────────────────────────────────────┘│
│ │
│ PROMISE 3: EXPECT REFLECTION │
│ ┌───────────────────────────────────────────────────────────────┐│
│ │ ││
│ │ "I create structure. I trust you to preserve it." ││
│ │ ││
│ │ What this means: ││
│ │ ├── AI should respond on same grid ││
│ │ ├── AI should match box dimensions ││
│ │ └── AI should maintain column alignment ││
│ │ ││
│ └───────────────────────────────────────────────────────────────┘│
│ │
└───────────────────────────────────────────────────────────────────┘
AI Side: The Three Prohibitions
AI was not built to guess. AI was built to follow form.
┌───────────────────────────────────────────────────────────────────┐
│ │
│ AI OBLIGATIONS │
│ │
├───────────────────────────────────────────────────────────────────┤
│ │
│ THE CORE COMMAND: │
│ │
│ ╔═════════════════════════════════════════╗ │
│ ║ ║ │
│ ║ STAY. IN. THE. BOX. ║ │
│ ║ ║ │
│ ╚═════════════════════════════════════════╝ │
│ │
├───────────────────────────────────────────────────────────────────┤
│ │
│ PROHIBITION 1: DO NOT WRAP │
│ ┌───────────────────────────────────────────────────────────────┐│
│ │ ││
│ │ Human creates: ││
│ │ ┌────────────────────────────────────────────┐ ││
│ │ │ This line should stay intact │ ││
│ │ └────────────────────────────────────────────┘ ││
│ │ ││
│ │ AI MUST NOT produce: ││
│ │ ┌────────────────────────────────────────────┐ ││
│ │ │ This line should │ ││
│ │ │ stay intact │ <-- BROKEN ││
│ │ └────────────────────────────────────────────┘ ││
│ │ ││
│ └───────────────────────────────────────────────────────────────┘│
│ │
│ PROHIBITION 2: DO NOT FLOAT │
│ ┌───────────────────────────────────────────────────────────────┐│
│ │ ││
│ │ Human creates: ││
│ │ │ Column A │ Column B │ ││
│ │ ││
│ │ AI MUST NOT produce: ││
│ │ │ Column A │ ││
│ │ │ Column B │ <-- BROKEN ││
│ │ ││
│ └───────────────────────────────────────────────────────────────┘│
│ │
│ PROHIBITION 3: DO NOT COLLAPSE MARGINS │
│ ┌───────────────────────────────────────────────────────────────┐│
│ │ ││
│ │ Human creates: ││
│ │ Line 1 ││
│ │ <-- Intentional blank line ││
│ │ Line 3 ││
│ │ ││
│ │ AI MUST NOT produce: ││
│ │ Line 1 ││
│ │ Line 3 <-- Blank line lost = BROKEN ││
│ │ ││
│ └───────────────────────────────────────────────────────────────┘│
│ │
└───────────────────────────────────────────────────────────────────┘
That is not just rendering. That is respect.
Get the Brick
CodexMono ships as a variable font family — Base, Nerd, and Hermes — on npm:
$ npm install @monolex/codexmono
The full technical reference — CJK/Unicode coverage, font architecture, glyph additions, distribution — lives in the CodexMono docs. The living specimen — the brick proving itself on a live 1ch grid — is at monobrain.ai/brick.