GPU Rendering
Every frame Damson shows is drawn on the GPU by a Metal renderer. That’s what keeps text crisp and scrolling fluid no matter how fast output streams in.
What the renderer handles
- Truecolor (24-bit). Full RGB, not a 256-color approximation.
- Text styles. Bold, italic, underline, strikethrough, and clickable hyperlinks (OSC 8).
- Double-width CJK. Wide characters take two cells and stay aligned.
- Color emoji. Including ZWJ sequences (👨👩👧👦) and flags (🇰🇷).
- Ligatures. Programming ligatures like
=>rendering as ⇒, via CoreText shaping. - Font fallback. Symbols your primary font lacks — like ④ — still render through a fallback cascade instead of showing tofu boxes.
How it works
CoreText shapes each run of text into glyphs; the glyphs are cached in a
persistent GPU atlas and composited by Metal shaders onto a CAMetalLayer. Text
is normalized (NFC) and East-Asian-Wide width is computed so the grid stays
exact. Because glyph rasterization is cached and compositing happens on the GPU,
redraw cost stays low even under heavy output — which is what makes the
smooth scrolling possible.
Built for fast output streams
If you run CLI AI coding agents that stream large bursts of text, the GPU renderer keeps frames steady where a CPU-bound terminal would stutter. Combined with rock-solid split panes, that’s why Damson holds up when you keep several agents running at once.
Design notes live in the repository’s
docs/METAL-RENDERER-PLAN.md.