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
- Symbols have the same cell width as every other glyph.
- The 0 and O are drawn apart, and so are 1, l and I, because agents print hashes, IDs, tokens and paths that people copy.
- Ligatures are off until you turn them on, so
->and!=show the characters the agent wrote and a diff shows what changed. - The font itself has the box-drawing, block and Braille ranges.
- The weights stay legible when an interface bolds a heading or dims a note.
Katagami Mono
| Range | Code points | Used for | Katagami Mono |
|---|---|---|---|
| Box drawing | U+2500 to U+257F | panels, borders and tables | 128 of 128 |
| Block elements | U+2580 to U+259F | progress bars and meters | 32 of 32 |
| Braille patterns | U+2800 to U+28FF | spinners such as ⠋⠙⠹⠸⠼⠴⠦⠧⠇⠏ | 256 of 256 |
| Arrows | U+2190 to U+21FF | steps, moves and keys | 28 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
| Terminal | Setting |
|---|---|
| Ghostty | font-family = "Katagami Mono" in ~/.config/ghostty/config |
| Kitty | font_family Katagami Mono in kitty.conf |
| WezTerm | config.font = wezterm.font("Katagami Mono") |
| Alacritty | family = "Katagami Mono" under [font.normal] |
| iTerm2 | Settings, 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.