# HG changeset patch # User Kenichi Handa # Date 1215589135 0 # Node ID 12587e64cfe3b5b902309f3bc0fc774bb21113ad # Parent 3892f90421a96e536b78641c3c385606f6341d34 (xfont_text_extents): Fix initial setting of metrics. diff -r 3892f90421a9 -r 12587e64cfe3 src/xfont.c --- a/src/xfont.c Wed Jul 09 07:38:38 2008 +0000 +++ b/src/xfont.c Wed Jul 09 07:38:55 2008 +0000 @@ -728,11 +728,11 @@ { XFontStruct *xfont = ((struct xfont_info *) font)->xfont; int width = 0; - int i, x; + int i, first, x; if (metrics) bzero (metrics, sizeof (struct font_metrics)); - for (i = 0, x = 0; i < nglyphs; i++) + for (i = 0, x = 0, first = 1; i < nglyphs; i++) { XChar2b char2b; static XCharStruct *pcm; @@ -743,14 +743,31 @@ pcm = xfont_get_pcm (xfont, &char2b); if (! pcm) continue; - if (metrics->lbearing > width + pcm->lbearing) - metrics->lbearing = width + pcm->lbearing; - if (metrics->rbearing < width + pcm->rbearing) - metrics->rbearing = width + pcm->rbearing; - if (metrics->ascent < pcm->ascent) - metrics->ascent = pcm->ascent; - if (metrics->descent < pcm->descent) - metrics->descent = pcm->descent; + if (first) + { + if (metrics) + { + metrics->lbearing = pcm->lbearing; + metrics->rbearing = pcm->rbearing; + metrics->ascent = pcm->ascent; + metrics->descent = pcm->descent; + } + first = 0; + } + else + { + if (metrics) + { + if (metrics->lbearing > width + pcm->lbearing) + metrics->lbearing = width + pcm->lbearing; + if (metrics->rbearing < width + pcm->rbearing) + metrics->rbearing = width + pcm->rbearing; + if (metrics->ascent < pcm->ascent) + metrics->ascent = pcm->ascent; + if (metrics->descent < pcm->descent) + metrics->descent = pcm->descent; + } + } width += pcm->width; } if (metrics)