mirror of
https://github.com/storytold/pdfcraft.git
synced 2026-10-31 07:39:08 +00:00
PdfCraft's bootstrap renderer draws byte-aligned Group 3 whose fill ends each end-of-line code on a byte (as TIFF writes it) as other rows than decode_ccitt reads (black box, at every /K, with /EndOfLine or not: mostly the first row, then blank). Redaction cleared pixels in the picture decode_ccitt reads, so a mark over what PdfCraft showed needn't cover what was cleared, and content shown blank stayed in the copy. Such an image (/K 0 or more, /EncodedByteAlign) is now removed whole, as every CCITT image was before this PR; Group 3 off bytes and Group 4 are still cleared. The image's parameters come from Document::fax_params, the reading of a fax image's /DecodeParms entry that decoded_image already did, now on its own (it was to come with #4404, which uses it too). The redaction README, the module doc, the redaction and core.image-filters notes and the spec parity table's status line and revision row say so, and the core.image-filters note now records the renderer's misdrawing. group_3_on_bytes_is_removed_whole_and_other_fax_images_cleared: a white 16 × 2 picture, checked to decode as such, is removed whole on bytes (no codes; codes at /K 0; at /K 1 with /EncodedByteAlign by reference) and cleared off bytes and as Group 4 on bytes. It fails without the guard; cargo-mutants catches every viable mutant of it. From reviews with the pdfcraft-review skill. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01P6yUtvWGPsJpMLyh6pxSXG