summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKenichi Handa <handa@m17n.org>1997-08-10 04:13:19 +0000
committerKenichi Handa <handa@m17n.org>1997-08-10 04:13:19 +0000
commit50fd671043178d90b214559d98789be79be070c9 (patch)
treeccc67f97bd48240d4cc6b306ff5ff739d22a3d58
parente7c1888041c9ded47274f3938ee21689136fa0dd (diff)
downloademacs-50fd671043178d90b214559d98789be79be070c9.tar.gz
(dumpglyphs): Pay attention to
Vignore_relative_composition.
-rw-r--r--src/xterm.c31
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)