mirror of
https://github.com/storytold/wordcraft.git
synced 2026-10-29 04:47:10 -06:00
- Create the East Asian decoder without BOM handling: the code page is named by \ansicpg, \cpg or \fcharset, so a GBK/Big5/UHC run that starts EF BB BF is text, not a UTF-8 BOM that switches the rest of the document to UTF-8 (#2549 review). - Decode raw 8-bit runs through the streaming decoder in one pass instead of one byte at a time: ASCII body text in a Japanese/Chinese/Korean document and picture hex skip the per-byte path, and a single \'hh byte decodes into a stack buffer (no String allocation per byte). Picture hex no longer goes through the code page decoder at all. - Decode loop: decode_to_string writes only into spare capacity, so drain the stack buffer and keep decoding until the run is consumed (the old one-call version could truncate a run longer than the reserved capacity). - docs/file-format-parity.md: keep main's format rows (the PR had replaced them with stale copies that lost ODT keep-with-next #2813, TXT #2853 and the HTML blockquote and MathML details), merge the East Asian sentence into the one RTF row — which also removes the duplicate RTF row main carries and restores "export writes every section" and the tracked paragraph-mark wording — restore the rolled-back header change list, and date the new revision row 2026-10-21. Validation: cargo fmt --all -- --check; cargo clippy -p wordcraft-formats -p wordcraft-doc --all-targets -- -D warnings; cargo test -p wordcraft-formats -p wordcraft-doc → 200 + 174 passed, 0 failed (doctests 0).