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.


Reply via email to