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

List:       openjdk-2d-dev
Subject:    Re: [OpenJDK 2D-Dev] RFR: 8214002 Cannot use italic font style if the font has embeded bitmap
From:       Phil Race <philip.race () oracle ! com>
Date:       2018-12-04 22:06:44
Message-ID: 7271ac62-c7e0-d599-8ebd-946d81c425fd () oracle ! com
[Download RAW message or body]

IIRC, Windows doesn't install the Japanese fonts by default .. at least not
in non-Asian locales, so I think we need to add

                Font msMincho = new Font("MS Mincho", Font.PLAIN, 16);
                String family = msMincho.getFamily(java.util.Locale.ENGLISH);
                if (!family.equalsIgnoreCase("MS Mincho")) {
                        System.out.println("Japanese fonts not installed");
                        return;
                }
to avoid potential false failures.

I will add this before pushing.

-phil.

On 12/3/18 5:54 AM, Ichiroh Takiguchi wrote:
> Hello Phil.
>
> Test case is available.
> Could you review the fix again ?
>
> Bug:       https://bugs.openjdk.java.net/browse/JDK-8214002
> Change: https://cr.openjdk.java.net/~itakiguchi/8214002/webrev.02/
>
> Thanks,
> Ichiroh Takiguchi
>
> On 2018-11-28 10:13, Philip Race wrote:
>> Oh .. there's no regression test. If you can't find one then I think you
>> can write one relatively easily by selecting the known font - MS Mincho,
>> making sure we are on Windows (don't try it on Mac even if the font
>> exists), draw the text to a BufferedImage in plain / regular style.
>> Repeat to a different BufferedImage in italic
>> Compare the images, and pass only if they differ.
>>
>> -phil.
>>
>> On 11/27/18, 5:08 PM, Ichiroh Takiguchi wrote:
>>> Hello Phil.
>>>> Do you need me to push this ?
>>> Yes, if possible.
>>> Currently, no sponsor is assigned for this issue.
>>>
>>> Ichiroh Takiguchi
>>>
>>> On 2018-11-28 05:43, Phil Race wrote:
>>>> On 11/27/18 9:36 AM, Ichiroh Takiguchi wrote:
>>>>> Hello Phil.
>>>>>
>>>>> I don't have any concern about this fix.
>>>>> I'm thinking why initial programmer used FT_LOAD_RENDER instead of 
>>>>> FT_LOAD_DEFAULT.
>>>> Probably that this was what we wanted to do in almost all cases and 
>>>> it has
>>>> now turned out to be untrue ..
>>>>
>>>>> On my testing, this fix was fine for me.
>>>>
>>>> Do you need me to push this ?
>>>>
>>>> -phil.
>>>>
>>>>>
>>>>> Ichiroh Takiguchi
>>>>>
>>>>> On 2018-11-27 03:59, Philip Race wrote:
>>>>>> It seems fine to me. What is your concern when you say :
>>>>>>> But it may change font rendering behavior...
>>>>>>
>>>>>> -phil
>>>>>>
>>>>>> On 11/18/18, 9:35 PM, Ichiroh Takiguchi wrote:
>>>>>>> Hello Phill.
>>>>>>>
>>>>>>> I tested and checked your suggested code. [1]
>>>>>>> It worked fine.
>>>>>>> But it may change font rendering behavior...
>>>>>>> Please review the fix ?
>>>>>>>
>>>>>>> Bug: https://bugs.openjdk.java.net/browse/JDK-8214002
>>>>>>> Change: https://cr.openjdk.java.net/~itakiguchi/8214002/webrev.01/
>>>>>>>
>>>>>>> Thanks,
>>>>>>> Ichiroh Takiguchi
>>>>>>> IBM Japan, Ltd.
>>>>>>>
>>>>>>> [1] 
>>>>>>> https://www.freetype.org/freetype2/docs/reference/ft2-base_interface.html#FT_LOAD_DEFAULT
>>>>>>>
>>>>>>> On 2018-11-17 06:04, Phil Race wrote:
>>>>>>>> Hi,
>>>>>>>>
>>>>>>>> Thanks for spotting this. But I'm not sure the conditions are 
>>>>>>>> right.
>>>>>>>> Don't we need to unconditionally remove FT_LOAD_RENDER if 
>>>>>>>> synthetic styles
>>>>>>>> are requested, regardless of the value of that flag ?
>>>>>>>>
>>>>>>>> Perhaps we should not set FT_LOAD_RENDER upfront in which case 
>>>>>>>> we'll
>>>>>>>> just call it once
>>>>>>>> we are done, making the logic simpler and avoid all of the 
>>>>>>>> error prone "in this
>>>>>>>> case we disable it again" logic.
>>>>>>>>
>>>>>>>> So instead of your fix just change the initialisation to :
>>>>>>>>
>>>>>>>> int renderFlags = FT_LOAD_DEFAULT;
>>>>>>>>
>>>>>>>> -phil.
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> On 11/16/18 9:37 AM, Ichiroh Takiguchi wrote:
>>>>>>>>> Hello.
>>>>>>>>> Could you review the fix ?
>>>>>>>>>
>>>>>>>>> Issue:
>>>>>>>>> Cannot use italic font style if the font has embeded bitmap.
>>>>>>>>>
>>>>>>>>> Bug: https://bugs.openjdk.java.net/browse/JDK-8214002
>>>>>>>>> Change: 
>>>>>>>>> https://cr.openjdk.java.net/~itakiguchi/8214002/webrev.00/
>>>>>>>>>
>>>>>>>>> It seems it's side-effect for:
>>>>>>>>> 8204929: Fonts with embedded bitmaps are not always rotated
>>>>>>>>>
>>>>>>>>> Test instruction and screen shot are in JDK-8214002.
>>>>>>>>>
>>>>>>>>> Thanks,
>>>>>>>>> Ichiroh Takiguchi
>>>>>>>>> IBM Japan, Ltd.
>>>>>>>>>
>>>>>>>>> On 2018-07-27 20:22, Ichiroh Takiguchi wrote:
>>>>>>>>>> Hello.
>>>>>>>>>>
>>>>>>>>>> According to my investigation, FT_Render_Glyph() was not called
>>>>>>>>>> even if FT_GlyphSlot_Oblique() was called.
>>>>>>>>>>
>>>>>>>>>> =========
>>>>>>>>>>        if (ftglyph->format == FT_GLYPH_FORMAT_OUTLINE) {
>>>>>>>>>>                FT_Render_Glyph(ftglyph, 
>>>>>>>>>> FT_LOAD_TARGET_MODE(target)); <<===
>>>>>>>>>>        }
>>>>>>>>>> =========
>>>>>>>>>>
>>>>>>>>>> It seemed FT_Load_Glyph() and renderFlags affected this issue.
>>>>>>>>>>
>>>>>>>>>> On my Windows,
>>>>>>>>>> For "MS Mincho" with italic, renderFlags was 
>>>>>>>>>> "FT_LOAD_TARGET_MONO |
>>>>>>>>>> FT_LOAD_NO_BITMAP | FT_LOAD_RENDER".
>>>>>>>>>> I also tested "Meiryo" font (it could handle italic style)
>>>>>>>>>> For "Meiryo" with italic, renderFlags was "FT_LOAD_TARGET_MONO |
>>>>>>>>>> FT_LOAD_RENDER".
>>>>>>>>>>
>>>>>>>>>> I think, after FT_LOAD_NO_BITMAP is turned on, FT_LOAD_RENDER 
>>>>>>>>>> should
>>>>>>>>>> be turned off.
>>>>>>>>>> So how about following fix ?
>>>>>>>>>>
>>>>>>>>>> =========
>>>>>>>>>> diff -r 1edcf36fe15f
>>>>>>>>>> src/java.desktop/share/native/libfontmanager/freetypeScaler.c
>>>>>>>>>> ---
>>>>>>>>>> a/src/java.desktop/share/native/libfontmanager/freetypeScaler.c 
>>>>>>>>>>      Wed
>>>>>>>>>> Jul 18 11:57:51 2018 -0400
>>>>>>>>>> +++
>>>>>>>>>> b/src/java.desktop/share/native/libfontmanager/freetypeScaler.c 
>>>>>>>>>>      Fri
>>>>>>>>>> Jul 27 19:44:12 2018 +0900
>>>>>>>>>> @@ -700,6 +700,9 @@
>>>>>>>>>>
>>>>>>>>>>          if (!context->useSbits) {
>>>>>>>>>>                  renderFlags |= FT_LOAD_NO_BITMAP;
>>>>>>>>>> +               if (context->doBold || context->doItalize) {
>>>>>>>>>> +                       renderFlags &= ~FT_LOAD_RENDER;
>>>>>>>>>> +               }
>>>>>>>>>>          }
>>>>>>>>>>
>>>>>>>>>>          /* NB: in case of non identity transform
>>>>>>>>>> =========
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On 2018-07-25 19:29, Ichiroh Takiguchi wrote:
>>>>>>>>>>> Hello.
>>>>>>>>>>> I'm using jdk-11+23 build on Japanese Windows 7.
>>>>>>>>>>>
>>>>>>>>>>> I ran Font2DTest Demo, then select like:
>>>>>>>>>>> Font: MS Mincho
>>>>>>>>>>> Range: Basic Latin
>>>>>>>>>>> Method: drawString
>>>>>>>>>>> Size: 24
>>>>>>>>>>> Style: Italic
>>>>>>>>>>>
>>>>>>>>>>> But style was not changed to Italic.
>>>>>>>>>>> Antialiasing and Fractional Metrics did not affect this issue.
>>>>>>>>>>>
>>>>>>>>>>> I assume it's side-effect for:
>>>>>>>>>>> 8204929: Fonts with embedded bitmaps are not always rotated
>>>>>>>>>>>
>>>>>>>>>>> Could you check it ?
>>>>>>>>>>>
>>>>>>>>>>> Thanks,
>>>>>>>>>>> Ichiroh Takiguchi
>>>>>>>>>>> IBM Japan, Ltd.
>>>>>>>>>
>>>>>>>
>>>>>
>>>
>

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

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