On Thu, 11 May 2023 18:23:45 GMT, Ichiroh Takiguchi <[email protected]> 
wrote:

> On AIX, lib/fontconfig.bfc file is used to find font setting.
> I ran SwingSet2 List demo program with AIX C locale.
> JDK21's line spacing is larger then JDK17.
> Screen shots are in 
> [JDK-8307953](https://bugs.openjdk.org/browse/JDK-8307953).
> When I used `-Dfile.encoding=COMPAT` option on AIX C locale, SwingSet2 worked 
> fine as expected.
> 
> This situation happens `Charset.defaultCharset()` always returns UTF-8 after 
> JEP 400 by default.
> `native.encoding` system property has platform's encoding/charset name.
> If platform's charset name is not supported by Java, charset name should be 
> `UTF-8`.
> 
> Additionally, following parts are changed:
> `src/java.desktop/aix/data/fontconfig/fontconfig.propertie`s has invalid 
> charset name.
> For Java for AIX:
> - Encoding name for AIX's Zh_TW locale is `big5`, charset name should be 
> `x-IBM950` instead of `big5`.
> - Encoding name for AIX's zh_CN locale is `IBM-eucCN`, charset name should be 
> `x-IBM1383` instead of `x-EUCCN`.
> 
> In my understanding, this fix affects just for AIX platform.
> 
> Note:
> macos-x64 tier1 test was failed, but I think it's not related this PR.

src/java.desktop/share/classes/sun/awt/FontConfiguration.java line 142:

> 140:     private void setEncoding() {
> 141:         encoding = Charset.forName(System.getProperty("native.encoding"),
> 142:                                    UTF_8).name();

It is extremely misleading that this hugely impactful and wrong change is 
slipped into a bug about AIX.
I don't much care what you do with AIX, but revert this.

The  native.encoding is not something we want to use here.
We had not over-looked that JEP 400 changed this and it is fine.
You are effectively undoing JEP 400 and making fontconfig files be found and 
use the old encoding when we really want it to match the default encoding as 
per the fontconfig spec
https://docs.oracle.com/en/java/javase/20/intl/font-configuration-files.html
    Encoding - the canonical name of the default encoding, as provided by 
java.nio.charset.Charset.defaultCharset().name().

Any env. on which line-spacing changes is because that is what is set up to be 
in that locale+encoding  and if you want to change it, update the fontconfig 
file for that locale+encoding.

@naotoj - please comment.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/13937#discussion_r1218518939

Reply via email to