Katagamiv0.1

Fonts in coding agents

A coding agent that runs in a terminal prints in the terminal's font. The agent picks the characters, and the terminal picks how they look.

What an agent prints

An agent's interface is text in a grid of cells. Around the code and the prose it draws panels and tables with box-drawing characters, progress with block elements, spinners with Braille patterns, and steps and results with arrows, check marks and bullets.

╭─ plan ─────────────────────╮
│ ⠋ reading 12 files         │
│ ✓ tests pass  ▕████▌       │
│ → edit src/fonts.ts        │
╰────────────────────────────╯

When the font lacks one of these characters, the terminal draws it from another font. That font usually has another width, so the columns after the character stop lining up.

What the font needs

Katagami Mono

RangeCode pointsUsed forKatagami Mono
Box drawingU+2500 to U+257Fpanels, borders and tables128 of 128
Block elementsU+2580 to U+259Fprogress bars and meters32 of 32
Braille patternsU+2800 to U+28FFspinners such as ⠋⠙⠹⠸⠼⠴⠦⠧⠇⠏256 of 256
ArrowsU+2190 to U+21FFsteps, moves and keys28 of 112

Katagami Mono draws the status characters ⏺ ⎿ ✓ ✗ ✔ ✘ ● ○ ◉ ◆ ▶ ▸ › … ⏵ ⏸ ⏹ ⚠ ✕ ★ ☆ ✻ ✢ ✳ ✶ ✽ • → ← ↑ ↓.

Its cell is 1,280 units wide, which is 0.625 em. Code ligatures for ->, =>, !=, == and >= stay off until you turn on dlig, and each character in a ligature keeps its own cell.

Terminal settings

TerminalSetting
Ghosttyfont-family = "Katagami Mono" in ~/.config/ghostty/config
Kittyfont_family Katagami Mono in kitty.conf
WezTermconfig.font = wezterm.font("Katagami Mono")
Alacrittyfamily = "Katagami Mono" under [font.normal]
iTerm2Settings, Profiles, Text, Font
Windows Terminal"font": { "face": "Katagami Mono" } in a profile
VS Code and Cursor"terminal.integrated.fontFamily": "Katagami Mono"
Zed"terminal": { "font_family": "Katagami Mono" }

Install KatagamiMono[wght].ttf from the download page first, then restart the terminal.

Agent-native fonts covers what an agent needs to find and install a font on its own.