Akihiro Sagawa : gdi32: Fix text metrics in synthetic bold bitmap fonts.
Alexandre Julliard
julliard at winehq.org
Mon May 14 06:54:22 CDT 2018
Module: wine
Branch: stable
Commit: fa56e8458394236b4b9ab3e5b7003802c096ec78
URL: https://source.winehq.org/git/wine.git/?a=commit;h=fa56e8458394236b4b9ab3e5b7003802c096ec78
Author: Akihiro Sagawa <sagawa.aki at gmail.com>
Date: Sun Feb 18 21:34:42 2018 +0900
gdi32: Fix text metrics in synthetic bold bitmap fonts.
Signed-off-by: Akihiro Sagawa <sagawa.aki at gmail.com>
Signed-off-by: Huw Davies <huw at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
(cherry picked from commit dce3e171858d831e9861ed02df30a5aeddcc3a64)
Signed-off-by: Michael Stefaniuc <mstefani at winehq.org>
---
dlls/gdi32/freetype.c | 9 +++++++--
dlls/gdi32/tests/font.c | 3 ---
2 files changed, 7 insertions(+), 5 deletions(-)
diff --git a/dlls/gdi32/freetype.c b/dlls/gdi32/freetype.c
index 2a95643..3244ad3 100644
--- a/dlls/gdi32/freetype.c
+++ b/dlls/gdi32/freetype.c
@@ -7522,6 +7522,9 @@ static BOOL get_bitmap_text_metrics(GdiFont *font)
TM.tmPitchAndFamily = FT_IS_FIXED_WIDTH(ft_face) ? 0 : TMPF_FIXED_PITCH;
TM.tmCharSet = font->charset;
}
+
+ if(font->fake_bold)
+ TM.tmWeight = FW_BOLD;
#undef TM
return TRUE;
@@ -7551,10 +7554,12 @@ static void scale_font_metrics(const GdiFont *font, LPTEXTMETRICW ptm)
SCALE_Y(ptm->tmDescent);
SCALE_Y(ptm->tmInternalLeading);
SCALE_Y(ptm->tmExternalLeading);
- SCALE_Y(ptm->tmOverhang);
- if(FT_IS_SCALABLE(font->ft_face) && font->fake_bold)
+ SCALE_X(ptm->tmOverhang);
+ if(font->fake_bold)
{
+ if(!FT_IS_SCALABLE(font->ft_face))
+ ptm->tmOverhang++;
ptm->tmAveCharWidth++;
ptm->tmMaxCharWidth++;
}
diff --git a/dlls/gdi32/tests/font.c b/dlls/gdi32/tests/font.c
index de0693b..ec4b29e 100644
--- a/dlls/gdi32/tests/font.c
+++ b/dlls/gdi32/tests/font.c
@@ -6539,15 +6539,12 @@ static void test_fake_bold_font(void)
"expected %d, got %d\n", data[i].tm.tmAscent, data[i+1].tm.tmAscent);
ok(data[i].tm.tmDescent == data[i+1].tm.tmDescent,
"expected %d, got %d\n", data[i].tm.tmDescent, data[i+1].tm.tmDescent);
- todo_wine
ok(data[i+1].tm.tmAveCharWidth - data[i].tm.tmAveCharWidth == diff,
"expected %d, got %d\n", diff, data[i+1].tm.tmAveCharWidth - data[i].tm.tmAveCharWidth);
- todo_wine
ok(data[i+1].tm.tmMaxCharWidth - data[i].tm.tmMaxCharWidth == diff,
"expected %d, got %d\n", diff, data[i+1].tm.tmMaxCharWidth - data[i].tm.tmMaxCharWidth);
ok(data[i].tm.tmOverhang == 0,
"expected 0, got %d\n", data[i].tm.tmOverhang);
- todo_wine
ok(data[i+1].tm.tmOverhang == 1,
"expected 1, got %d\n", data[i+1].tm.tmOverhang);
ok(data[i].w + 1 == data[i+1].w,
More information about the wine-cvs
mailing list