On Wed, 14 Jan 2026 13:25:14 GMT, GennadiyKrivoshein <[email protected]> wrote:

>> Phil Race has updated the pull request incrementally with one additional 
>> commit since the last revision:
>> 
>>   8375221
>
> src/java.desktop/unix/classes/sun/print/IPPPrintService.java line 1699:
> 
>> 1697:                 : null;
>> 1698:             if (attribClass != null) {
>> 1699:                 rawResolutions = attribClass.getIntRangeValue();
> 
> Regarding to the RFC8011, section 5.1.16 
> (https://datatracker.ietf.org/doc/html/rfc8011#section-5.1.16), the IPP 
> 'resoltion' attribute consists of three values.
> 
>>The 'resolution' attribute syntax specifies a two-dimensional resolution in 
>>the indicated units. It consists of three values: a cross-feed direction 
>>resolution (positive integer value), a feed direction resolution (positive 
>>integer value), and a units value. For example, '300','600','3' indicates a 
>>300-dpi cross-feed direction resolution and a 600-dpi feed direction 
>>resolution, since a '3' indicates dots per inch (dpi).
> 
> So the `rawResolutions = attribClass.getIntRangeValue();` and subsequent `int 
> numRes = rawResolutions.length / 2;` looks wrong. I checked the "attribClass" 
> value with my printer and it contains three values per resolution.

Right. The 3rd value is the resolution unit ID (3 for DPI, 4 for DPCM). Since 
the AttributeClass method wasn't reading it, I assumed DPI which seems to be 
the general case, and FWIW is all the PPDs seem to support.
The units ID is a byte, so I had to add a special method to AttributeClass.
Then now that it returns 3 values, I decided to make the PPD code also return a 
units ID, so all cases could be processed similarly.

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/29208#discussion_r2695361406

Reply via email to