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

Naoto Sato naoto at openjdk.org
Mon Jun 5 19:56:55 UTC 2023


On Mon, 5 Jun 2023 19:45:05 GMT, Phil Race <prr 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.

I agree with Phil here. The proposed fix would violate what's defined in the fontconfig spec. I would expect AIX's font config to correctly choose an appropriate font file for the UTF-8 environment.

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

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



More information about the client-libs-dev mailing list