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

Phil Race philip.race at oracle.com
Fri Nov 16 21:04:49 UTC 2018


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

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/2d-dev/attachments/20181116/8086f150/attachment.html>


More information about the 2d-dev mailing list