mirror of
https://github.com/storytold/wordcraft.git
synced 2026-11-08 19:51:32 +00:00
* ODT gap 19: a file's font declarations are kept WordCraft declared each font itself, guessing its kind, in place of the file's declaration. A reader without the font picks its substitute by that, so on a computer without it a document came back in LibreOffice from a save with no edits reflowed, 70 pages instead of 83. A font the file declares stays declared as the file does. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * ODT: font declarations in single quotes and their name spaces are kept (gap 19) Single-quoted names weren't recognised, so the declaration wasn't replaced and could be added twice. A prefix only the declarations' container declared was left unbound in the saved part. Found by CodeRabbit on this PR. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * ODT: a font name spelled another way in XML is the same declaration (gap 19) Declarations were matched on their raw text, so O'Brien and O'Brien counted as two fonts and one was declared twice. They are now compared as they read. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * ODT: a face named other than its family gives that family the file's declaration (gap 19) A face named F1 of the family Mystery: text written from the model names Mystery, and WordCraft's declaration of it kept a guess at the font's kind. It now says what the file's says. Faces are matched in one walk, and namespace prefixes are tracked in a set, as a hostile file with many on its top-level elements could stall import. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * ODT: font faces are found by parsing and renamed at their own attribute (gap 19) The walk matched text, so a kept script reading like a declaration could be rewritten. It now takes the declarations the parser finds. A rename uses the position of style:name itself, not a search that another attribute with that in its name could mislead. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: Martin Ball <martin.ball@ucscaregroup.co.uk>