Characters the primary font lacks try a fallback chain by language
before the language-blind search: Japanese (the craft-fonts Japanese
faces first, Mincho first), Simplified Chinese (also plain Chinese),
Traditional Chinese and Korean each list their macOS, Windows and Linux
system families. Hangul, kana and Bopomofo pick their language's chain
whatever the character language; ideographs and CJK punctuation follow
it, and keep today's fallback without a CJK language. Chain families
load from the system font catalog the first time they are needed.
designcraft_fonts::testing (feature `testing`) builds synthetic fonts
with a given family name and coverage for tests.
Port the CJK1 and AR1 changes from 3ecdb78 and de83cdc onto current main. Resolve translation and font-stack conflicts by retaining main localization and craft-fonts integration while preserving all typesetting code, tests, and documentation.
Validation: all six CI gates passed, including 616 tests and WASM checks.
- hyphen: bundled en-US dictionary from the public-domain Moby Hyphenator II
list (Grady Ward, Gutenberg #3204), front-coded + deflated (433 KB), with
case/apostrophe/punctuation/compound handling and inflection inheritance;
our own Liang patterns (19.5k, 129 KB) trained by a patgen-style trainer
(hyphen::patgen, examples/hyphgen.rs) for unknown words; heuristic last.
Discretionary hyphens replace automatic points.
- breaker: prioritised word/letter/glyph-scaling glue in Knuth-Plass and
layout; uncapped badness; hyphen limit as a hard constraint (hyphen-count
states); hyphenation zone for ragged text (both composers); ragged
hyphenation measured correctly; optical margin alignment; balance ragged
lines; Knuth's node pruning.
- compose: Keep Options (keep with next, keep all lines, keep first/last)
via paragraph snapshots; desired spacing applied to all alignments;
justified last lines shrink instead of overflowing; word shaping and
hyphenation caches (300k-char story: ~40 ms warm, ~60 ms cold).
- tests: golden corpus, perf (ignored), keeps, balance, optical, zone,
limit, letter/glyph scaling, discretionary hyphens.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>