mirror of
https://github.com/storytold/pdfcraft.git
synced 2026-10-30 04:58:34 -06:00
Each edit that draws Japanese or Hebrew characters the page's fonts lack generates new Type 3 fonts with the outlines of every character it draws. Editing the paragraph again generated new ones and left the old ones in the page's resources, so every edit added a set of glyph outlines to the file. After replace_line and rewrite_block, the page's generated fallback fonts (Type 3, /Name /PCJapanese or /PCHebrew) that no Tf selects any more are removed from its own font dictionary. The content read for this is the page's streams, every form XObject it can reach that has no resources of its own (those use the page's, ISO 32000-1 7.8.3), and the glyph procedures of Type 3 fonts without resources. If any of those can't be decoded strictly, nothing is removed. Registered fonts (PCFull) and the file's own fonts are never touched. Tests: a page with an unused generated font, one its content selects, one only a resource-less form selects and a file's Type 3 font that only shares the name prefix keeps all but the first after a rewrite, and keeps everything when such a form can't be read. Rewriting Japanese text twice (with craft-fonts) leaves only the second rewrite's fonts. The first test fails without this change. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>