summaryrefslogtreecommitdiff
path: root/pango/pangocairo-font.c
diff options
context:
space:
mode:
Diffstat (limited to 'pango/pangocairo-font.c')
-rw-r--r--pango/pangocairo-font.c24
1 files changed, 21 insertions, 3 deletions
diff --git a/pango/pangocairo-font.c b/pango/pangocairo-font.c
index c2bcc51b..02a976d8 100644
--- a/pango/pangocairo-font.c
+++ b/pango/pangocairo-font.c
@@ -676,27 +676,45 @@ get_space_extents (PangoCairoFontPrivate *cf_priv,
PangoRectangle *ink_rect,
PangoRectangle *logical_rect)
{
+ cairo_scaled_font_t *scaled_font;
const char hexdigits[] = "0123456789ABCDEF";
char c[2] = {0, 0};
int i;
double hex_width;
int width;
+ int n_chars;
/* we don't render missing spaces as hex boxes,
* so come up with some width to use. For lack
* of anything better, use average hex digit width.
*/
+ scaled_font = _pango_cairo_font_private_get_scaled_font (cf_priv);
hex_width = 0;
+ n_chars = 0;
for (i = 0 ; i < 16 ; i++)
{
cairo_text_extents_t extents;
c[0] = hexdigits[i];
- cairo_scaled_font_text_extents (_pango_cairo_font_private_get_scaled_font (cf_priv), c, &extents);
- hex_width += extents.width;
+ cairo_scaled_font_text_extents (scaled_font, c, &extents);
+ if (extents.width > 0)
+ {
+ hex_width += extents.width;
+ n_chars++;
+ }
+ }
+
+ if (n_chars == 0)
+ {
+ cairo_font_extents_t extents;
+
+ cairo_scaled_font_extents (scaled_font, &extents);
+ hex_width += extents.max_x_advance;
+ n_chars++;
}
- width = pango_units_from_double (hex_width / 16);
+
+ width = pango_units_from_double (hex_width / n_chars);
if (ink_rect)
{