Subject: bug#21500: 24.5; Graphical glitch with display property lines in GUI Emacs

From: Vasilij Schneidermann <[email-masked]>
Date: Thu, 17 Sep 2015 08:34:16 +0200

> That's the default Emacs implementation of cursor display on GUI
> frames: we erase the character at point, then draw that character
> again with cursor colors (normally, in reverse video).  For
> "white-space" characters, such as TAB and the stretch of white space
> created by the 'space' display property, Emacs by default draws the
> cursor using the width of the font's SPC character.  And that's
> exactly what you saw.

Interesting.  Now that I've checked again, it's indeed that a terminal
frame does not show any reverse video effects at all with the cursor, so
that explains this display oddity.

> Isn't that what you originally expected to see?

I didn't expect anything specific, just that in any case the entire line
is legible.  The difference between the terminal and GUI frame did stump
me.

> I don't understand: how does "invisible" come into play here?  Are you
> talking about faces whose foreground and background are the same color?

Yes, if a face has the same color for fore- and background, it's
practically invisible.  If you've got any more specific term for this
that is different from invisible as in the special property, I'd be
interested in knowing it.

> Yes.  But the face needs to have that as part of its definition.

OK, which face would it be in this case, the cursor or the line face?

> Anyway, I see no relation between what you were wondering about and
> the effect of cursor display that I believe was the trigger for this
> bug report.  If you have questions about face rendering, I suggest to
> ask them on emacs-devel.

Well, I do.  If putting the cursor on a special space has a different
effect in GUI than in textual frames, I'd like to know what's causing it
and whether there is any way of fixing it.

> Can we now close the bug?

I still don't have a tangible solution at hand for fixing this display
glitch.  Altering `x-stretch-cursor` is a workaround, but not as good as
altering, say, the line face to be displayed under every condition by
altering its definition.