[prev in list] [next in list] [prev in thread] [next in thread] 

List:       openjdk-2d-dev
Subject:    Re: [OpenJDK 2D-Dev] RFR: 8244621: [macos10.15] Garbled FX printing plus CoreText warnings on Catali
From:       Philip Race <philip.race () oracle ! com>
Date:       2020-05-21 21:23:45
Message-ID: 5EC6F161.6090906 () oracle ! com
[Download RAW message or body]

I know about the trailing white space. Well at least I know there is some.
I didn't notice if I accidentally added more.
Correct jcheck won't complain and I have an open bug to clean this up 
across all code before
the move to git. https://bugs.openjdk.java.net/browse/JDK-8240487

-phil.

On 5/21/20, 2:16 PM, Kevin Rushforth wrote:
> +1
>
> In case you want to fix it before you push, you have trailing 
> whitespace in the file (jcheck won't complain since it doesn't check 
> .m files, so no worries if you don't).
>
> -- Kevin
>
>
> On 5/21/2020 1:56 PM, Philip Race wrote:
>> Bug: https://bugs.openjdk.java.net/browse/JDK-8244621
>> Webrev : http://cr.openjdk.java.net/~prr/8244621/
>>
>> macOS ships some UI fonts which it does not enumerate, all having 
>> names beginning with "."
>> It expects you to create them using APIs such as
>> CTFontCreateUIFontForLanguage(kCTFontSystemFontType, 0, NULL);
>> or
>> nsFont = [NSFont systemFontOfSize:1.0];
>>
>> In apps built with all SDKs to date, so long as you can get the real 
>> "." name you can still
>> request it by name.
>>
>> But with the latest Xcode 11 this not only prints a warning that you 
>> should not do it,
>> it also gives you Times New Roman instead - not a standard UI font - 
>> probably a choice
>> so it is obvious it is not a UI font.
>>
>> Our problem here is that JavaFX uses the system font as its "logical" 
>> font called System
>> and also JavaFX uses Java 2D for printing. It messages over the ".*" 
>> name to Java 2D
>> to use as the font to print. But with the latest Xcode 2D is not 
>> allowed to create the font using that name.
>>
>> This fix changes the JDK code for macOS that creates the native font 
>> pointer to check if the name being requested
>> is one of the UI fonts. If it is, then it uses the NSFont 
>> systemFontOfSize API to create the font, which fixes the problem.
>>
>> If someone asks for a random name such as ".foo"
>> Note that
>> 1) JDK only enumerates the regular and bold system font which is all 
>> FX uses.
>>
>> 2) The fix *could* have just tested to see if the requested name 
>> begins with "." and that worked too but it
>> wasn't clear what would happen if there is some other font called 
>> ".Foo". We tested and
>> names starting with "." seem to be absolutely reserved for these 
>> system fonts on macOS
>> If you see such a font. it is a system font. We tested and if you 
>> have a random name such as ".FOO"
>> macOS does the same thing - it assumes it is a system font and won't 
>> give it to you.
>> So probably testing for a "." prefix would have been OK but as 
>> written it is more certain and
>> is robust against Apple changing the nameing scheme to be (sa) a "~" 
>> prefix.
>>
>> No regression test as this isn't easily testable and the main place 
>> it matters is FX printing.
>> However we've verified this on 10.13.6 with the old tool chain and 
>> 10.15.2 with the new toolchain
>> and fixes the warnings and FX printing.
>>
>> The removal of adding the fixed width font is because we never needed 
>> it and it is just Monaco anyway ...
>>
>> -phil.
>>
>>
>>
>
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic