Emoji Limitations
Technical details on emoji rendering support and limitations.
Last updated: March 11, 2026
Emoji Rendering Limitations
Summary
Full-color emoji rendering is not supported in zurm due to Ebitengine limitations. However, monochrome emoji outlines are now available via the font fallback chain using Noto Emoji.
What Works
- Monochrome emoji via
NotoEmoji-Regular.ttfas a fallback font — renders black-and-white outlines - CJK characters via Noto Sans Mono CJK fallback
- Nerd Font symbols (powerline, devicons) via Symbols Nerd Font fallback
- Multiple fallbacks can be chained in config.toml
[font] fallbacks
What Doesn’t Work
- Color emoji (multi-colored glyphs) — Ebitengine cannot render color fonts
- Apple Color Emoji — TrueType Collection format not supported by Go font libraries
Technical Background
- Ebiten Limitation: The Ebiten game engine doesn’t support color fonts (Issue #2649)
- Go Font Library: The
golang.org/x/image/fontpackage returnsErrColoredGlyphwhen encountering color glyphs - No Native Bridge: Pure Go programs cannot easily access platform-native text rendering (CoreText on macOS, DirectWrite on Windows)
Setup
Add fallback fonts to ~/.config/zurm/config.toml:
[font]
fallbacks = [
"~/Library/Fonts/NotoSansMonoCJKsc-Regular.otf", # CJK
"~/Library/Fonts/NotoEmoji-Regular.ttf", # monochrome emoji
"~/Library/Fonts/SymbolsNerdFontMono-Regular.ttf", # powerline + devicons
]
Download commands are in the config template comments.