[luatex] luatex doesn't set /Smask in pdf 2.0

Ulrike Fischer luatex at nililand.de
Wed Jun 30 16:55:18 CEST 2021


Am Wed, 30 Jun 2021 16:48:57 +0200 schrieb luigi scarso:

> On Wed, Jun 30, 2021 at 3:02 PM Ulrike Fischer <luatex at nililand.de> wrote:
> 
>>
>> I lost transparency in a png used in a pdf 2.0 document.
>>
>> It looks as if luatex decides if to use a /Smask by looking only at
>> the minor version. So 1.4-1.9 work, 2.0-2.3 fail, 2.4 works again
>>
>>
>> \pdfvariable compresslevel=0
>> \pdfvariable objcompresslevel=0
>> \pdfvariable majorversion =2
>> \pdfvariable minorversion =0 % or 4
>> \saveimageresource {transparent.png}
>> \useimageresource\lastsavedimageresourceindex
>> xxx
>> \bye
>>
>> Result
>>
>> minor 0:
>> << /Type /XObject /Subtype /Image /Width 50 /Height 50
>> /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 7500 >>
>>
>> minor 4:
>> << /Type /XObject /Subtype /Image /Width 50 /Height 50
>> /BitsPerComponent 8 /ColorSpace /DeviceRGB /SMask 7 0 R /Length 7500
>>>>
>>
>> transparent.png is an arbitrary image with transparency.
>>
> 
> yes,  we assume   majorversion=1
> 490             /*tex alpha channel support */
> 491             if (pdf->minor_version < 4
> 492                 && png_get_color_type(png_p, info_p) |
> PNG_COLOR_MASK_ALPHA) {
> 493                 png_set_strip_alpha(png_p);
> 494                 png_copy = false;
> 495             }
> 
> What are the rules for png  when  majorversion=2 ?

I don't think that anything changed compared to 1.7. I didn't check
the full reference, but the SMask entry simply says

SMask stream (Optional; PDF 1.4) ....

I guess that the test was added to handle PDF <1.4 and 
simply wasn't adapted when the major version was added. 


-- 
Ulrike Fischer 
http://www.troubleshooting-tex.de/



More information about the luatex mailing list.