diff options
author | Kenichi Handa <handa@m17n.org> | 1997-08-10 04:13:19 +0000 |
---|---|---|
committer | Kenichi Handa <handa@m17n.org> | 1997-08-10 04:13:19 +0000 |
commit | 50fd671043178d90b214559d98789be79be070c9 (patch) | |
tree | ccc67f97bd48240d4cc6b306ff5ff739d22a3d58 | |
parent | e7c1888041c9ded47274f3938ee21689136fa0dd (diff) | |
download | emacs-50fd671043178d90b214559d98789be79be070c9.tar.gz |
(dumpglyphs): Pay attention to
Vignore_relative_composition.
-rw-r--r-- | src/xterm.c | 31 |
1 files changed, 23 insertions, 8 deletions
diff --git a/src/xterm.c b/src/xterm.c index 8955b345140..be119e24a77 100644 --- a/src/xterm.c +++ b/src/xterm.c @@ -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) |