Graphics/font.ttf was traced from the cabinet's jp_64 + tw_64 glyph atlases only, so every Simplified-Chinese-only character (节, 戏, 开, 选, 爱, 难 …) and all Hangul rendered as ?.
This rebuilds it from all five _64 atlases (jp, tw, cn, kr, en, first atlas with ink wins):
same face, unitsPerEm, advances, ascender/descender and baseline as 2.000 — Japanese/English text is unchanged
coverage of each atlas repertoire: jp 7521/7532, tw 17651/17678, cn 7589/7608, kr 8070/8407, en 268/295 (the rest are blank cells in the atlases)
23.9 MB (was 16.8 MB)
tools/font/build_font.py is the builder (potrace → cu2qu, metrics derived per atlas) and tools/font/FONT.md notes how the cabinet picks its atlases (language family + per-record size/weight bucket; _64 is the brush display face, 30/32 the rounded gothic). Drop the tools/ folder if you would rather not carry it in the skin.
`Graphics/font.ttf` was traced from the cabinet's `jp_64` + `tw_64` glyph atlases only, so every Simplified-Chinese-only character (节, 戏, 开, 选, 爱, 难 …) and all Hangul rendered as `?`.
This rebuilds it from all five `_64` atlases (`jp, tw, cn, kr, en`, first atlas with ink wins):
- 22 382 glyphs (was 17 729): +1 956 Simplified Chinese, +2 737 Hangul, +55 Traditional
- same face, `unitsPerEm`, advances, ascender/descender and baseline as 2.000 — Japanese/English text is unchanged
- coverage of each atlas repertoire: jp 7521/7532, tw 17651/17678, cn 7589/7608, kr 8070/8407, en 268/295 (the rest are blank cells in the atlases)
- 23.9 MB (was 16.8 MB)
`tools/font/build_font.py` is the builder (potrace → cu2qu, metrics derived per atlas) and `tools/font/FONT.md` notes how the cabinet picks its atlases (language family + per-record size/weight bucket; `_64` is the brush display face, `30/32` the rounded gothic). Drop the `tools/` folder if you would rather not carry it in the skin.
checksums.sha256 not included.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Rebuilt from the cabinet's five _64 glyph atlases (jp, tw, cn, kr, en) instead of
jp+tw only: 22 382 glyphs, +1 956 Simplified Chinese and +2 737 Hangul, so zh-CN
and ko text no longer falls back to '?'. Same face, metrics and baseline as 2.000.
tools/font/build_font.py + FONT.md document the cabinet's font selection and the build.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
With the interface language set to Simplified Chinese the engine now loads
Graphics/font_zh.ttf, built with the cn atlas first (7 588 glyphs from cn,
11 966 from tw, 8 from jp) so shared characters take the Simplified face too,
as the cabinet does with its per-language atlas families.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Second commit: Graphics/font_zh.ttf, the same build with the cn atlas first (cn, tw, jp, kr, en: 7 588 glyphs from cn, 11 966 from tw, 8 from jp). With the interface language set to Simplified Chinese every character the cn family has is drawn in that face and only what it lacks comes from tw/jp, as the cabinet does with its per-language atlas families. Needs the engine side (Yonokid/YataiDON PR: load Graphics/font_<language>.ttf when present, else font.ttf); without it the file is simply unused.
Second commit: `Graphics/font_zh.ttf`, the same build with the `cn` atlas first (`cn, tw, jp, kr, en`: 7 588 glyphs from cn, 11 966 from tw, 8 from jp). With the interface language set to Simplified Chinese every character the cn family has is drawn in that face and only what it lacks comes from tw/jp, as the cabinet does with its per-language atlas families. Needs the engine side (Yonokid/YataiDON PR: load `Graphics/font_<language>.ttf` when present, else `font.ttf`); without it the file is simply unused.
Third commit: one font per cabinet family, named after the atlas family. font_zh.ttf is now font_cn.ttf (cn, tw, jp, en, kr), plus font_tw.ttf (tw, jp, cn, en, kr), font_en.ttf (en, jp, tw, cn, kr) and font_kr.ttf (kr, jp, en, tw, cn). font.ttf (jp first) is untouched and remains the fallback. The engine PR maps the interface language to the family (zh→cn, ko→kr, ja→jp) when no font_<language>.ttf exists. ~24 MB each.
Third commit: one font per cabinet family, named after the atlas family. `font_zh.ttf` is now `font_cn.ttf` (cn, tw, jp, en, kr), plus `font_tw.ttf` (tw, jp, cn, en, kr), `font_en.ttf` (en, jp, tw, cn, kr) and `font_kr.ttf` (kr, jp, en, tw, cn). `font.ttf` (jp first) is untouched and remains the fallback. The engine PR maps the interface language to the family (zh→cn, ko→kr, ja→jp) when no `font_<language>.ttf` exists. ~24 MB each.
font_cn / font_tw / font_kr are now jp first (kana, Latin, digits and every
kanji the jp atlas has stay in the brush face); cn / tw / kr only supply
the characters jp lacks. build_font.py gains --han-order for a separate
ideograph priority.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Graphics/font.ttfwas traced from the cabinet'sjp_64+tw_64glyph atlases only, so every Simplified-Chinese-only character (节, 戏, 开, 选, 爱, 难 …) and all Hangul rendered as?.This rebuilds it from all five
_64atlases (jp, tw, cn, kr, en, first atlas with ink wins):unitsPerEm, advances, ascender/descender and baseline as 2.000 — Japanese/English text is unchangedtools/font/build_font.pyis the builder (potrace → cu2qu, metrics derived per atlas) andtools/font/FONT.mdnotes how the cabinet picks its atlases (language family + per-record size/weight bucket;_64is the brush display face,30/32the rounded gothic). Drop thetools/folder if you would rather not carry it in the skin.checksums.sha256 not included.
🤖 Generated with Claude Code
Second commit:
Graphics/font_zh.ttf, the same build with thecnatlas first (cn, tw, jp, kr, en: 7 588 glyphs from cn, 11 966 from tw, 8 from jp). With the interface language set to Simplified Chinese every character the cn family has is drawn in that face and only what it lacks comes from tw/jp, as the cabinet does with its per-language atlas families. Needs the engine side (Yonokid/YataiDON PR: loadGraphics/font_<language>.ttfwhen present, elsefont.ttf); without it the file is simply unused.Third commit: one font per cabinet family, named after the atlas family.
font_zh.ttfis nowfont_cn.ttf(cn, tw, jp, en, kr), plusfont_tw.ttf(tw, jp, cn, en, kr),font_en.ttf(en, jp, tw, cn, kr) andfont_kr.ttf(kr, jp, en, tw, cn).font.ttf(jp first) is untouched and remains the fallback. The engine PR maps the interface language to the family (zh→cn, ko→kr, ja→jp) when nofont_<language>.ttfexists. ~24 MB each.