mirror of
https://github.com/multica-ai/multica.git
synced 2026-07-06 05:49:12 +02:00
Full-width Chinese punctuation (e.g. ,) was rendering at Latin-font metrics, making it look half-width in the editor. Root cause: Geist is Latin-only, and neither web (next/font) nor desktop (@fontsource) declared any CJK fallback, so CJK chars inherited Geist's em-box width through Chromium's per-character fallback. - Web (apps/web/app/layout.tsx): Geist → Inter via next/font/google, with explicit fallback array: system fonts → PingFang SC (macOS) → Microsoft YaHei (Windows) → Noto Sans CJK SC (Linux) → sans-serif. - Desktop: removed @fontsource/geist-sans, added @fontsource-variable/inter (single variable-weight file replaces 4 static weights). Updated --font-sans in globals.css to match web's fallback chain. - Geist Mono kept for code blocks; mono chain has no CJK fallback by design (CJK is non-aligned in mono grids, listing CJK fonts would falsely signal alignment guarantees). Added Consolas to web mono for Windows symmetry with desktop. - Cross-reference sync comments in both layout.tsx and globals.css: CJK tail must stay in sync; Inter primary differs by design (next/font injects `__Inter_xxx` with adjustFontFallback metric override; fontsource uses raw "Inter Variable"). Currently covers English + Simplified Chinese. When ja/ko i18n lands, extend fallback tails with Hiragino Kaku Gothic ProN / Yu Gothic / Apple SD Gothic Neo / Malgun Gothic. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>