summaryrefslogtreecommitdiff
path: root/pango/pangofc-font.c
diff options
context:
space:
mode:
Diffstat (limited to 'pango/pangofc-font.c')
-rw-r--r--pango/pangofc-font.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/pango/pangofc-font.c b/pango/pangofc-font.c
index 74503b91..5635e0be 100644
--- a/pango/pangofc-font.c
+++ b/pango/pangofc-font.c
@@ -75,6 +75,8 @@ static gboolean _pango_fc_font_is_hinted (PangoFont *fon
static void _pango_fc_font_get_scale_factors (PangoFont *font,
double *x_scale,
double *y_scale);
+static void pango_fc_font_get_matrix (PangoFont *font,
+ PangoMatrix *matrix);
#define PANGO_FC_FONT_LOCK_FACE(font) (PANGO_FC_FONT_GET_CLASS (font)->lock_face (font))
#define PANGO_FC_FONT_UNLOCK_FACE(font) (PANGO_FC_FONT_GET_CLASS (font)->unlock_face (font))
@@ -109,6 +111,7 @@ pango_fc_font_class_init (PangoFcFontClass *class)
pclass->get_languages = _pango_fc_font_get_languages;
pclass->is_hinted = _pango_fc_font_is_hinted;
pclass->get_scale_factors = _pango_fc_font_get_scale_factors;
+ pclass->get_matrix = pango_fc_font_get_matrix;
/**
* PangoFcFont:pattern:
@@ -1110,3 +1113,22 @@ _pango_fc_font_get_scale_factors (PangoFont *font,
pango_matrix_get_font_scale_factors (&fcfont->matrix, x_scale, y_scale);
}
+
+static void
+pango_fc_font_get_matrix (PangoFont *font,
+ PangoMatrix *matrix)
+{
+ PangoFcFont *fcfont = PANGO_FC_FONT (font);
+ FcMatrix fc_matrix, *fc_matrix_val;
+
+ FcMatrixInit (&fc_matrix);
+ for (int i = 0; FcPatternGetMatrix (fcfont->font_pattern, FC_MATRIX, i, &fc_matrix_val) == FcResultMatch; i++)
+ FcMatrixMultiply (&fc_matrix, &fc_matrix, fc_matrix_val);
+
+ matrix->xx = fc_matrix.xx;
+ matrix->xy = - fc_matrix.xy;
+ matrix->yx = - fc_matrix.yx;
+ matrix->yy = fc_matrix.yy;
+ matrix->x0 = 0.;
+ matrix->y0 = 0.;
+}