font.ttf 3.000: all five cabinet atlases (adds Simplified Chinese and Korean) #32

Merged
Yonokid merged 6 commits from GanYiZhong/YataiDONNijiiro:font-all-atlases into main 2026-09-15 17:46:19 +02:00
Collaborator

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

`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)
GanYiZhong added 1 commit 2026-09-13 23:37:29 +02:00
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>
GanYiZhong added 1 commit 2026-09-13 23:56:52 +02:00
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>
Author
Collaborator

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.
GanYiZhong added 1 commit 2026-09-14 00:17:26 +02:00
font_zh.ttf becomes font_cn.ttf (cn, tw, jp, en, kr) and gains siblings built the
same way: font_tw (tw, jp, cn, en, kr), font_en (en, jp, tw, cn, kr), font_kr
(kr, jp, en, tw, cn). font.ttf (jp first) is unchanged and stays the fallback.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Author
Collaborator

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.
GanYiZhong added 1 commit 2026-09-14 08:24:26 +02:00
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>
GanYiZhong added 1 commit 2026-09-14 09:45:57 +02:00
Yonokid added 1 commit 2026-09-15 17:45:03 +02:00
Yonokid merged commit 54afedc34b into main 2026-09-15 17:46:19 +02:00
Sign in to join this conversation.
No Reviewers
No labels
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Yonokid/YataiDONNijiiro#32