RFR: 8307953: [AIX] C locale's font setting was changed by JEP 400

Phil Race prr at openjdk.org
Mon Jun 5 19:47:53 UTC 2023


On Thu, 11 May 2023 18:23:45 GMT, Ichiroh Takiguchi <itakiguchi at openjdk.org> 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



More information about the client-libs-dev mailing list