RFR: 8350203: [macos] Newlines and tabs are not ignored when drawing text to a Graphics2D object

Phil Race prr at openjdk.org
Thu Mar 6 22:37:56 UTC 2025


On Mon, 17 Feb 2025 14:06:53 GMT, Daniel Gredler <dgredler at openjdk.org> wrote:

> On other platforms like Windows and Linux, the `\n`, `\r` and `\t` characters are ignored when drawing text to a `Graphics2D` object. On macOS this is not currently the case.
> 
> See, for example, `CMap.getControlCodeGlyph(int, boolean)` or `RasterPrinterJob.removeControlChars(String)`.
> 
> This bug was found while running `test/jdk/java/awt/print/PrinterJob/PrintTextTest.java` on macOS.
> 
> The new test class passes on Linux, Windows and macOS.

I am seeing an existing test fail on macOS with this change
java/awt/font/GlyphVector/NLGlyphTest.java

java NLGlyphTest
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 0 out of bounds for length 0
at java.desktop/sun.font.StandardGlyphVector.getGlyphCode(StandardGlyphVector.java:311)
at NLGlyphTest.main(NLGlyphTest.java:46)

This code
char[] chs = { '\n' };
GlyphVector lgv = font.layoutGlyphVector(frc, chs, 0, 1, 0);
results in a GV with zero glyphs, which isn't what I'd expect - that a string would have no glyphs at all.
Interestingly I think it is OK for some fonts, but not OK for most fonts.

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

PR Comment: https://git.openjdk.org/jdk/pull/23665#issuecomment-2705094639


More information about the client-libs-dev mailing list