]> git.eshelyaron.com Git - emacs.git/commitdiff
(xfont_text_extents): Fix initial setting of metrics.
authorKenichi Handa <handa@m17n.org>
Wed, 9 Jul 2008 07:38:55 +0000 (07:38 +0000)
committerKenichi Handa <handa@m17n.org>
Wed, 9 Jul 2008 07:38:55 +0000 (07:38 +0000)
src/xfont.c

index 6d529c9b54aa10aa657da442697e97f1cbab64e3..92370d4b15d6eeaa5e6108478883e8c36d487663 100644 (file)
@@ -728,11 +728,11 @@ xfont_text_extents (font, code, nglyphs, metrics)
 {
   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 @@ xfont_text_extents (font, code, nglyphs, metrics)
       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)