Hi Mario,
I don't understand why your test needs a shell script to compile it ?
Once we've resolved that question, and you get a 2nd review, feel
free to push.
-phil.
On 12/12/14 10:00 AM, Mario Torre wrote:
On Wed, 2014-12-10 at 15:36 -0800, Phil Race wrote:
the character is encoded as <c3a4> (which is correct ihmo)
but then mapped to ISOLatin1Encoding.
\u00e4 (Umlaut) encoded as 8859 should just be "e4".
What you have above is UTF-8, whereas the PS printing path is
definitely expecting 8859-1. I looked and found that when I reviewed this change
I commented it probably should be 8859-1 but didn't make a sufficient point of
it :-(
I thought that since we returned latin1 for the charset name we'd get the right
encoding
but apparently not, and I imagine what testing was done either didn't cover
this range
or the bug was overlooked.
The following is the quick fix I think we need since I think printing and ONLY
printing
ever uses this code when we are using fontconfig :-
diff --git a/src/java.desktop/unix/classes/sun/font/FcFontConfiguration.java
b/src/java.desktop/unix/classes/sun/font/FcFontConfiguration.java
--- a/src/java.desktop/unix/classes/sun/font/FcFontConfiguration.java
+++ b/src/java.desktop/unix/classes/sun/font/FcFontConfiguration.java
@@ -180,7 +180,7 @@
String[] componentFaceNames = cfi[idx].getComponentFaceNames();
FontDescriptor[] ret = new FontDescriptor[componentFaceNames.length];
for (int i = 0; i < componentFaceNames.length; i++) {
- ret[i] = new FontDescriptor(componentFaceNames[i],
StandardCharsets.UTF_8.newEncoder(), new int[0]);
+ ret[i] = new FontDescriptor(componentFaceNames[i],
StandardCharsets.ISO_8859_1.newEncoder(), new int[0]);
}
return ret;
Hi Phil,
Thanks for the reply!
I thought it was something along the lines, but I wasn't confident
enough for the fix.
I applied your fix and (of course!) I can confirm it worked, and created
a bug report:
https://bugs.openjdk.java.net/browse/JDK-8067364
I also went ahead and tweaked the test case so that there's no need to
print anymore:
http://cr.openjdk.java.net/~neugens/8067364/webrev.00/
This webrev contains the updated test case based on the PrintSE test and
your fix. I will be happy to push the fix myself if you prefer.
Cheers,
Mario