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.
