[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: 23.0.60; Deja vu font breaks mouse-face highlighting in Gnus

From: Stephen Berman
Subject: Re: 23.0.60; Deja vu font breaks mouse-face highlighting in Gnus
Date: Sun, 17 Feb 2008 14:07:55 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/23.0.60 (gnu/linux)

On Sun, 17 Feb 2008 01:40:58 +0100 address@hidden (Johan Bockgård) wrote:

> Stephen Berman <address@hidden> writes:
>> Other Dejavu fonts also show the gap in highlighting, but the range of
>> susceptible strings seems to be less than with Dejavu Sans Mono.  I
>> have tried using a number of other fonts but so far haven't found any
>> others that show the display problem.
> The problem happens for characters that stick out of their box.  It is
> most noticeable with an italic font.
> E.g. try
>     (font-lock-mode 0)
>     (insert (propertize "XXXXXX" 'face 'italic 'mouse-face 'highlight))

I had also tried an italic Dejavu and it showed the problem but, as I
said, not with as many strings; here's a case in point:

(progn (font-lock-mode 0)
  (insert (propertize "Re: 23.0.60" 'mouse-face 'highlight))
  (insert (propertize "Re: 23.0.60" 'face 'italic 'mouse-face 'highlight)))

I see a gap in mouse-face highlighting when the cursor is over the
unitalicized "R" and "2" but not when it is over the italicized ones.
Do you see that too?  This seems contrary to you characterization of the
triggering conditions, i.e. characters that stick out of their box, but
I do not know the properties of the font nor understand the code you
pointed to, so maybe it is no contradiction.

> The responsible code is this part in `draw_glyphs':
>    /* If there are any glyphs with lbearing < 0 or rbearing > width in
>       the row, redraw some glyphs in front or following the glyph
>       strings built above.  */
>   if (head && !overlaps && row->contains_overlapping_glyphs_p)
>      {
>        ...

How did you figure this out?  Do you just know the code well and realize
that draw_glyphs was involved, or did you arrive there by using gdb?  If
the latter, could you tell me how you did it?  That might help me make
more useful bug reports and perhaps even suggest bug fixes.

Steve Berman

reply via email to

[Prev in Thread] Current Thread [Next in Thread]