Repository navigation
⚡️ Feature Request: Add CJK font fallback and a font customization option (family / size) #4604
Closed
seanlees
started this conversation in
Feature requests
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Feature Description
Add CJK-capable font fallback, and expose font settings (family / size) in the UI.
Arcane is fully translated into Chinese, but the bundled fonts do not cover
Han characters, so Chinese text renders with the OS fallback font. The goal
is (1) readable CJK text out of the box, and (2) a way for users to adjust
typography to their own environment.
Problem It Solves
1. CJK text falls back to the OS font
In
_app/immutable/assets/0.*.css, Arcane defines only two font families:Montserrat VariableGeist Mono VariableTheir
unicode-rangecovers Latin, Cyrillic, Vietnamese and some symbols.Searching the entire stylesheet for
U+4E00(start of the CJK block)returns 0 matches, so no bundled font can render Han characters.
As a consequence, Chinese text is rendered by the system fallback font
(e.g. Microsoft YaHei on Windows), which only ships Regular and Bold:
text-xs,text-sm)This is easy to observe on the login page with
zh-CN.2. No way to adjust typography
Users cannot change the interface font family or base font size. This
matters beyond CJK:
Proposed Solution
Ship a subsetted CJK font (e.g. Noto Sans SC split by
unicode-range)and append it to the font stack, so CJK glyphs resolve to a real font
instead of an OS fallback.
Add a "Typography" section to settings exposing:
These map cleanly onto the CSS variables already present in the
stylesheet:
--default-font-familyand--default-mono-font-family.Values could be applied as inline CSS variables on
:root, so norebuild is needed and users can pick any locally installed font.
Alternatives Considered
Do nothing. Users on Linux/Windows keep a blurred CJK UI; the
translation is complete but visually inconsistent.
Inject CSS via a reverse proxy (
sub_filter). Works, but requiresrunning an extra proxy in front of the container. It is fragile:
sub_filterneedsAccept-Encodingdisabled, and the injected rulesdepend on internal class names that change between releases.
Browser extension (e.g. Stylus). Simple and effective, but per-device,
per-browser, and unsuitable for shared/team deployments.
A full custom font loader in the UI. Considered, but heavier than
needed — the two points above cover the actual use cases.
Additional Context
ghcr.io/getarcaneapp/manager:latest)zh-CNsofter/blurrier than the surrounding Latin text, most obvious in the
subtitle under "欢迎回来" and on the login button label.
Would you be willing to work on this feature?
All reactions