On Wed, 28 May 2025 10:29:17 GMT, GennadiyKrivoshein <d...@openjdk.org> wrote:

> The fix for the https://bugs.openjdk.org/browse/JDK-8251928.
> 
> **Description**.
> This PR contains changes to be able to print with DPI higher than 72 on 
> macOS, set default CPrinterJob DPI is 300 like in the PSPrinterJob.
> 
> As described in the macOS drawing guide, the following steps are required to 
> draw with high DPI 
> (https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/CocoaDrawingGuide/Transforms/Transforms.html#//apple_ref/doc/uid/TP40003290-CH204-BCICIJAJ):
> 1. Convert the user-space point, size, or rectangle value to device space 
> coordinates;
> 2. Normalize the value in device space so that it is aligned to the 
> appropriate pixel boundary;
> 3. Convert the normalized value back to user space;
> 4. Draw your content using the adjusted value. 
>     
> The 1-st step is now implemented in the CPrinterJob, a Graphics provided to 
> the print method adjusted to a printer's DPI.
> The 2-nd step is a drawing process in the java code (without changes).
> The 3-rd step is now implemented in the PrinterView.m, the drawing scaled 
> back to the 72 DPI.
> The 4-th step is a drawing process in the native code (without changes).
> 
> **Tests**.
> I run all tests from javax.print package and there is no any regression.
> New test covers macOS and Linux only because we know its default DPI - 300.

While running PDFBOX4935PrintDpi  testcase from the JBS, it is showing with 
your fix
ScaleX: 4.166666
ScaleY: 4.166666
DPI = 300

while printing to pdf. Shouldn't the scale be shown as 2.0 for retina display 
while doing pdf printing?

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

PR Comment: https://git.openjdk.org/jdk/pull/25489#issuecomment-2921381067

Reply via email to