bug-gnu-emacs
[Top][All Lists]
Advanced

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

bug#688: Arithmetic error at 'About Emacs' when --with-xft=no


From: Peter Tury
Subject: bug#688: Arithmetic error at 'About Emacs' when --with-xft=no
Date: Mon, 11 Aug 2008 23:05:15 +0200

Hi,

now it might not to be so useful, but let me note: I tried emacs -q
and set debug-on-error; then I repeated the problematic steps and
found that I see the arith-error only if I want to move the point in
the half-drawn buffer. E.g. when I pushed some arrow keys I saw in the
*Backtrace* buffer this:

Debugger entered--Lisp error: (arith-error)
  pos-visible-in-window-p(t nil t)
  line-move-partial(1 nil nil)
  line-move(1 nil nil 1)
  byte-code("Â Ã        $" [arg try-vscroll line-move nil] 5)
  next-line(1 1)
  call-interactively(next-line nil nil)

When I tried to "drag" by the mouse I got the attachment.

Moreover when I resized the whole frame, the about-emacs buffer (what
was active then) became blank (because of lack of redisplay?), but
arith-error didn't appear in the *Messages* buffer (or anywhere else)
nor the *Backtrace* buffer appeared, even if I turned on
debug-on-error previously. Is this OK?

Thanks,
P

2008/8/11 Chong Yidong <cyd@stupidchicken.com>:
>> $ ./configure --with-gif=no --with-tiff=no --with-xft=no
>> $ make bootstrap
>>
>> Now it seems I could get rid of antialiasing, but `about-emacs' fails:
>> I get "Arithmetic error" after the copyright line drawn:
>
> The arithmetic error was due to a failure of the redisplay engine to
> calculate tab widths correctly when the current font's space character
> has a width of zero.  I've fixed this, but the issue of why the font has
> zero space width remains unsolved.
>
> As a result, the tab widths in `M-x about-emacs' are now zero, which is
> an obvious regression from Emacs 22.
>
> The problem at hand is the following code in ftfont_open
> (ftfont.c:1077):
>
>    {
>      int n;
>
>      font->min_width = font->average_width = font->space_width = 0;
>      for (i = 32, n = 0; i < 127; i++)
>        if (FT_Load_Char (ft_face, i, FT_LOAD_DEFAULT) != 0)
>          {
>            int this_width = ft_face->glyph->metrics.horiAdvance >> 6;
>
>            if (this_width > 0
>                && (! font->min_width || font->min_width > this_width))
>              font->min_width = this_width;
>            if (i == 32)
>              font->space_width = this_width;
>            font->average_width += this_width;
>            n++;
>          }
>
>      if (n > 0)
>        font->average_width /= n;
>    }
>
> For some reason, this gives zero.  Handa-san, do you have any insight?
>






reply via email to

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