I've just fixed a bug in my X server, so that it correctly displays
characters whose ink extends outside the font ascent/descent.
Of course, this has now raised the question of how XEmacs should deal
with such characters.
At present, it uses (I say this based on observation, not source
inspection) the font ascent to determine the line spacing.
Hence, if I write (where Acircumflex denotes the appropriate
character)
foo
Acircumflex
in -adobe-courier-medium-r-normal--12-*-*-*-m-*-iso8859-1
then the top of the circumflex protrudes into the territory of the f.
(The font_ascent is 10, but the character is 11 pixels high.)
So when I delete the Acircumflex, the top of the circumflex is left
behind, creating an annoying fly speck. (As a side issue, XEmacs is
already very prone to fly specks, even without this rather perverse
case. Are there redisplay experts who are working on it, or should I
think about becoming a redisplay expert---I hope not the latter, since
the redisplay code is the most frightening thing I've seen since gcc!)
What should XEmacs do? I can see two obvious options:
(1) XEmacs should treat outsize characters as it treats any other
random glyph, and increase the line height accordingly.
(2) XEmacs should continue to use the font_ascent to determine line
spacing, and redisplay needs to redisplay the area into which an
outsize character extends.
Leaving aside the fact that (1) is much easier than (2), it's not
clear to me what the *right* thing to do is. Anybody feel like
worrying about it?
Show replies by date