# 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.

```text
╭─ 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](https://katagami.kevinliu.studio/download) first, then restart the terminal.

[Agent-native fonts](https://katagami.kevinliu.studio/learn/agent-native-fonts) covers what an agent needs to find and install a font on its own.

---

Source: https://katagami.kevinliu.studio/learn/fonts-in-coding-agents
