On Sun, Feb 11, 2018 at 10:27:56PM +0900, Akihiro Sagawa wrote:
Fixes Bug 44473.
Signed-off-by: Akihiro Sagawa <sagawa.aki(a)gmail.com> --- 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 ba8855a..5d53129 100644 --- a/dlls/gdi32/freetype.c +++ b/dlls/gdi32/freetype.c @@ -7523,6 +7523,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; @@ -7552,10 +7555,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 += fabs(font->font_desc.matrix.eM11); ptm->tmAveCharWidth++; ptm->tmMaxCharWidth++; }
It looks odd to me that tmOverHang gets incremented by essentially the scaling factor, yet the widths only get incremented by one. Shouldn't these all be consistent? Huw.