diff options
Diffstat (limited to 'src/xftfreetype.c')
-rw-r--r-- | src/xftfreetype.c | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/src/xftfreetype.c b/src/xftfreetype.c index 51d4613..b2e09e2 100644 --- a/src/xftfreetype.c +++ b/src/xftfreetype.c @@ -367,10 +367,10 @@ XftFontInfoFill (Display *dpy, _Xconst FcPattern *pattern, XftFontInfo *fi) { XftDisplayInfo *info = _XftDisplayInfoGet (dpy, True); FcChar8 *filename; - int id; + int id, mid; double dsize; double aspect; - FcMatrix *font_matrix; + FcMatrix *font_matrix, fm1; FcBool hinting, vertical_layout, autohint, global_advance; int hint_style; FcChar32 hash, *hashp; @@ -491,6 +491,21 @@ XftFontInfoFill (Display *dpy, _Xconst FcPattern *pattern, XftFontInfo *fi) goto bail1; } + mid = 1; + while (FcPatternGetMatrix (pattern, FC_MATRIX, mid, &font_matrix) == FcResultMatch) { + FcMatrixInit(&fm1); + fm1.xx = fi->matrix.xx / (double) 0x10000L; + fm1.yy = fi->matrix.yy / (double) 0x10000L; + fm1.xy = fi->matrix.xy / (double) 0x10000L; + fm1.yx = fi->matrix.yx / (double) 0x10000L; + FcMatrixMultiply(&fm1, font_matrix, &fm1); + fi->matrix.xx = (FT_Fixed)(0x10000L * fm1.xx); + fi->matrix.yy = (FT_Fixed)(0x10000L * fm1.yy); + fi->matrix.xy = (FT_Fixed)(0x10000L * fm1.xy); + fi->matrix.yx = (FT_Fixed)(0x10000L * fm1.yx); + mid++; + } + fi->transform = (fi->matrix.xx != 0x10000 || fi->matrix.xy != 0 || fi->matrix.yx != 0 || fi->matrix.yy != 0x10000); |