diff options
Diffstat (limited to 'pango')
-rw-r--r-- | pango/pango-types.h | 26 | ||||
-rw-r--r-- | pango/pangocairo-font.c | 8 |
2 files changed, 30 insertions, 4 deletions
diff --git a/pango/pango-types.h b/pango/pango-types.h index f18225ba..ed86f699 100644 --- a/pango/pango-types.h +++ b/pango/pango-types.h @@ -107,6 +107,32 @@ typedef guint32 PangoGlyph; */ /** + * PANGO_UNITS_FLOOR: + * @d: a dimension in Pango units. + * + * Rounds a dimension down to whole device units, but does not + * convert it to device units. + * + * Return value: rounded down dimension in Pango units. + * Since: 1.50 + */ +#define PANGO_UNITS_FLOOR(d) \ + ((d) & ~(PANGO_SCALE - 1)) + +/** + * PANGO_UNITS_CEIL: + * @d: a dimension in Pango units. + * + * Rounds a dimension up to whole device units, but does not + * convert it to device units. + * + * Return value: rounded up dimension in Pango units. + * Since: 1.50 + */ +#define PANGO_UNITS_CEIL(d) \ + (((d) + (PANGO_SCALE - 1)) & ~(PANGO_SCALE - 1)) + +/** * PANGO_UNITS_ROUND: * @d: a dimension in Pango units. * diff --git a/pango/pangocairo-font.c b/pango/pangocairo-font.c index 597a320d..c2bcc51b 100644 --- a/pango/pangocairo-font.c +++ b/pango/pangocairo-font.c @@ -817,13 +817,13 @@ _pango_cairo_font_private_glyph_extents_cache_init (PangoCairoFontPrivate *cf_pr if (cf_priv->is_hinted) { if (cf_priv->font_extents.y < 0) - cf_priv->font_extents.y = PANGO_UNITS_ROUND (cf_priv->font_extents.y - PANGO_SCALE/2); + cf_priv->font_extents.y = PANGO_UNITS_FLOOR (cf_priv->font_extents.y); else - cf_priv->font_extents.y = PANGO_UNITS_ROUND (cf_priv->font_extents.y + PANGO_SCALE/2); + cf_priv->font_extents.y = PANGO_UNITS_CEIL (cf_priv->font_extents.y); if (cf_priv->font_extents.height < 0) - cf_priv->font_extents.height = PANGO_UNITS_ROUND (cf_priv->font_extents.height - PANGO_SCALE/2); + cf_priv->font_extents.height = PANGO_UNITS_FLOOR (extents.ascender) - PANGO_UNITS_CEIL (extents.descender); else - cf_priv->font_extents.height = PANGO_UNITS_ROUND (cf_priv->font_extents.height + PANGO_SCALE/2); + cf_priv->font_extents.height = PANGO_UNITS_CEIL (extents.ascender) - PANGO_UNITS_FLOOR (extents.descender); } if (PANGO_GRAVITY_IS_IMPROPER (cf_priv->gravity)) |