[PATCH 3/3] gdi32: Fix text metrics in synthetic bold bitmap fonts. (rebased)
Akihiro Sagawa
sagawa.aki at gmail.com
Tue Feb 13 07:40:14 CST 2018
On Mon, 12 Feb 2018 09:27:06 +0000, Huw Davies wrote:
> On Sun, Feb 11, 2018 at 10:27:56PM +0900, Akihiro Sagawa wrote:
> > @@ -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?
Indeed, this looks odd. However, following my test shows tmOverhang is
incremented only 1 (in MM_TEXT mode) neverthless scaling factor.
| + ok(data[i+1].tm.tmOverhang == 1,
| + "expected 1, got %d\n", data[i+1].tm.tmOverhang);
If tmOverhang would be affected by scalling factor, this test wouldn't
pass when data[3].tm.tmOverhang is evaluated.
Moreover, my manual test shows if height == 200, the tmOverhang value is
still only 1 with Courier font.
Thanks reviewing,
Akihiro Sagawa
More information about the wine-devel
mailing list