[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Zero height line causing arithmetic errors
From: |
Dan Nicolaescu |
Subject: |
Re: Zero height line causing arithmetic errors |
Date: |
Wed, 18 Jun 2008 18:19:21 -0700 |
Kenichi Handa <address@hidden> writes:
> In article <address@hidden>, Stefan Monnier <address@hidden> writes:
>
> > My MPC.el package uses an overlay placed at the end of a line with an
> > after-string of #("\n" 0 1 (face (:height 0.05 :inverse-video t)))
> > in order to place a horizontal line in the display.
>
> > In Emacs-22, this worked fine (except the line was a bit thicker than
> > 0.05 times the base line height). In Emacs-CVS until recently this
> > worked except that the line was full-height (i.e. 13 pixels in my case).
> > Recently, it has started to cause more problems because now
> > FRAME_SMALLEST_FONT_HEIGHT returns 0, and that value is used at 2 places
> > in the divisor position.
>
> > I guess the 0 is because 13 pixels (default font height) * 0.05 -> 0.65
> > pixels which are truncated to 0.
>
> > I currently use the patch below, which makes it all work again (tho
> > still with the problem that the 0.05 isn't taken into account and line
> > line is 13 pixel think), but I suspect it's not the right place to fix
> > it,
>
> For the problem of FRAME_SMALLEST_FONT_HEIGHT being set to
> 0, I installed the similar change.
>
> And, for the problem of too tall line-height, I found the
> culprit is XftTextExtents8. When the pixelsize of a font is
> less than 5 or so, for some font, it returns strange values
> in `extents' argument. For instance, with the attached
> test problem, I get this result:
>
> % ./xfttest 'bitstream vera sans mono'
> pixelsize=9, ascent=8, descent=2
> pixelsize=8, ascent=7, descent=2
> pixelsize=7, ascent=6, descent=2
> pixelsize=6, ascent=5, descent=2
> pixelsize=5, ascent=4, descent=2
> pixelsize=4, ascent=4, descent=1
> pixelsize=3, ascent=3, descent=1
> pixelsize=2, ascent=2, descent=1
> pixelsize=1, ascent=1, descent=1
> pixelsize=0, ascent=1, descent=1
> % ./xfttest 'dejavu sans mono'
> pixelsize=9, ascent=8, descent=2
> pixelsize=8, ascent=7, descent=2
> pixelsize=7, ascent=6, descent=2
> pixelsize=6, ascent=5, descent=1
> pixelsize=5, ascent=5, descent=1
> pixelsize=4, ascent=5, descent=2 <-- increasing!
> pixelsize=3, ascent=4, descent=4
> pixelsize=2, ascent=5, descent=5
> pixelsize=1, ascent=5, descent=5
> pixelsize=0, ascent=5, descent=5
This works fine for me on Fedora 9:
./xfttest 'dejavu sans mono'
pixelsize=9, ascent=8, descent=2
pixelsize=8, ascent=8, descent=2
pixelsize=7, ascent=6, descent=2
pixelsize=6, ascent=5, descent=2
pixelsize=5, ascent=4, descent=2
pixelsize=4, ascent=4, descent=1
pixelsize=3, ascent=3, descent=1
pixelsize=2, ascent=2, descent=1
pixelsize=1, ascent=1, descent=1
pixelsize=0, ascent=1, descent=1