- pango_font_get_glyph_extents (PANGO_FONT (font_info->pango_font),
- gstring->glyphs[i].code, &inc, &logical);
- g->lbearing = inc.x / PANGO_SCALE_TO_26_6;
- g->rbearing = (inc.x + inc.width) / PANGO_SCALE_TO_26_6;
- g->xadv = logical.width / PANGO_SCALE_TO_26_6;
- g->yadv = 0;
- g->ascent = - inc.y / PANGO_SCALE_TO_26_6;
- g->descent = (inc.height + inc.y) / PANGO_SCALE_TO_26_6;
+ if (! g->measured)
+ {
+ PangoRectangle inc, logical;
+
+ pango_font_get_glyph_extents (PANGO_FONT (font_info->pango_font),
+ gstring->glyphs[i].code, &inc, &logical);
+ g->lbearing = inc.x / PANGO_SCALE_TO_26_6;
+ g->rbearing = (inc.x + inc.width) / PANGO_SCALE_TO_26_6;
+ g->xadv = logical.width / PANGO_SCALE_TO_26_6;
+ g->yadv = 0;
+ g->ascent = - inc.y / PANGO_SCALE_TO_26_6;
+ g->descent = (inc.height + inc.y) / PANGO_SCALE_TO_26_6;
+ g->measured = 1;
+ }