Context
xdg-config/ghostty/config currently pins the CJK fallback to BIZ UDGothic Bold:
font-family = "Monaco"
font-family = "BIZ UDGothic Bold"
This resolves the previously observed instability where CJK codepoints (notably の) rendered inconsistently after display switches — a symptom of ghostty's runtime font discovery on macOS 26.5. Reference: ghostty-org/ghostty#12916, #8712, #707.
Finding
Bold ASCII characters (SGR 1, terminal emphasis) are now drawn by BIZ UDGothic Bold's Latin glyphs, not by Monaco.
Inferred mechanism (not verified against ghostty source):
- Monaco has only a Regular face.
system_profiler SPFontsDataType confirms Style: Regular is the only variant in the Monaco family.
- When ghostty needs a Bold ASCII glyph, its per-codepoint face selection walks the fallback chain for a face that covers the codepoint at the requested Bold weight.
- Monaco Regular has no Bold face. BIZ UDGothic Bold has Bold weight plus full ASCII coverage (verified via CoreText
CTFontCopyCharacterSet). Ghostty picks it for Bold ASCII.
- This matches the pre-pin "original" appearance — ghostty's cold discovery was picking BIZ UDGothic Bold all along, so Bold ASCII was already routed through it. The explicit pin just made it stable.
Proposal
Route Bold ASCII to a Monaco-lineage successor so the Latin personality stays consistent across weights.
font-family = "Monaco"
font-family-bold = "Menlo"
font-family = "BIZ UDGothic Bold"
Rationale for Menlo:
- Menlo is the de-facto Monaco successor on macOS (Bitstream Vera Sans Mono derivative), letterform DNA is close
- Preinstalled with Regular / Bold / Italic / Bold Italic
- Ghostty has explicit
font-family-bold / font-family-italic / font-family-bold-italic style knobs (ghostty +show-config --default --docs)
SF Mono is out of scope: it is not installed by default on macOS (bundled inside Terminal.app, requires manual extraction).
Follow-ups to verify before implementing
- Confirm
font-family-bold = "Menlo" actually redirects Bold ASCII rendering with a multi-line font-family cascade (ghostty style override interaction against fallback chain is not documented in a single spot; needs empirical test)
- Confirm Bold CJK stays on BIZ UDGothic Bold (
ghostty +show-face --string="のA" --style=bold)
- Consider
font-family-italic = "Menlo" for the same personality-continuity reason
Notes learned during investigation
ghostty +show-face reports only the family name, not the specific face/weight. Two families with the same name but different weights are indistinguishable in its output.
ghostty +list-fonts shows only monospace-eligible fonts; proportional CJK families (Hiragino Sans, BIZ UDGothic) are hidden from that listing but still available for font-family.
- Morisawa Fonts image search (fontsjourney.morisawafonts.com, free without subscription) matched the rendered CJK against TBUD Gothic Std B / TBUD 丸ゴシック Std B. TBUD Gothic is what BIZ UDGothic is the OFL public release of (
designed by Type Bank Co. and Morisawa Inc., per Google Fonts specimen).
- The CoreText default cascade from Monaco returns
Hiragino Sans W3 as the first CJK face, not BIZ UDGothic. Ghostty's own discovery differs from CoreText's default cascade.
Context
xdg-config/ghostty/configcurrently pins the CJK fallback to BIZ UDGothic Bold:This resolves the previously observed instability where CJK codepoints (notably
の) rendered inconsistently after display switches — a symptom of ghostty's runtime font discovery on macOS 26.5. Reference: ghostty-org/ghostty#12916, #8712, #707.Finding
Bold ASCII characters (SGR 1, terminal emphasis) are now drawn by BIZ UDGothic Bold's Latin glyphs, not by Monaco.
Inferred mechanism (not verified against ghostty source):
system_profiler SPFontsDataTypeconfirmsStyle: Regularis the only variant in the Monaco family.CTFontCopyCharacterSet). Ghostty picks it for Bold ASCII.Proposal
Route Bold ASCII to a Monaco-lineage successor so the Latin personality stays consistent across weights.
Rationale for Menlo:
font-family-bold/font-family-italic/font-family-bold-italicstyle knobs (ghostty +show-config --default --docs)SF Mono is out of scope: it is not installed by default on macOS (bundled inside Terminal.app, requires manual extraction).
Follow-ups to verify before implementing
font-family-bold = "Menlo"actually redirects Bold ASCII rendering with a multi-linefont-familycascade (ghostty style override interaction against fallback chain is not documented in a single spot; needs empirical test)ghostty +show-face --string="のA" --style=bold)font-family-italic = "Menlo"for the same personality-continuity reasonNotes learned during investigation
ghostty +show-facereports only the family name, not the specific face/weight. Two families with the same name but different weights are indistinguishable in its output.ghostty +list-fontsshows only monospace-eligible fonts; proportional CJK families (Hiragino Sans, BIZ UDGothic) are hidden from that listing but still available forfont-family.designed by Type Bank Co. and Morisawa Inc., per Google Fonts specimen).Hiragino Sans W3as the first CJK face, not BIZ UDGothic. Ghostty's own discovery differs from CoreText's default cascade.