]> git.eshelyaron.com Git - emacs.git/commitdiff
(dumpglyphs): Pay attention to
authorKenichi Handa <handa@m17n.org>
Sun, 10 Aug 1997 04:13:19 +0000 (04:13 +0000)
committerKenichi Handa <handa@m17n.org>
Sun, 10 Aug 1997 04:13:19 +0000 (04:13 +0000)
Vignore_relative_composition.

src/xterm.c

index 8955b345140e0c84bed3066064b63ffb6c1c1745..be119e24a77c62c5d46ecfe5a69fc39d519edca0 100644 (file)
@@ -1013,17 +1013,32 @@ dumpglyphs (f, left, top, gp, n, hl, just_foreground, cmpcharp)
                    if (relative_compose)
                      {
                        pcm = PER_CHAR_METRIC (font, x_2byte_buffer + i);
-                       if (- pcm->descent >= relative_compose)
+                       if (NILP (Vignore_relative_composition)
+                           || NILP (Faref (Vignore_relative_composition,
+                                           make_number (cmpcharp->glyph[gidx]))))
                          {
-                           /* Draw above the current glyphs.  */
-                           y_offset = highest + pcm->descent;
-                           highest += pcm->ascent + pcm->descent;
+                           if (- pcm->descent >= relative_compose)
+                             {
+                               /* Draw above the current glyphs.  */
+                               y_offset = highest + pcm->descent;
+                               highest += pcm->ascent + pcm->descent;
+                             }
+                           else if (pcm->ascent <= 0)
+                             {
+                               /* Draw beneath the current glyphs.  */
+                               y_offset = lowest - pcm->ascent;
+                               lowest -= pcm->ascent + pcm->descent;
+                             }
                          }
-                       else if (pcm->ascent <= 0)
+                       else
                          {
-                           /* Draw beneath the current glyphs.  */
-                           y_offset = lowest - pcm->ascent;
-                           lowest -= pcm->ascent + pcm->descent;
+                           /* Draw the glyph at normal position.  If
+                               it sticks out of HIGHEST or LOWEST,
+                               update them appropriately.  */
+                           if (pcm->ascent > highest)
+                             highest = pcm->ascent;
+                           else if (- pcm->descent < lowest)
+                             lowest = - pcm->descent;
                          }
                      }
                    else if (cmpcharp->cmp_rule)