feat(web): lazy per-script font loading for international CAD text
The web build has no system-font access, so CAD text in non-Latin scripts (Cyrillic, Greek, CJK, …) rendered as nothing — build_fallback was a hard None on wasm (#141). Instead, ship per-script Noto subsets under web/fonts (one alphabet per file, SIL OFL 1.1) and fetch them lazily over HTTP the first time a drawing uses that script, then outline glyphs with ttf-parser. - web_font: Script enum + script_of (char → script font), a per-script store with lazy fetch, and a pending queue drained by the app loop. - CJK is split by language (chinese/japanese/korean). Han ideographs share code points but differ by language, so the shared block is routed by the document's $DWGCODEPAGE (932→JP, 949→KR, GB/936→CN); kana is always Japanese, Hangul always Korean. Re-tessellates when the language changes. - build_fallback (wasm) outlines from the fetched subset; clear_fallback_cache lets glyphs that missed while a font was in flight reappear on load. - PollWebFonts subscription (web only) + WebFontLoaded message drive fetches. - Trunk copy-dir serves web/fonts; nothing is bundled into the native binary (desktop keeps using system fonts). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
d36cc9786f
commit
54106ca9b0
21 changed files with 453 additions and 5 deletions
|
|
@ -42,6 +42,9 @@
|
|||
<!-- Trunk builds the wasm32 binary without the `solid3d` feature (no 3-D
|
||||
solid kernel / vtkio C deps on the web). See issue #45. -->
|
||||
<link data-trunk rel="rust" data-bin="OpenCADStudio" data-cargo-no-default-features />
|
||||
<!-- Per-script Noto subsets, fetched lazily at runtime (one alphabet per
|
||||
file) so CAD text renders non-Latin scripts on the web. (#141) -->
|
||||
<link data-trunk rel="copy-dir" href="web/fonts" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="loading">
|
||||
|
|
|
|||
Loading…
Reference in a new issue