mirror of
https://github.com/storytold/pdfcraft.git
synced 2026-11-09 04:22:20 +00:00
Add: - Report text grouped more than eight levels deep instead of leaving it silently grouped, and refuse forms whose resource-naming operators carry surplus operands, which would otherwise lose nested artwork when inlined. - Return the applied preparation's own counts from Session::prepare_text, so text_prepare no longer reports a separate preview's. - Shape a THSarabunPSK program that has its own Thai mark positioning by that layout, in its own codes. A span the subsets can't show in place is shaped whole, Latin rows included, by a complete program of the same face and style, such as a CFF face from Load font. Change: - Expand only forms that show text, directly or through nested forms; image- and vector-only forms stay grouped and uncounted. Match a Do's raw resource name bytes, and refuse RGB-blended groups on pages naming no blending space. - Check the recovered THSarabunPSK map and the Windows PUA alternates glyph by glyph against the subset's advances, leave dropped glyphs unmapped, and insert the repair after the last endcmap. - Shape a Thai run split across same-face subsets cluster by cluster and skip subset glyphs that are empty. Take the legacy path only for programs in the legacy glyph order, needing only the glyphs the new text uses. - Require GPOS mark/mkmk in the script and language system HarfRust selects. - Match same-face candidates by weight and slant from the name, descriptor weight or a non-zero ItalicAngle; the Italic flag alone is ignored, as exporters set it on upright faces. Never complete bold or italic text with the Regular bundled Thai face. - Name the missing character, or the unavailable builtin:thai choice, in errors. Chores: - Document text_prepare's fields, builtin:thai, the app's refusal reporting limits and the new routing; extend the text-edit parity evidence. Tests that need craft-fonts now say they skipped instead of returning silently. Validation: with and without craft-fonts, fonts 105 (+3 build-input), edit 465, engine 482 (+28 integration) and automation 50 + 352 passed; editor flows 248 passed. Formatting, strict Clippy, layers, assets and parity passed; the wasm check was not run locally. Each new regression failed with its fix reverted. Real-PDF edits on Royal Gazette 26288 kept their source fonts.