From a33e06cafb5d4183e69dd068a69003d3018cb846 Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Tue, 26 May 2026 22:36:46 +0200 Subject: [PATCH] Use a black backdrop for Luminosity SMasks when /BC is missing It fixes #21346. --- src/core/evaluator.js | 5 +++++ test/pdfs/.gitignore | 1 + test/pdfs/issue21346.pdf | Bin 0 -> 5173 bytes test/test_manifest.json | 7 +++++++ 4 files changed, 13 insertions(+) create mode 100644 test/pdfs/issue21346.pdf diff --git a/src/core/evaluator.js b/src/core/evaluator.js index 463b47942..0bcdab80b 100644 --- a/src/core/evaluator.js +++ b/src/core/evaluator.js @@ -544,6 +544,11 @@ class PartialEvaluator { if (smask?.backdrop) { colorSpace ||= ColorSpaceUtils.rgb; smask.backdrop = colorSpace.getRgbHex(smask.backdrop, 0); + } else if (smask?.subtype === "Luminosity") { + // Per PDF spec 11.6.5.2: when /BC is missing the backdrop is the + // initial value of the group colour space, which is black for all + // standard colour spaces. + smask.backdrop = "#000000"; } newOpList = new CheckedOperatorList(); diff --git a/test/pdfs/.gitignore b/test/pdfs/.gitignore index 3da556ba1..f75c1c3ce 100644 --- a/test/pdfs/.gitignore +++ b/test/pdfs/.gitignore @@ -925,3 +925,4 @@ !issue18548_reduced.pdf !issue_cff_unsigned_bbox.pdf !90ms_rksj_h_sample.pdf +!issue21346.pdf diff --git a/test/pdfs/issue21346.pdf b/test/pdfs/issue21346.pdf new file mode 100644 index 0000000000000000000000000000000000000000..a9e774ed8978a85d450d35c0dd04a90090183d5b GIT binary patch literal 5173 zcmd5=3v?9a6^4WWSqbtyV2X5H4J4$=%r-;$(paQGcDGtH|=wUe7iHOyz z02rtzFm0Gg5sPwGF+r(=1FIt=8)mvGC53sl?DJJD=%ge8?XsY?P-1KJWuQ zIxrNh+K{IqZ83%ry5@$z&t za9b?%LM{;U!r{S`yvA-CC0gDzZnIiTD3NhvM&$gwNa76xIZW{!NFchON`~`DO_)Y+ zMAoa6vZ|#x4}(%d%C3~LUWpMfyvz&rQOeM~n?X*AlE6?tRj@Pg_|AI{IwqD?ui8C( z%gDtqj4JIMSNg*ln-V$dvL*5?IX@Smr8X^`QS+REAM}5?w#OOtGjTe#DMI+}8x znljk>fTiK7Z+2W-`R0}LA7AeN)z-hh@{14uQGEH6#pk}Y9^RUpesyWhcSQ<}&64_r96Yv>onzn|=@8+>Y9O^2=N#`~)>I>%%^+2ifs zH&Z{SZpoJGneO$w`{yqGIOpo|UH#^>-471FHumc3h9@3vZ%)1Q=Tlyte_+!s+CE}u zU>~wvSQpL%|4FA&U8cAZtmT5@ap(pf%?@&Fn?aapI zYgcX`d9UO6-lHKX3i9JgZ6_>o`j4yvE;y5I5n$>SK^eaEp6$_W*A zbuHn|J$~!HcYpI{t6|^oCY-u^``N8;rETuMyJmIT^f~!o&i_;@oA}y<3);$~LuaNQ zuGo{)n*LelmA1?dBf%URYja%Nw4wR)$1b^6;#u`?`v-MoZv4P(Jk#^=^*yiVX6^5D zuh=>K#IRNB;bRZnnDy+-PoQ1fW#i;s`%aVheRA+k>z}`vz2LbKXMW&(`RcQqQ|9$%Jh$QCjFjbk z&%SFJ?_Zq1Gf9$2A}&h`%+3r-vz!tXI?54EVMM-0AA1DJWY`=h5>}5xTS6Tm2smZ)LI1IazDp1;fUK4G@&fb< znh6U7ktQ&NLI_b2tihN32QMk%g9uazOhd^3WpJ4#@PTLtQg$KJ6bld+mq2l%AN36y zMFuR`Flc2cL7*7^MSw_us3(0XF(U26HyhMrUw?OQvv#?5$cjg%mG=#M{=$2oPySKy zV}rN!t~a!eUwG}vnLqsO-p;ow){Zu0cieKg^~QR0f3_2!?Zk~kPODDGz z4*y%1RYL}i9F@|ZEQH~4BXJA`fB!AmxLHLaXpN~zu#!Az@{pDoG&|#FsR+c724lWf zSD@2lk(CTL$|$JJmLdlIEj*ISEm)octvn~eXeNTB><{E5+}34E6vD$rMHV1E$?z3q zBj|MM*8K8g&K*17t96{{3tW?Ghzl>i;Yy`+s?x8&jW zWfhh>tPWeZb-Q+uyDn={vYf_`e^wabBwoO>;Yf%QG&@q4ugO8XvGZ4t1;GHq^{H33A^9QG_mDv0^@9}a?x$gw8^cWZYd0!gFe3x zv|~Y^mlMswA~gkkC&9n4=RSXgn-lZpUF6fe4-Zm);3VQW?e_2H_4(r1 zT@KH8^Gmqj6P57CL?g}>_yJte0w+Y?=QoE6&BgOxOKhzb;)%Z&x@of)E+7GzHh@<$yQd!79;&C!aBa|=O*oq3%g333K(C29iTpH4>*PG=UHWP$mJBBmr zDf4|K@L=dpR+lxZ9pIDlb zp_tMS}tRe@}5aZLhUnq=d;6`;b)dlVdp7bH;_4+9BC$`@e7Q3+** zWiy-%UP>njzYdAM1h7*=vyE%y!;Kn81h{C2Mot-)L_ZAKBGyQG#n2cE8Z%IrvI6j%sfj6ua9h^Sy9CRIe_gB9rYT0Pd75uu^C0qBEqQJN7t zW&%x1K-Ws7X$SJ@&~+q%58!;3C%FLTtg&kxAIhBE5+)wZ+0Scu-P3 literal 0 HcmV?d00001 diff --git a/test/test_manifest.json b/test/test_manifest.json index 6b6ba745f..5999b1454 100644 --- a/test/test_manifest.json +++ b/test/test_manifest.json @@ -14327,5 +14327,12 @@ "md5": "d2606e2c6cc9e679b8b88c2800c6e1a9", "rounds": 1, "type": "eq" + }, + { + "id": "issue21346", + "file": "pdfs/issue21346.pdf", + "md5": "16b39d943d268ebfa99ee57f1f470f53", + "rounds": 1, + "type": "eq" } ]