On Mon, 30 Nov 2020 10:00:17 GMT, Alexander Scherbatiy <alex...@openjdk.org> 
wrote:

>> Printing text using GlyphVector outline has bad quality on printers with low 
>> DPI on Windows.
>> The GDI system used for text printing on Windows accepts only integer path 
>> coordinates.
>> Rounding GlyphVector outline coordinates leads to distorted printed text.
>> 
>> To reproduce the issue run the 
>> [PrintGlyphVectorOutlineSample](https://bugs.openjdk.java.net/secure/attachment/91398/PrintGlyphVectorOutlineSample.java)
>>   file on Windows and select a low DPI
>> printer in the printer dialog. The sample prints two lines, one using 
>> Graphics drawString() method and another by
>> filling GlyphVector outline. Chars on the second line are distorted.
>> 
>> It is also possible to reproduce the issue running the sample and printing 
>> the text to PDF: 
>> [fill-glyph-vector-outline.png](https://bugs.openjdk.java.net/secure/attachment/91397/fill-glyph-vector-outline.png)
>> 
>> The proposed fix introduce "sun.java2d.print.enablePathPrecisionScale" 
>> property which being enabled
>> scales the GDI WorldTransform down and GlyphVector outline coordinates up.
>> This allows to keep some digits after a dot from being rounded.
>> The value for scaling is chosen to be 1000 in the same way how it is used  
>> by `String trunc(float f)` method from PSPrinterJob class on Linux:
>> https://github.com/openjdk/jdk/blob/ed615e3ca0d681e8e67cdbf1d5d964979ccd7888/src/java.desktop/share/classes/sun/print/PSPrinterJob.java#L1489
>> 
>> See the  
>> [fill-glyph-vector-outline-enable-path-scale-factor.png](https://bugs.openjdk.java.net/secure/attachment/91399/fill-glyph-vector-outline-enable-path-scale-factor.png)
>>  screenshot which shows how the GlyphVector outline is filled after the fix 
>> with the enabled "sun.java2d.print.enablePathPrecisionScale" option.
>> 
>> [fill-glyph-vector-outline-diff.png](https://bugs.openjdk.java.net/secure/attachment/91400/fill-glyph-vector-outline-diff.png)
>>  shows difference of GlyphVector outline printing before and after the fix.
>
> Alexander Scherbatiy has updated the pull request incrementally with one 
> additional commit since the last revision:
> 
>   Remove Dsun.java2d.print.enablePathPrecisionScale property from the 
> PathPrecisionScaleFactorTest

Marked as reviewed by serb (Reviewer).

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

PR: https://git.openjdk.java.net/jdk/pull/1183

Reply via email to