summaryrefslogtreecommitdiff
path: root/src/xftfreetype.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/xftfreetype.c')
-rw-r--r--src/xftfreetype.c19
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);