[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