[OpenJDK 2D-Dev] RFR: 8214002 Cannot use italic font style if the font has embeded bitmap

Ichiroh Takiguchi takiguc at linux.vnet.ibm.com
Mon Nov 19 05:35:59 UTC 2018


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.
>> 



More information about the 2d-dev mailing list