- Add a hackfix to ftGdiGetGlyphOutline to make it handle scaling more properly
- Improves CORE-4657

svn path=/trunk/; revision=58599
This commit is contained in:
Giannis Adamopoulos 2013-03-24 09:29:55 +00:00
parent ed6bd94d05
commit 66fc8a9d5a

View file

@ -1646,15 +1646,32 @@ ftGdiGetGlyphOutline(
IntLockFreeType;
/* Scaling transform */
if (aveWidth)
/*if (aveWidth)*/
{
FT_Matrix scaleMat;
DPRINT("Scaling Trans!\n");
scaleMat.xx = FT_FixedFromFloat(widthRatio);
scaleMat.xy = 0;
scaleMat.yx = 0;
scaleMat.yy = (1 << 16);
FT_Matrix_Multiply(&scaleMat, &transMat);
FT_Matrix ftmatrix;
FLOATOBJ efTemp;
PMATRIX pmx = DC_pmxWorldToDevice(dc);
/* Create a freetype matrix, by converting to 16.16 fixpoint format */
efTemp = pmx->efM11;
FLOATOBJ_MulLong(&efTemp, 0x00010000);
ftmatrix.xx = FLOATOBJ_GetLong(&efTemp);
efTemp = pmx->efM12;
FLOATOBJ_MulLong(&efTemp, 0x00010000);
ftmatrix.xy = FLOATOBJ_GetLong(&efTemp);
efTemp = pmx->efM21;
FLOATOBJ_MulLong(&efTemp, 0x00010000);
ftmatrix.yx = FLOATOBJ_GetLong(&efTemp);
efTemp = pmx->efM22;
FLOATOBJ_MulLong(&efTemp, 0x00010000);
ftmatrix.yy = FLOATOBJ_GetLong(&efTemp);
FT_Matrix_Multiply(&ftmatrix, &transMat);
needsTransform = TRUE;
}