summaryrefslogtreecommitdiff
path: root/pango/pangocoretext-fontmap.c
diff options
context:
space:
mode:
Diffstat (limited to 'pango/pangocoretext-fontmap.c')
-rw-r--r--pango/pangocoretext-fontmap.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/pango/pangocoretext-fontmap.c b/pango/pangocoretext-fontmap.c
index 4d101847..c5cacab4 100644
--- a/pango/pangocoretext-fontmap.c
+++ b/pango/pangocoretext-fontmap.c
@@ -806,6 +806,7 @@ get_context_matrix (PangoContext *context,
/*
* Helper functions for PangoCoreTextFontsetKey
*/
+static const double ppi = 72.0; /* typographic points per inch */
static double
pango_core_text_font_map_get_resolution (PangoCoreTextFontMap *fontmap,
@@ -817,7 +818,7 @@ pango_core_text_font_map_get_resolution (PangoCoreTextFontMap *fontmap,
/* FIXME: acquire DPI from CoreText using some deafault font */
g_warning ("FIXME: returning default DPI");
- return 72.0;
+ return ppi;
}
static int
@@ -826,8 +827,16 @@ get_scaled_size (PangoCoreTextFontMap *fontmap,
const PangoFontDescription *desc)
{
double size = pango_font_description_get_size (desc);
-
- return .5 + pango_matrix_get_font_scale_factor (pango_context_get_matrix (context)) * size;
+ PangoMatrix *matrix = pango_context_get_matrix (context);
+ double scale_factor = pango_matrix_get_font_scale_factor (matrix);
+
+ if (!pango_font_description_get_size_is_absolute(desc))
+ {
+ double dpi = pango_core_text_font_map_get_resolution (fontmap, context);
+ size *= (dpi/ppi);
+ }
+
+ return .5 + scale_factor * size;
}