mirror of
https://github.com/storytold/pdfcraft.git
synced 2026-11-09 12:32:52 +00:00
Change: - Leave a form found to be artwork, or refused for a reason in the form itself, out of later preparation passes, so a page with many logos or unsupported groups no longer reaches the 64-placement limit and prepares nothing. ungroup_ops now marks each refusal as intrinsic or contextual; contextual ones (translucency, the resources it would merge into, pattern placement, the decode budget) are re-evaluated where the form appears, so a form refused in one place is still prepared where a parent draws it. - Refuse a page-level Do with an operand too many for that placement only: the form found by its first operand may not be the one drawn. Check a form's own operand counts before the nested walk, as an intrinsic refusal. - Use the Windows PUA alternates only when every kept alternate whose code the PDF's map names a Thai character names that alternate's base character, so alternates in another order that the map reveals are refused. Chores: - Say that the font program confirms each recovered glyph's advance class, not its identity, and document the alternate check. Validation: with and without craft-fonts, fonts 105 (+3 build-input), edit 468, 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.