> 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 sun.java2d.print.enablePathPrecisionScale property from JDK-8256264 fix ------------- Changes: - all: https://git.openjdk.java.net/jdk/pull/1183/files - new: https://git.openjdk.java.net/jdk/pull/1183/files/120ae32b..f79b8014 Webrevs: - full: https://webrevs.openjdk.java.net/?repo=jdk&pr=1183&range=01 - incr: https://webrevs.openjdk.java.net/?repo=jdk&pr=1183&range=00-01 Stats: 18 lines in 1 file changed: 0 ins; 10 del; 8 mod Patch: https://git.openjdk.java.net/jdk/pull/1183.diff Fetch: git fetch https://git.openjdk.java.net/jdk pull/1183/head:pull/1183 PR: https://git.openjdk.java.net/jdk/pull/1183