[PATCH v2 7/7] gdi32: Improve the determine code whether the chracter is the fullwidth.

Byeongsik Jeon bsjeon at hanmail.net
Tue Jan 29 11:12:41 CST 2019


Signed-off-by: Byeongsik Jeon <bsjeon at hanmail.net>
---
At the MS Korean dual-width fonts embedded bitmap,
full-width character's advance width is smaller than expected in wine.
We can solve this problem by slightly changing the logic.

Ex.
gulim.ttc:GulimChe EM=1024 AvgWidth=512
ppem=19px half-width character advance = 10px
ppem=19px full-width character advance = 18px
But, Wine expects 19px.

 dlls/gdi32/freetype.c | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/dlls/gdi32/freetype.c b/dlls/gdi32/freetype.c
index bddcd56837..cb804f8e5c 100644
--- a/dlls/gdi32/freetype.c
+++ b/dlls/gdi32/freetype.c
@@ -6839,9 +6839,7 @@ static FT_Vector get_advance_metric(GdiFont *incoming_font, GdiFont *font,
         em_scale = MulDiv(incoming_font->ppem, 1 << 16,
                           incoming_font->ft_face->units_per_EM);
         avg_advance = pFT_MulFix(incoming_font->ntmAvgWidth, em_scale);
-        fixed_pitch_full = (avg_advance > 0 &&
-                            (base_advance + 63) >> 6 ==
-                            pFT_MulFix(incoming_font->ntmAvgWidth*2, em_scale));
+        fixed_pitch_full = avg_advance > 0 && (base_advance + 63) >> 6 != avg_advance;
         if (fixed_pitch_full && !transMat)
             adv.x = (avg_advance * 2) << 6;
     }
-- 
2.20.1




More information about the wine-devel mailing list