mirror of
https://github.com/storytold/craft-libs.git
synced 2026-11-14 06:22:24 +00:00
* hayro-syntax: port PdfCraft's syntax fixes (ledger 17, 19, 20, 23, 4-ext, #3565, base_dimensions floor) From PdfCraft a2ec27b47: - (17), (19): a CCITT image with /Rows 0, or with fewer /Rows than its /Height, decodes to the image height instead of zero or /Rows rows. - (20): spaces or tabs between the stream keyword and its line break are skipped, so the stream data starts after the line break. - (4) extension: an inline image's EI followed by a delimiter (EI%, EI[) ends the image; only a regular character makes it part of a longer token. - (23): bytes above 0x7F between two EI candidates don't reject the first; the operator look-ahead decides. - #3565: a doubled sign (--280, +-280) is read and skipped as one number. - Page::base_dimensions keeps a one-point floor after /UserUnit instead of one raw unit. Also a local bound: a CCITT /Columns past u32::MAX is refused instead of wrapping to a small width that passed ccitt_size_ok. Tests: content and number unit tests from PdfCraft, a stream unit test, a synthetic page test for the floor, a CCITT /Columns unit test, and the two CCITT raster tests in crates/pdf/tests/upstream_raster.rs. * hayro-interpret: port PdfCraft's text fixes (ledger 30, 44, P2, P6, P8, 26-ext) From PdfCraft a2ec27b47: - (30): WinAnsi 0xA0 and 0xAD and MacRoman 0xCA read as an ordinary space and hyphen (Annex D.2 gives them those glyph names) unless /Differences names nbspace or sfthyphen. - (44): a /ToUnicode /Identity-H or /Identity-V name reads two-byte codes as their Unicode values; controls and lone surrogates give no text. - P6: glyph names outside the Adobe Glyph List (f_i, hyphen.case, uniXXXXXXXX) read by the glyph list specification's full mapping; names that only number a glyph (C39, c251) give no text. - P8: a substitute font whose charmap lacks a spacing character (U+2002 and similar) draws its ordinary space instead of .notdef. - P2: a Type 3 glyph's /FontBBox is transformed to device space before it bounds the glyph's clip and shadings, so shaded glyphs draw at every position. - (26) extension: comma-below letters (s, t, k, l, n, r, G with comma) in the standard-font stand-ins are the base letter with the font's comma, scaled and placed under the baseline. Tests: crates/pdf/tests/upstream_text.rs for (30), (44) and P6; the Type 3 shading and comma-below raster tests in crates/pdf/tests/upstream_raster.rs. P8's PdfCraft test needs a Japanese substitute font and is not ported. * hayro-syntax: refresh SOURCE.json local hashes for Cargo.lock, ascii_85.rs and filter/mod.rs They changed in #241 and #253 without their local sha256 values.