GNU bug report logs - #1990
23.0.60; Emacs trying too hard to find fonts that don't exist

Previous Next

Package: emacs;

Reported by: Jason Rumney <jasonr <at> gnu.org>

Date: Thu, 22 Jan 2009 13:30:04 UTC

Severity: normal

Done: Chong Yidong <cyd <at> stupidchicken.com>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 1990 in the body.
You can then email your comments to 1990 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-submit-list <at> lists.donarmstrong.com, Emacs Bugs <bug-gnu-emacs <at> gnu.org>:
bug#1990; Package emacs. (Thu, 22 Jan 2009 13:30:04 GMT) Full text and rfc822 format available.

Acknowledgement sent to Jason Rumney <jasonr <at> gnu.org>:
New bug report received and forwarded. Copy sent to Emacs Bugs <bug-gnu-emacs <at> gnu.org>. (Thu, 22 Jan 2009 13:30:04 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> emacsbugs.donarmstrong.com (full text, mbox):

From: Jason Rumney <jasonr <at> gnu.org>
To: emacs-pretest-bug <emacs-pretest-bug <at> gnu.org>
Subject: 23.0.60; Emacs trying too hard to find fonts that don't exist
Date: Thu, 22 Jan 2009 21:22:32 +0800
Please write in English if possible, because the Emacs maintainers
usually do not have translators to read other languages for them.

Your bug report will be posted to the emacs-pretest-bug <at> gnu.org mailing 
list.

Please describe exactly what actions triggered the bug
and the precise symptoms of the bug:

If fonts are not installed for some characters, then Emacs keeps trying 
to find fonts for them every time those characters are redisplayed. The 
following excerpt from font-log is with the xft font backend on 
GNU/Linux where the search is quick, thus not noticeable, but on Windows 
the search for fonts is expensive, so redisplay takes a couple of 
seconds. I have cut the end off, as the full font-log is long, but you 
can see from the first two font-for entries that Emacs is trying twice 
for the same character (and it tries again many times further down the log).

font for: (4121 . mule-unicode-0100-24ff)
list: -mutt-clearlyu-*-iso10646-1
list: -gnu-unifont-*-iso10646-1
list: -bitstream-Bitstream Vera Sans Mono-*-gb18030*-*
list: -*-Bitstream Vera Sans Mono-*-gb18030*-*
list: -bitstream-*-gb18030*-*
list: -*-gb18030*-*
list: -bitstream-Bitstream Vera Sans Mono-*-ksc5601.1987*-*
list: -*-Bitstream Vera Sans Mono-*-ksc5601.1987*-*
list: -bitstream-*-ksc5601.1987*-*
list: -*-ksc5601.1987*-*
list: -bitstream-Bitstream Vera Sans Mono-*-cns11643.1992-1
list: -*-Bitstream Vera Sans Mono-*-cns11643.1992-1
list: -bitstream-*-cns11643.1992-1
list: -*-cns11643.1992-1
list: -bitstream-Bitstream Vera Sans Mono-*-cns11643.1992-4
list: -*-Bitstream Vera Sans Mono-*-cns11643.1992-4
list: -bitstream-*-cns11643.1992-4
list: -*-cns11643.1992-4
list: -bitstream-Bitstream Vera Sans Mono-*-cns11643.1992-5
list: -*-Bitstream Vera Sans Mono-*-cns11643.1992-5
list: -bitstream-*-cns11643.1992-5
list: -*-cns11643.1992-5
list: -bitstream-Bitstream Vera Sans Mono-*-cns11643.1992-6
list: -*-Bitstream Vera Sans Mono-*-cns11643.1992-6
list: -bitstream-*-cns11643.1992-6
list: -*-cns11643.1992-6
list: -bitstream-Bitstream Vera Sans Mono-*-cns11643.1992-7
list: -*-Bitstream Vera Sans Mono-*-cns11643.1992-7
list: -bitstream-*-cns11643.1992-7
list: -*-cns11643.1992-7
font for: (4121 . mule-unicode-0100-24ff)
list: -mutt-clearlyu-*-iso10646-1
list: -gnu-unifont-*-iso10646-1
list: -bitstream-Bitstream Vera Sans Mono-*-gb18030*-*
list: -*-Bitstream Vera Sans Mono-*-gb18030*-*
list: -bitstream-*-gb18030*-*
list: -*-gb18030*-*
list: -bitstream-Bitstream Vera Sans Mono-*-ksc5601.1987*-*
list: -*-Bitstream Vera Sans Mono-*-ksc5601.1987*-*
list: -bitstream-*-ksc5601.1987*-*
list: -*-ksc5601.1987*-*
list: -bitstream-Bitstream Vera Sans Mono-*-cns11643.1992-1
list: -*-Bitstream Vera Sans Mono-*-cns11643.1992-1
list: -bitstream-*-cns11643.1992-1
list: -*-cns11643.1992-1
list: -bitstream-Bitstream Vera Sans Mono-*-cns11643.1992-4
list: -*-Bitstream Vera Sans Mono-*-cns11643.1992-4
list: -bitstream-*-cns11643.1992-4
list: -*-cns11643.1992-4
list: -bitstream-Bitstream Vera Sans Mono-*-cns11643.1992-5
list: -*-Bitstream Vera Sans Mono-*-cns11643.1992-5
list: -bitstream-*-cns11643.1992-5
list: -*-cns11643.1992-5
list: -bitstream-Bitstream Vera Sans Mono-*-cns11643.1992-6
list: -*-Bitstream Vera Sans Mono-*-cns11643.1992-6
list: -bitstream-*-cns11643.1992-6
list: -*-cns11643.1992-6
list: -bitstream-Bitstream Vera Sans Mono-*-cns11643.1992-7
list: -*-Bitstream Vera Sans Mono-*-cns11643.1992-7
list: -bitstream-*-cns11643.1992-7
list: -*-cns11643.1992-7


To reproduce: C-h h
On my system, there are boxes displayed for Sinhala, Tibetan, Khmer and 
Burmese.
Scroll down so that the first set of boxes disappears just off the top 
of the window.
M-: (setq font-log nil)
Scroll back up
M-x font-show-log

If Emacs crashed, and you have the Emacs process in the gdb debugger,
please include the output from the following gdb commands:
   `bt full' and `xbacktrace'.
If you would like to further debug the crash, please read the file
/home/jasonr/emacs/etc/DEBUG for instructions.


In GNU Emacs 23.0.60.1 (x86_64-unknown-linux-gnu, GTK+ Version 2.12.11)
of 2008-12-28 on wanchan.jasonrumney.net
Windowing system distributor `Colin Harrison', version 11.0.60900031
Important settings:
 value of $LC_ALL: nil
 value of $LC_COLLATE: nil
 value of $LC_CTYPE: nil
 value of $LC_MESSAGES: nil
 value of $LC_MONETARY: nil
 value of $LC_NUMERIC: nil
 value of $LC_TIME: nil
 value of $LANG: en_GB.UTF-8
 value of $XMODIFIERS: nil
 locale-coding-system: utf-8-unix
 default-enable-multibyte-characters: t

Major mode: Help

Minor modes in effect:
 tooltip-mode: t
 tool-bar-mode: t
 mouse-wheel-mode: t
 menu-bar-mode: t
 file-name-shadow-mode: t
 global-font-lock-mode: t
 font-lock-mode: t
 blink-cursor-mode: t
 global-auto-composition-mode: t
 auto-composition-mode: t
 auto-encryption-mode: t
 auto-compression-mode: t
 line-number-mode: t
 transient-mark-mode: t
 view-mode: t

Recent input:
<help-echo> <help-echo> <help-echo> <help-echo> <escape>
x C-g C-h h <help-echo> <next> <prior> <down> <down>
<mouse-1> <mouse-1> <mouse-1> <mouse-1> <mouse-1> <mouse-1>
<mouse-1> <mouse-1> <mouse-1> <mouse-1> <mouse-1> <mouse-1>
<mouse-1> <mouse-1> <mouse-1> <mouse-1> <mouse-1> <mouse-1>
<mouse-1> <mouse-1> <mouse-1> <mouse-1> <mouse-1> <mouse-1>
<mouse-1> <mouse-1> <mouse-1> <mouse-1> <mouse-1> <mouse-1>
<mouse-1> <mouse-1> <mouse-1> <mouse-1> <mouse-1> <mouse-1>
<mouse-1> <mouse-1> <mouse-1> <mouse-1> <mouse-1> <mouse-1>
<mouse-1> <mouse-1> <mouse-1> <mouse-1> <mouse-1> <mouse-1>
<mouse-1> <mouse-1> <mouse-1> <mouse-1> <mouse-1> <mouse-1>
<mouse-1> <mouse-1> <mouse-1> <mouse-1> <mouse-1> <mouse-1>
<mouse-1> <mouse-1> <mouse-1> <mouse-1> <mouse-1> <mouse-1>
<mouse-1> <mouse-1> <mouse-1> <mouse-1> <mouse-1> <mouse-1>
<mouse-1> <mouse-1> <mouse-1> <mouse-1> <mouse-1> <mouse-1>
<mouse-1> <mouse-1> <mouse-1> <mouse-1> <mouse-1> <mouse-1>
<mouse-1> <mouse-1> <mouse-1> <mouse-1> <mouse-1> <mouse-1>
<mouse-1> <mouse-1> <mouse-1> <mouse-1> <mouse-1> <mouse-1>
<mouse-1> <mouse-1> <mouse-1> <mouse-1> <mouse-1> <mouse-1>
<mouse-1> <mouse-1> <mouse-1> <escape> : ( s e t q
SPC f o n t - l o g SPC n i l ) <return> <prior> <escape>
x f o n t - s h <tab> <return> <down-mouse-1> <mouse-movement>
<mouse-movement> <mouse-movement> <mouse-movement>
<mouse-movement> <drag-mouse-1> <down-mouse-1> <mouse-1>
<prior> <prior> <up> <up> <up> <up> <up> <up> <up>
<up> <up> <up> <up> <up> <up> <up> <up> <up> <up> C-@
<down> <down> <down> <down> <down> <down> <down> <down>
<down> <down> <down> <down> <down> <down> <down> <down>
<down> <down> <down> <down> <down> <down> <down> <down>
<down> <down> <down> <down> <down> <down> <down> <down>
<down> <down> <down> <down> <down> <down> <down> <down>
<down> <down> <down> <down> <down> <down> <down> <down>
<down> <down> <down> <down> <down> <down> <down> <down>
<down> <down> <down> <down> <down> <down> <escape>
w <help-echo> <help-echo> <help-echo> <help-echo> <escape>
x r e p o r t - e m a <tab> <return>

Recent messages:
For information about GNU Emacs and the GNU system, type C-h C-a.
Quit
Loading vc-cvs...done
View mode: type C-h for help, h for commands, q to quit.
nil
Mark activated
Saved text from "font for: (4121 . mule-unicode-0100-24ff"





Information forwarded to bug-submit-list <at> lists.donarmstrong.com, Emacs Bugs <bug-gnu-emacs <at> gnu.org>:
bug#1990; Package emacs. (Fri, 23 Jan 2009 05:10:03 GMT) Full text and rfc822 format available.

Acknowledgement sent to Chong Yidong <cyd <at> stupidchicken.com>:
Extra info received and forwarded to list. Copy sent to Emacs Bugs <bug-gnu-emacs <at> gnu.org>. (Fri, 23 Jan 2009 05:10:03 GMT) Full text and rfc822 format available.

Message #10 received at 1990 <at> emacsbugs.donarmstrong.com (full text, mbox):

From: Chong Yidong <cyd <at> stupidchicken.com>
To: Jason Rumney <jasonr <at> gnu.org>
Cc: Kenichi Handa  <handa <at> m17n.org>, 1990 <at> debbugs.gnu.org
Subject: Re: 23.0.60; Emacs trying too hard to find fonts that don't exist
Date: Fri, 23 Jan 2009 00:04:09 -0500
> If fonts are not installed for some characters, then Emacs keeps
> trying to find fonts for them every time those characters are
> redisplayed. The following excerpt from font-log is with the xft font
> backend on GNU/Linux where the search is quick, thus not noticeable,
> but on Windows the search for fonts is expensive, so redisplay takes a
> couple of seconds. I have cut the end off, as the full font-log is
> long, but you can see from the first two font-for entries that Emacs
> is trying twice for the same character (and it tries again many times
> further down the log).

At the end of fontset_font (fontset.c:699), there is the following code:

  /* Remeber that we have no font for C.  */
  FONTSET_SET (fontset, make_number (c), Qt);

  return Qnil;

However, there are several other places in that function that return
with a Qnil, without doing this FONTSET_SET.  Do matters improve if we
do the same FONTSET_SET call before returning?




Information forwarded to bug-submit-list <at> lists.donarmstrong.com, Emacs Bugs <bug-gnu-emacs <at> gnu.org>:
bug#1990; Package emacs. (Fri, 23 Jan 2009 14:10:03 GMT) Full text and rfc822 format available.

Acknowledgement sent to Jason Rumney <jasonr <at> gnu.org>:
Extra info received and forwarded to list. Copy sent to Emacs Bugs <bug-gnu-emacs <at> gnu.org>. (Fri, 23 Jan 2009 14:10:03 GMT) Full text and rfc822 format available.

Message #15 received at 1990 <at> emacsbugs.donarmstrong.com (full text, mbox):

From: Jason Rumney <jasonr <at> gnu.org>
To: Chong Yidong <cyd <at> stupidchicken.com>
Cc: Kenichi Handa <handa <at> m17n.org>, 1990 <at> debbugs.gnu.org
Subject: Re: 23.0.60; Emacs trying too hard to find fonts that don't exist
Date: Fri, 23 Jan 2009 22:00:51 +0800
Chong Yidong wrote:
> At the end of fontset_font (fontset.c:699), there is the following code:
>
>   /* Remeber that we have no font for C.  */
>   FONTSET_SET (fontset, make_number (c), Qt);
>
>   return Qnil;
>
> However, there are several other places in that function that return
> with a Qnil, without doing this FONTSET_SET.  Do matters improve if we
> do the same FONTSET_SET call before returning?
>   

It doesn't seem to help much, if at all.

Looking at those other locations, nil is only returned when some other 
function returns t, indicating that it already remembers that we have no 
font.





Information forwarded to bug-submit-list <at> lists.donarmstrong.com, Emacs Bugs <bug-gnu-emacs <at> gnu.org>:
bug#1990; Package emacs. (Sat, 24 Jan 2009 13:35:03 GMT) Full text and rfc822 format available.

Acknowledgement sent to Juanma Barranquero <lekktu <at> gmail.com>:
Extra info received and forwarded to list. Copy sent to Emacs Bugs <bug-gnu-emacs <at> gnu.org>. (Sat, 24 Jan 2009 13:35:03 GMT) Full text and rfc822 format available.

Message #20 received at 1990 <at> emacsbugs.donarmstrong.com (full text, mbox):

From: Juanma Barranquero <lekktu <at> gmail.com>
To: Jason Rumney <jasonr <at> gnu.org>
Cc: 1990 <at> debbugs.gnu.org
Subject: Re: bug#1990: 23.0.60; Emacs trying too hard to find fonts that don't 
	exist
Date: Sat, 24 Jan 2009 14:28:59 +0100
On Thu, Jan 22, 2009 at 14:22, Jason Rumney <jasonr <at> gnu.org> wrote:

> If fonts are not installed for some characters, then Emacs keeps trying to
> find fonts for them every time those characters are redisplayed.

Is this bug related to #1952, "23.0.60[W32-Mingw];opening etc/HELLO is
slower than before"?

    Juanma




Information forwarded to bug-submit-list <at> lists.donarmstrong.com, Emacs Bugs <bug-gnu-emacs <at> gnu.org>:
bug#1990; Package emacs. (Sat, 24 Jan 2009 14:10:05 GMT) Full text and rfc822 format available.

Acknowledgement sent to Jason Rumney <jasonr <at> gnu.org>:
Extra info received and forwarded to list. Copy sent to Emacs Bugs <bug-gnu-emacs <at> gnu.org>. (Sat, 24 Jan 2009 14:10:05 GMT) Full text and rfc822 format available.

Message #25 received at 1990 <at> emacsbugs.donarmstrong.com (full text, mbox):

From: Jason Rumney <jasonr <at> gnu.org>
To: Juanma Barranquero <lekktu <at> gmail.com>
Cc: 1990 <at> debbugs.gnu.org
Subject: Re: bug#1990: 23.0.60; Emacs trying too hard to find fonts that don't
 	exist
Date: Sat, 24 Jan 2009 22:02:09 +0800
Juanma Barranquero wrote:
> On Thu, Jan 22, 2009 at 14:22, Jason Rumney <jasonr <at> gnu.org> wrote:
>   
>> If fonts are not installed for some characters, then Emacs keeps trying to
>> find fonts for them every time those characters are redisplayed.
>>     
>
> Is this bug related to #1952, "23.0.60[W32-Mingw];opening etc/HELLO is
> slower than before"?
>   

Probably.





Information forwarded to bug-submit-list <at> lists.donarmstrong.com, Emacs Bugs <bug-gnu-emacs <at> gnu.org>:
bug#1990; Package emacs. (Sat, 24 Jan 2009 19:55:04 GMT) Full text and rfc822 format available.

Acknowledgement sent to Chong Yidong <cyd <at> stupidchicken.com>:
Extra info received and forwarded to list. Copy sent to Emacs Bugs <bug-gnu-emacs <at> gnu.org>. (Sat, 24 Jan 2009 19:55:04 GMT) Full text and rfc822 format available.

Message #30 received at 1990 <at> emacsbugs.donarmstrong.com (full text, mbox):

From: Chong Yidong <cyd <at> stupidchicken.com>
To: Jason Rumney <jasonr <at> gnu.org>
Cc: Kenichi Handa <handa <at> m17n.org>, 1990 <at> debbugs.gnu.org
Subject: Re: 23.0.60; Emacs trying too hard to find fonts that don't exist
Date: Sat, 24 Jan 2009 14:47:16 -0500
Jason Rumney <jasonr <at> gnu.org> writes:

>> However, there are several other places in that function that return
>> with a Qnil, without doing this FONTSET_SET.  Do matters improve if
>> we do the same FONTSET_SET call before returning?
>
> It doesn't seem to help much, if at all.

How about something like this?  Does it improve performance noticeably?

*** trunk/src/fontset.c.~1.150.~	2009-01-08 06:46:23.000000000 -0500
--- trunk/src/fontset.c	2009-01-24 14:44:09.000000000 -0500
***************
*** 660,665 ****
--- 660,668 ----
    Lisp_Object rfont_def;
    Lisp_Object base_fontset;
  
+   if (EQ (Fchar_table_range (fontset, make_number (c)), Qt))
+     return Qnil;
+ 
    /* Try a font-group of FONTSET. */
    rfont_def = fontset_find_font (fontset, c, face, id, 0);
    if (VECTORP (rfont_def))





Information forwarded to bug-submit-list <at> lists.donarmstrong.com, Emacs Bugs <bug-gnu-emacs <at> gnu.org>:
bug#1990; Package emacs. (Sat, 24 Jan 2009 22:00:03 GMT) Full text and rfc822 format available.

Acknowledgement sent to Juanma Barranquero <lekktu <at> gmail.com>:
Extra info received and forwarded to list. Copy sent to Emacs Bugs <bug-gnu-emacs <at> gnu.org>. (Sat, 24 Jan 2009 22:00:04 GMT) Full text and rfc822 format available.

Message #35 received at 1990 <at> emacsbugs.donarmstrong.com (full text, mbox):

From: Juanma Barranquero <lekktu <at> gmail.com>
To: Chong Yidong <cyd <at> stupidchicken.com>
Cc: Jason Rumney <jasonr <at> gnu.org>, Kenichi Handa <handa <at> m17n.org>,
        1990 <at> debbugs.gnu.org
Subject: Re: bug#1990: 23.0.60; Emacs trying too hard to find fonts that don't 
	exist
Date: Sat, 24 Jan 2009 22:50:04 +0100
On Sat, Jan 24, 2009 at 20:47, Chong Yidong <cyd <at> stupidchicken.com> wrote:

> How about something like this?  Does it improve performance noticeably?

For me, it fixes #1952: moving in etc/HELLO is again fast.

It does not fix #1990, though. Emacs is still repeatedly trying to
find fonts for characters that do not have one:

9 matches for "1501" in buffer: *Help*
     28:font for: (1501 . hebrew-iso8859-8)
    218:font for: (1501 . mule-unicode-0100-24ff)
    299:font for: (1501 . hebrew-iso8859-8)
    335:font for: (1501 . hebrew-iso8859-8)
    525:font for: (1501 . mule-unicode-0100-24ff)
    606:font for: (1501 . hebrew-iso8859-8)
    642:font for: (1501 . hebrew-iso8859-8)
    832:font for: (1501 . mule-unicode-0100-24ff)

    Juanma




Information forwarded to bug-submit-list <at> lists.donarmstrong.com, Emacs Bugs <bug-gnu-emacs <at> gnu.org>:
bug#1990; Package emacs. (Sat, 24 Jan 2009 22:00:05 GMT) Full text and rfc822 format available.

Acknowledgement sent to Chong Yidong <cyd <at> stupidchicken.com>:
Extra info received and forwarded to list. Copy sent to Emacs Bugs <bug-gnu-emacs <at> gnu.org>. (Sat, 24 Jan 2009 22:00:05 GMT) Full text and rfc822 format available.

Message #40 received at 1990 <at> emacsbugs.donarmstrong.com (full text, mbox):

From: Chong Yidong <cyd <at> stupidchicken.com>
To: Juanma Barranquero <lekktu <at> gmail.com>
Cc: Jason Rumney <jasonr <at> gnu.org>, Kenichi Handa <handa <at> m17n.org>,
        1990 <at> debbugs.gnu.org
Subject: Re: bug#1990: 23.0.60; Emacs trying too hard to find fonts that don't  exist
Date: Sat, 24 Jan 2009 16:55:52 -0500
Juanma Barranquero <lekktu <at> gmail.com> writes:

> For me, it fixes #1952: moving in etc/HELLO is again fast.
>
> It does not fix #1990, though. Emacs is still repeatedly trying to
> find fonts for characters that do not have one:
>
> 9 matches for "1501" in buffer: *Help*
>      28:font for: (1501 . hebrew-iso8859-8)

That log message is emitted just before calling fontset_font (which is
where we would check whether fonts are known not to exist).




Information forwarded to bug-submit-list <at> lists.donarmstrong.com, Emacs Bugs <bug-gnu-emacs <at> gnu.org>:
bug#1990; Package emacs. (Sat, 24 Jan 2009 22:15:03 GMT) Full text and rfc822 format available.

Acknowledgement sent to Juanma Barranquero <lekktu <at> gmail.com>:
Extra info received and forwarded to list. Copy sent to Emacs Bugs <bug-gnu-emacs <at> gnu.org>. (Sat, 24 Jan 2009 22:15:03 GMT) Full text and rfc822 format available.

Message #45 received at 1990 <at> emacsbugs.donarmstrong.com (full text, mbox):

From: Juanma Barranquero <lekktu <at> gmail.com>
To: Chong Yidong <cyd <at> stupidchicken.com>
Cc: Jason Rumney <jasonr <at> gnu.org>, Kenichi Handa <handa <at> m17n.org>,
        1990 <at> debbugs.gnu.org
Subject: Re: bug#1990: 23.0.60; Emacs trying too hard to find fonts that don't 
	exist
Date: Sat, 24 Jan 2009 23:06:34 +0100
On Sat, Jan 24, 2009 at 22:55, Chong Yidong <cyd <at> stupidchicken.com> wrote:

> That log message is emitted just before calling fontset_font (which is
> where we would check whether fonts are known not to exist).

OK.

Then, please install your change. It's a big improvement.

    Juanma




Reply sent to Chong Yidong <cyd <at> stupidchicken.com>:
You have taken responsibility. (Sat, 24 Jan 2009 22:50:05 GMT) Full text and rfc822 format available.

Notification sent to Jason Rumney <jasonr <at> gnu.org>:
bug acknowledged by developer. (Sat, 24 Jan 2009 22:50:05 GMT) Full text and rfc822 format available.

Message #50 received at 1990-done <at> emacsbugs.donarmstrong.com (full text, mbox):

From: Chong Yidong <cyd <at> stupidchicken.com>
To: Juanma Barranquero <lekktu <at> gmail.com>
Cc: Jason Rumney <jasonr <at> gnu.org>, Kenichi Handa <handa <at> m17n.org>,
        1990-done <at> debbugs.gnu.org,
        1952-done <at> debbugs.gnu.org
Subject: Re: bug#1990: 23.0.60; Emacs trying too hard to find fonts that don't  exist
Date: Sat, 24 Jan 2009 17:44:13 -0500
Juanma Barranquero <lekktu <at> gmail.com> writes:

>> That log message is emitted just before calling fontset_font (which is
>> where we would check whether fonts are known not to exist).
>
> OK.
>
> Then, please install your change. It's a big improvement.

I have installed a similar patch in CVS.



Information forwarded to bug-submit-list <at> lists.donarmstrong.com, Emacs Bugs <bug-gnu-emacs <at> gnu.org>:
bug#1990; Package emacs. (Sun, 25 Jan 2009 05:30:03 GMT) Full text and rfc822 format available.

Acknowledgement sent to Jason Rumney <jasonr <at> gnu.org>:
Extra info received and forwarded to list. Copy sent to Emacs Bugs <bug-gnu-emacs <at> gnu.org>. (Sun, 25 Jan 2009 05:30:03 GMT) Full text and rfc822 format available.

Message #55 received at 1990 <at> emacsbugs.donarmstrong.com (full text, mbox):

From: Jason Rumney <jasonr <at> gnu.org>
To: Juanma Barranquero <lekktu <at> gmail.com>
Cc: Chong Yidong <cyd <at> stupidchicken.com>, Kenichi Handa <handa <at> m17n.org>,
        1990 <at> debbugs.gnu.org
Subject: Re: bug#1990: 23.0.60; Emacs trying too hard to find fonts that don't
 	exist
Date: Sun, 25 Jan 2009 13:22:58 +0800
Juanma Barranquero wrote:
> It does not fix #1990, though. Emacs is still repeatedly trying to
> find fonts for characters that do not have one:
>
> 9 matches for "1501" in buffer: *Help*
>      28:font for: (1501 . hebrew-iso8859-8)
>     218:font for: (1501 . mule-unicode-0100-24ff)

That looks much better though. Before, each "font for:" log entry was 
followed by a dozen or so "list:" entries, which is what takes excessive 
time on Windows.





Information forwarded to bug-submit-list <at> lists.donarmstrong.com, Emacs Bugs <bug-gnu-emacs <at> gnu.org>:
bug#1990; Package emacs. (Sun, 25 Jan 2009 12:05:05 GMT) Full text and rfc822 format available.

Acknowledgement sent to Juanma Barranquero <lekktu <at> gmail.com>:
Extra info received and forwarded to list. Copy sent to Emacs Bugs <bug-gnu-emacs <at> gnu.org>. (Sun, 25 Jan 2009 12:05:05 GMT) Full text and rfc822 format available.

Message #60 received at 1990 <at> emacsbugs.donarmstrong.com (full text, mbox):

From: Juanma Barranquero <lekktu <at> gmail.com>
To: Jason Rumney <jasonr <at> gnu.org>
Cc: Chong Yidong <cyd <at> stupidchicken.com>, Kenichi Handa <handa <at> m17n.org>,
        1990 <at> debbugs.gnu.org
Subject: Re: bug#1990: 23.0.60; Emacs trying too hard to find fonts that don't 
	exist
Date: Sun, 25 Jan 2009 12:57:41 +0100
On Sun, Jan 25, 2009 at 06:22, Jason Rumney <jasonr <at> gnu.org> wrote:

> That looks much better though. Before, each "font for:" log entry was
> followed by a dozen or so "list:" entries, which is what takes excessive
> time on Windows.

They still are. That was the output of M-occur on the *Help* buffer.

For example, that's the result of

emacs -Q
C-h H
M-: (setq font-log nil)
M-x font-show-log


font for: (1513 . hebrew-iso8859-8)
list: -outline-DejaVu Sans Mono-*-mono-*-iso10646-1:script=hebrew
list: -outline-DejaVu Sans Mono-*-iso10646-1:script=hebrew
list: -*-DejaVu Sans Mono-*-mono-*-iso10646-1:script=hebrew
list: -*-DejaVu Sans Mono-*-iso10646-1:script=hebrew
list: -outline-*-mono-*-iso10646-1:script=hebrew
list: -outline-*-iso10646-1:script=hebrew
list: -*-mono-*-iso10646-1:script=hebrew
list: -*-iso10646-1:script=hebrew
font for: (1500 . hebrew-iso8859-8)
list: -outline-DejaVu Sans Mono-*-mono-*-iso10646-1:script=hebrew
list: -outline-DejaVu Sans Mono-*-iso10646-1:script=hebrew
list: -*-DejaVu Sans Mono-*-mono-*-iso10646-1:script=hebrew
list: -*-DejaVu Sans Mono-*-iso10646-1:script=hebrew
list: -outline-*-mono-*-iso10646-1:script=hebrew
list: -outline-*-iso10646-1:script=hebrew
list: -*-mono-*-iso10646-1:script=hebrew
list: -*-iso10646-1:script=hebrew
font for: (1493 . hebrew-iso8859-8)
list: -outline-DejaVu Sans Mono-*-mono-*-iso10646-1:script=hebrew
list: -outline-DejaVu Sans Mono-*-iso10646-1:script=hebrew
list: -*-DejaVu Sans Mono-*-mono-*-iso10646-1:script=hebrew
list: -*-DejaVu Sans Mono-*-iso10646-1:script=hebrew
list: -outline-*-mono-*-iso10646-1:script=hebrew
list: -outline-*-iso10646-1:script=hebrew
list: -*-mono-*-iso10646-1:script=hebrew
list: -*-iso10646-1:script=hebrew
font for: (1501 . hebrew-iso8859-8)
list: -outline-DejaVu Sans Mono-*-mono-*-iso10646-1:script=hebrew
list: -outline-DejaVu Sans Mono-*-iso10646-1:script=hebrew
list: -*-DejaVu Sans Mono-*-mono-*-iso10646-1:script=hebrew
list: -*-DejaVu Sans Mono-*-iso10646-1:script=hebrew
list: -outline-*-mono-*-iso10646-1:script=hebrew
list: -outline-*-iso10646-1:script=hebrew
list: -*-mono-*-iso10646-1:script=hebrew
list: -*-iso10646-1:script=hebrew
font for: (3626 . tis620-2533)
list: -mutt-clearlyu-*-mono-*-iso10646-1
list: -mutt-clearlyu-*-iso10646-1
list: -gnu-unifont-*-mono-*-iso10646-1
list: -gnu-unifont-*-iso10646-1
font for: (3623 . tis620-2533)
list: -mutt-clearlyu-*-mono-*-iso10646-1
list: -mutt-clearlyu-*-iso10646-1
list: -gnu-unifont-*-mono-*-iso10646-1
list: -gnu-unifont-*-iso10646-1
font for: (3626 . tis620-2533)
list: -mutt-clearlyu-*-mono-*-iso10646-1
list: -mutt-clearlyu-*-iso10646-1
list: -gnu-unifont-*-mono-*-iso10646-1
list: -gnu-unifont-*-iso10646-1
font for: (3604 . tis620-2533)
list: -mutt-clearlyu-*-mono-*-iso10646-1
list: -mutt-clearlyu-*-iso10646-1
list: -gnu-unifont-*-mono-*-iso10646-1
list: -gnu-unifont-*-iso10646-1
font for: (3588 . tis620-2533)
list: -mutt-clearlyu-*-mono-*-iso10646-1
list: -mutt-clearlyu-*-iso10646-1
list: -gnu-unifont-*-mono-*-iso10646-1
list: -gnu-unifont-*-iso10646-1
font for: (3619 . tis620-2533)
list: -mutt-clearlyu-*-mono-*-iso10646-1
list: -mutt-clearlyu-*-iso10646-1
list: -gnu-unifont-*-mono-*-iso10646-1
list: -gnu-unifont-*-iso10646-1
font for: (3610 . tis620-2533)
list: -mutt-clearlyu-*-mono-*-iso10646-1
list: -mutt-clearlyu-*-iso10646-1
list: -gnu-unifont-*-mono-*-iso10646-1
list: -gnu-unifont-*-iso10646-1
font for: (20803 . korean-ksc5601)
list: -outline-DejaVu Sans Mono-*-mono-*-ksc5601.1987*-*
list: -outline-DejaVu Sans Mono-*-ksc5601.1987*-*
list: -*-DejaVu Sans Mono-*-mono-*-ksc5601.1987*-*
list: -*-DejaVu Sans Mono-*-ksc5601.1987*-*
list: -outline-*-mono-*-ksc5601.1987*-*
list: -outline-*-ksc5601.1987*-*
list: -*-mono-*-ksc5601.1987*-*
list: -*-ksc5601.1987*-*
font for: (27683 . korean-ksc5601)
list: -outline-DejaVu Sans Mono-*-mono-*-ksc5601.1987*-*
list: -outline-DejaVu Sans Mono-*-ksc5601.1987*-*
list: -*-DejaVu Sans Mono-*-mono-*-ksc5601.1987*-*
list: -*-DejaVu Sans Mono-*-ksc5601.1987*-*
list: -outline-*-mono-*-ksc5601.1987*-*
list: -outline-*-ksc5601.1987*-*
list: -*-mono-*-ksc5601.1987*-*
list: -*-ksc5601.1987*-*
font for: (38283 . korean-ksc5601)
list: -outline-DejaVu Sans Mono-*-mono-*-ksc5601.1987*-*
list: -outline-DejaVu Sans Mono-*-ksc5601.1987*-*
list: -*-DejaVu Sans Mono-*-mono-*-ksc5601.1987*-*
list: -*-DejaVu Sans Mono-*-ksc5601.1987*-*
list: -outline-*-mono-*-ksc5601.1987*-*
list: -outline-*-ksc5601.1987*-*
list: -*-mono-*-ksc5601.1987*-*
list: -*-ksc5601.1987*-*
font for: (30332 . korean-ksc5601)
list: -outline-DejaVu Sans Mono-*-mono-*-ksc5601.1987*-*
list: -outline-DejaVu Sans Mono-*-ksc5601.1987*-*
list: -*-DejaVu Sans Mono-*-mono-*-ksc5601.1987*-*
list: -*-DejaVu Sans Mono-*-ksc5601.1987*-*
list: -outline-*-mono-*-ksc5601.1987*-*
list: -outline-*-ksc5601.1987*-*
list: -*-mono-*-ksc5601.1987*-*
list: -*-ksc5601.1987*-*
font for: (940 . mule-unicode-0100-24ff)
list: -outline-DejaVu Sans Mono-*-mono-*-iso10646-1:script=greek
list: -outline-DejaVu Sans Mono-*-iso10646-1:script=greek
list: -*-DejaVu Sans Mono-*-mono-*-iso10646-1:script=greek
list: -*-DejaVu Sans Mono-*-iso10646-1:script=greek
list: -outline-*-mono-*-iso10646-1:script=greek
list: -outline-*-iso10646-1:script=greek
list: -*-mono-*-iso10646-1:script=greek
list: -*-iso10646-1:script=greek
font for: (1513 . mule-unicode-0100-24ff)
list: -outline-DejaVu Sans Mono-*-mono-*-iso10646-1:script=hebrew
list: -outline-DejaVu Sans Mono-*-iso10646-1:script=hebrew
list: -*-DejaVu Sans Mono-*-mono-*-iso10646-1:script=hebrew
list: -*-DejaVu Sans Mono-*-iso10646-1:script=hebrew
list: -outline-*-mono-*-iso10646-1:script=hebrew
list: -outline-*-iso10646-1:script=hebrew
list: -*-mono-*-iso10646-1:script=hebrew
list: -*-iso10646-1:script=hebrew
font for: (1500 . mule-unicode-0100-24ff)
list: -outline-DejaVu Sans Mono-*-mono-*-iso10646-1:script=hebrew
list: -outline-DejaVu Sans Mono-*-iso10646-1:script=hebrew
list: -*-DejaVu Sans Mono-*-mono-*-iso10646-1:script=hebrew
list: -*-DejaVu Sans Mono-*-iso10646-1:script=hebrew
list: -outline-*-mono-*-iso10646-1:script=hebrew
list: -outline-*-iso10646-1:script=hebrew
list: -*-mono-*-iso10646-1:script=hebrew
list: -*-iso10646-1:script=hebrew
font for: (1493 . mule-unicode-0100-24ff)
list: -outline-DejaVu Sans Mono-*-mono-*-iso10646-1:script=hebrew
list: -outline-DejaVu Sans Mono-*-iso10646-1:script=hebrew
list: -*-DejaVu Sans Mono-*-mono-*-iso10646-1:script=hebrew
list: -*-DejaVu Sans Mono-*-iso10646-1:script=hebrew
list: -outline-*-mono-*-iso10646-1:script=hebrew
list: -outline-*-iso10646-1:script=hebrew
list: -*-mono-*-iso10646-1:script=hebrew
list: -*-iso10646-1:script=hebrew
font for: (1501 . mule-unicode-0100-24ff)
list: -outline-DejaVu Sans Mono-*-mono-*-iso10646-1:script=hebrew
list: -outline-DejaVu Sans Mono-*-iso10646-1:script=hebrew
list: -*-DejaVu Sans Mono-*-mono-*-iso10646-1:script=hebrew
list: -*-DejaVu Sans Mono-*-iso10646-1:script=hebrew
list: -outline-*-mono-*-iso10646-1:script=hebrew
list: -outline-*-iso10646-1:script=hebrew
list: -*-mono-*-iso10646-1:script=hebrew
list: -*-iso10646-1:script=hebrew
font for: (1514 . hebrew-iso8859-8)
list: -outline-DejaVu Sans Mono-*-mono-*-iso10646-1:script=hebrew
list: -outline-DejaVu Sans Mono-*-iso10646-1:script=hebrew
list: -*-DejaVu Sans Mono-*-mono-*-iso10646-1:script=hebrew
list: -*-DejaVu Sans Mono-*-iso10646-1:script=hebrew
list: -outline-*-mono-*-iso10646-1:script=hebrew
list: -outline-*-iso10646-1:script=hebrew
list: -*-mono-*-iso10646-1:script=hebrew
list: -*-iso10646-1:script=hebrew
font for: (1497 . hebrew-iso8859-8)
list: -outline-DejaVu Sans Mono-*-mono-*-iso10646-1:script=hebrew
list: -outline-DejaVu Sans Mono-*-iso10646-1:script=hebrew
list: -*-DejaVu Sans Mono-*-mono-*-iso10646-1:script=hebrew
list: -*-DejaVu Sans Mono-*-iso10646-1:script=hebrew
list: -outline-*-mono-*-iso10646-1:script=hebrew
list: -outline-*-iso10646-1:script=hebrew
list: -*-mono-*-iso10646-1:script=hebrew
list: -*-iso10646-1:script=hebrew
font for: (1512 . hebrew-iso8859-8)
list: -outline-DejaVu Sans Mono-*-mono-*-iso10646-1:script=hebrew
list: -outline-DejaVu Sans Mono-*-iso10646-1:script=hebrew
list: -*-DejaVu Sans Mono-*-mono-*-iso10646-1:script=hebrew
list: -*-DejaVu Sans Mono-*-iso10646-1:script=hebrew
list: -outline-*-mono-*-iso10646-1:script=hebrew
list: -outline-*-iso10646-1:script=hebrew
list: -*-mono-*-iso10646-1:script=hebrew
list: -*-iso10646-1:script=hebrew
font for: (1489 . hebrew-iso8859-8)
list: -outline-DejaVu Sans Mono-*-mono-*-iso10646-1:script=hebrew
list: -outline-DejaVu Sans Mono-*-iso10646-1:script=hebrew
list: -*-DejaVu Sans Mono-*-mono-*-iso10646-1:script=hebrew
list: -*-DejaVu Sans Mono-*-iso10646-1:script=hebrew
list: -outline-*-mono-*-iso10646-1:script=hebrew
list: -outline-*-iso10646-1:script=hebrew
list: -*-mono-*-iso10646-1:script=hebrew
list: -*-iso10646-1:script=hebrew
font for: (1506 . hebrew-iso8859-8)
list: -outline-DejaVu Sans Mono-*-mono-*-iso10646-1:script=hebrew
list: -outline-DejaVu Sans Mono-*-iso10646-1:script=hebrew
list: -*-DejaVu Sans Mono-*-mono-*-iso10646-1:script=hebrew
list: -*-DejaVu Sans Mono-*-iso10646-1:script=hebrew
list: -outline-*-mono-*-iso10646-1:script=hebrew
list: -outline-*-iso10646-1:script=hebrew
list: -*-mono-*-iso10646-1:script=hebrew
list: -*-iso10646-1:script=hebrew
font for: (1513 . hebrew-iso8859-8)
list: -outline-DejaVu Sans Mono-*-mono-*-iso10646-1:script=hebrew
list: -outline-DejaVu Sans Mono-*-iso10646-1:script=hebrew
list: -*-DejaVu Sans Mono-*-mono-*-iso10646-1:script=hebrew
list: -*-DejaVu Sans Mono-*-iso10646-1:script=hebrew
list: -outline-*-mono-*-iso10646-1:script=hebrew
list: -outline-*-iso10646-1:script=hebrew
list: -*-mono-*-iso10646-1:script=hebrew
list: -*-iso10646-1:script=hebrew
font for: (1500 . hebrew-iso8859-8)
list: -outline-DejaVu Sans Mono-*-mono-*-iso10646-1:script=hebrew
list: -outline-DejaVu Sans Mono-*-iso10646-1:script=hebrew
list: -*-DejaVu Sans Mono-*-mono-*-iso10646-1:script=hebrew
list: -*-DejaVu Sans Mono-*-iso10646-1:script=hebrew
list: -outline-*-mono-*-iso10646-1:script=hebrew
list: -outline-*-iso10646-1:script=hebrew
list: -*-mono-*-iso10646-1:script=hebrew
list: -*-iso10646-1:script=hebrew
font for: (1493 . hebrew-iso8859-8)
list: -outline-DejaVu Sans Mono-*-mono-*-iso10646-1:script=hebrew
list: -outline-DejaVu Sans Mono-*-iso10646-1:script=hebrew
list: -*-DejaVu Sans Mono-*-mono-*-iso10646-1:script=hebrew
list: -*-DejaVu Sans Mono-*-iso10646-1:script=hebrew
list: -outline-*-mono-*-iso10646-1:script=hebrew
list: -outline-*-iso10646-1:script=hebrew
list: -*-mono-*-iso10646-1:script=hebrew
list: -*-iso10646-1:script=hebrew
font for: (1501 . hebrew-iso8859-8)
list: -outline-DejaVu Sans Mono-*-mono-*-iso10646-1:script=hebrew
list: -outline-DejaVu Sans Mono-*-iso10646-1:script=hebrew
list: -*-DejaVu Sans Mono-*-mono-*-iso10646-1:script=hebrew
list: -*-DejaVu Sans Mono-*-iso10646-1:script=hebrew
list: -outline-*-mono-*-iso10646-1:script=hebrew
list: -outline-*-iso10646-1:script=hebrew
list: -*-mono-*-iso10646-1:script=hebrew
list: -*-iso10646-1:script=hebrew
font for: (1513 . hebrew-iso8859-8)
list: -outline-DejaVu Sans Mono-*-mono-*-iso10646-1:script=hebrew
list: -outline-DejaVu Sans Mono-*-iso10646-1:script=hebrew
list: -*-DejaVu Sans Mono-*-mono-*-iso10646-1:script=hebrew
list: -*-DejaVu Sans Mono-*-iso10646-1:script=hebrew
list: -outline-*-mono-*-iso10646-1:script=hebrew
list: -outline-*-iso10646-1:script=hebrew
list: -*-mono-*-iso10646-1:script=hebrew
list: -*-iso10646-1:script=hebrew
font for: (1500 . hebrew-iso8859-8)
list: -outline-DejaVu Sans Mono-*-mono-*-iso10646-1:script=hebrew
list: -outline-DejaVu Sans Mono-*-iso10646-1:script=hebrew
list: -*-DejaVu Sans Mono-*-mono-*-iso10646-1:script=hebrew
list: -*-DejaVu Sans Mono-*-iso10646-1:script=hebrew
list: -outline-*-mono-*-iso10646-1:script=hebrew
list: -outline-*-iso10646-1:script=hebrew
list: -*-mono-*-iso10646-1:script=hebrew
list: -*-iso10646-1:script=hebrew
font for: (1493 . hebrew-iso8859-8)
list: -outline-DejaVu Sans Mono-*-mono-*-iso10646-1:script=hebrew
list: -outline-DejaVu Sans Mono-*-iso10646-1:script=hebrew
list: -*-DejaVu Sans Mono-*-mono-*-iso10646-1:script=hebrew
list: -*-DejaVu Sans Mono-*-iso10646-1:script=hebrew
list: -outline-*-mono-*-iso10646-1:script=hebrew
list: -outline-*-iso10646-1:script=hebrew
list: -*-mono-*-iso10646-1:script=hebrew
list: -*-iso10646-1:script=hebrew
font for: (1501 . hebrew-iso8859-8)
list: -outline-DejaVu Sans Mono-*-mono-*-iso10646-1:script=hebrew
list: -outline-DejaVu Sans Mono-*-iso10646-1:script=hebrew
list: -*-DejaVu Sans Mono-*-mono-*-iso10646-1:script=hebrew
list: -*-DejaVu Sans Mono-*-iso10646-1:script=hebrew
list: -outline-*-mono-*-iso10646-1:script=hebrew
list: -outline-*-iso10646-1:script=hebrew
list: -*-mono-*-iso10646-1:script=hebrew
list: -*-iso10646-1:script=hebrew
font for: (3626 . tis620-2533)
list: -mutt-clearlyu-*-mono-*-iso10646-1
list: -mutt-clearlyu-*-iso10646-1
list: -gnu-unifont-*-mono-*-iso10646-1
list: -gnu-unifont-*-iso10646-1
font for: (3623 . tis620-2533)
list: -mutt-clearlyu-*-mono-*-iso10646-1
list: -mutt-clearlyu-*-iso10646-1
list: -gnu-unifont-*-mono-*-iso10646-1
list: -gnu-unifont-*-iso10646-1
font for: (3626 . tis620-2533)
list: -mutt-clearlyu-*-mono-*-iso10646-1
list: -mutt-clearlyu-*-iso10646-1
list: -gnu-unifont-*-mono-*-iso10646-1
list: -gnu-unifont-*-iso10646-1
font for: (3604 . tis620-2533)
list: -mutt-clearlyu-*-mono-*-iso10646-1
list: -mutt-clearlyu-*-iso10646-1
list: -gnu-unifont-*-mono-*-iso10646-1
list: -gnu-unifont-*-iso10646-1
font for: (3588 . tis620-2533)
list: -mutt-clearlyu-*-mono-*-iso10646-1
list: -mutt-clearlyu-*-iso10646-1
list: -gnu-unifont-*-mono-*-iso10646-1
list: -gnu-unifont-*-iso10646-1
font for: (3619 . tis620-2533)
list: -mutt-clearlyu-*-mono-*-iso10646-1
list: -mutt-clearlyu-*-iso10646-1
list: -gnu-unifont-*-mono-*-iso10646-1
list: -gnu-unifont-*-iso10646-1
font for: (3610 . tis620-2533)
list: -mutt-clearlyu-*-mono-*-iso10646-1
list: -mutt-clearlyu-*-iso10646-1
list: -gnu-unifont-*-mono-*-iso10646-1
list: -gnu-unifont-*-iso10646-1
font for: (20803 . korean-ksc5601)
list: -outline-DejaVu Sans Mono-*-mono-*-ksc5601.1987*-*
list: -outline-DejaVu Sans Mono-*-ksc5601.1987*-*
list: -*-DejaVu Sans Mono-*-mono-*-ksc5601.1987*-*
list: -*-DejaVu Sans Mono-*-ksc5601.1987*-*
list: -outline-*-mono-*-ksc5601.1987*-*
list: -outline-*-ksc5601.1987*-*
list: -*-mono-*-ksc5601.1987*-*
list: -*-ksc5601.1987*-*
font for: (27683 . korean-ksc5601)
list: -outline-DejaVu Sans Mono-*-mono-*-ksc5601.1987*-*
list: -outline-DejaVu Sans Mono-*-ksc5601.1987*-*
list: -*-DejaVu Sans Mono-*-mono-*-ksc5601.1987*-*
list: -*-DejaVu Sans Mono-*-ksc5601.1987*-*
list: -outline-*-mono-*-ksc5601.1987*-*
list: -outline-*-ksc5601.1987*-*
list: -*-mono-*-ksc5601.1987*-*
list: -*-ksc5601.1987*-*
font for: (38283 . korean-ksc5601)
list: -outline-DejaVu Sans Mono-*-mono-*-ksc5601.1987*-*
list: -outline-DejaVu Sans Mono-*-ksc5601.1987*-*
list: -*-DejaVu Sans Mono-*-mono-*-ksc5601.1987*-*
list: -*-DejaVu Sans Mono-*-ksc5601.1987*-*
list: -outline-*-mono-*-ksc5601.1987*-*
list: -outline-*-ksc5601.1987*-*
list: -*-mono-*-ksc5601.1987*-*
list: -*-ksc5601.1987*-*
font for: (30332 . korean-ksc5601)
list: -outline-DejaVu Sans Mono-*-mono-*-ksc5601.1987*-*
list: -outline-DejaVu Sans Mono-*-ksc5601.1987*-*
list: -*-DejaVu Sans Mono-*-mono-*-ksc5601.1987*-*
list: -*-DejaVu Sans Mono-*-ksc5601.1987*-*
list: -outline-*-mono-*-ksc5601.1987*-*
list: -outline-*-ksc5601.1987*-*
list: -*-mono-*-ksc5601.1987*-*
list: -*-ksc5601.1987*-*
font for: (940 . mule-unicode-0100-24ff)
list: -outline-DejaVu Sans Mono-*-mono-*-iso10646-1:script=greek
list: -outline-DejaVu Sans Mono-*-iso10646-1:script=greek
list: -*-DejaVu Sans Mono-*-mono-*-iso10646-1:script=greek
list: -*-DejaVu Sans Mono-*-iso10646-1:script=greek
list: -outline-*-mono-*-iso10646-1:script=greek
list: -outline-*-iso10646-1:script=greek
list: -*-mono-*-iso10646-1:script=greek
list: -*-iso10646-1:script=greek
font for: (1513 . mule-unicode-0100-24ff)
list: -outline-DejaVu Sans Mono-*-mono-*-iso10646-1:script=hebrew
list: -outline-DejaVu Sans Mono-*-iso10646-1:script=hebrew
list: -*-DejaVu Sans Mono-*-mono-*-iso10646-1:script=hebrew
list: -*-DejaVu Sans Mono-*-iso10646-1:script=hebrew
list: -outline-*-mono-*-iso10646-1:script=hebrew
list: -outline-*-iso10646-1:script=hebrew
list: -*-mono-*-iso10646-1:script=hebrew
list: -*-iso10646-1:script=hebrew
font for: (1500 . mule-unicode-0100-24ff)
list: -outline-DejaVu Sans Mono-*-mono-*-iso10646-1:script=hebrew
list: -outline-DejaVu Sans Mono-*-iso10646-1:script=hebrew
list: -*-DejaVu Sans Mono-*-mono-*-iso10646-1:script=hebrew
list: -*-DejaVu Sans Mono-*-iso10646-1:script=hebrew
list: -outline-*-mono-*-iso10646-1:script=hebrew
list: -outline-*-iso10646-1:script=hebrew
list: -*-mono-*-iso10646-1:script=hebrew
list: -*-iso10646-1:script=hebrew
font for: (1493 . mule-unicode-0100-24ff)
list: -outline-DejaVu Sans Mono-*-mono-*-iso10646-1:script=hebrew
list: -outline-DejaVu Sans Mono-*-iso10646-1:script=hebrew
list: -*-DejaVu Sans Mono-*-mono-*-iso10646-1:script=hebrew
list: -*-DejaVu Sans Mono-*-iso10646-1:script=hebrew
list: -outline-*-mono-*-iso10646-1:script=hebrew
list: -outline-*-iso10646-1:script=hebrew
list: -*-mono-*-iso10646-1:script=hebrew
list: -*-iso10646-1:script=hebrew
font for: (1501 . mule-unicode-0100-24ff)
list: -outline-DejaVu Sans Mono-*-mono-*-iso10646-1:script=hebrew
list: -outline-DejaVu Sans Mono-*-iso10646-1:script=hebrew
list: -*-DejaVu Sans Mono-*-mono-*-iso10646-1:script=hebrew
list: -*-DejaVu Sans Mono-*-iso10646-1:script=hebrew
list: -outline-*-mono-*-iso10646-1:script=hebrew
list: -outline-*-iso10646-1:script=hebrew
list: -*-mono-*-iso10646-1:script=hebrew
list: -*-iso10646-1:script=hebrew
font for: (1514 . hebrew-iso8859-8)
list: -outline-DejaVu Sans Mono-*-mono-*-iso10646-1:script=hebrew
list: -outline-DejaVu Sans Mono-*-iso10646-1:script=hebrew
list: -*-DejaVu Sans Mono-*-mono-*-iso10646-1:script=hebrew
list: -*-DejaVu Sans Mono-*-iso10646-1:script=hebrew
list: -outline-*-mono-*-iso10646-1:script=hebrew
list: -outline-*-iso10646-1:script=hebrew
list: -*-mono-*-iso10646-1:script=hebrew
list: -*-iso10646-1:script=hebrew
font for: (1497 . hebrew-iso8859-8)
list: -outline-DejaVu Sans Mono-*-mono-*-iso10646-1:script=hebrew
list: -outline-DejaVu Sans Mono-*-iso10646-1:script=hebrew
list: -*-DejaVu Sans Mono-*-mono-*-iso10646-1:script=hebrew
list: -*-DejaVu Sans Mono-*-iso10646-1:script=hebrew
list: -outline-*-mono-*-iso10646-1:script=hebrew
list: -outline-*-iso10646-1:script=hebrew
list: -*-mono-*-iso10646-1:script=hebrew
list: -*-iso10646-1:script=hebrew
font for: (1512 . hebrew-iso8859-8)
list: -outline-DejaVu Sans Mono-*-mono-*-iso10646-1:script=hebrew
list: -outline-DejaVu Sans Mono-*-iso10646-1:script=hebrew
list: -*-DejaVu Sans Mono-*-mono-*-iso10646-1:script=hebrew
list: -*-DejaVu Sans Mono-*-iso10646-1:script=hebrew
list: -outline-*-mono-*-iso10646-1:script=hebrew
list: -outline-*-iso10646-1:script=hebrew
list: -*-mono-*-iso10646-1:script=hebrew
list: -*-iso10646-1:script=hebrew
font for: (1489 . hebrew-iso8859-8)
list: -outline-DejaVu Sans Mono-*-mono-*-iso10646-1:script=hebrew
list: -outline-DejaVu Sans Mono-*-iso10646-1:script=hebrew
list: -*-DejaVu Sans Mono-*-mono-*-iso10646-1:script=hebrew
list: -*-DejaVu Sans Mono-*-iso10646-1:script=hebrew
list: -outline-*-mono-*-iso10646-1:script=hebrew
list: -outline-*-iso10646-1:script=hebrew
list: -*-mono-*-iso10646-1:script=hebrew
list: -*-iso10646-1:script=hebrew
font for: (1506 . hebrew-iso8859-8)
list: -outline-DejaVu Sans Mono-*-mono-*-iso10646-1:script=hebrew
list: -outline-DejaVu Sans Mono-*-iso10646-1:script=hebrew
list: -*-DejaVu Sans Mono-*-mono-*-iso10646-1:script=hebrew
list: -*-DejaVu Sans Mono-*-iso10646-1:script=hebrew
list: -outline-*-mono-*-iso10646-1:script=hebrew
list: -outline-*-iso10646-1:script=hebrew
list: -*-mono-*-iso10646-1:script=hebrew
list: -*-iso10646-1:script=hebrew
font for: (1513 . hebrew-iso8859-8)
list: -outline-DejaVu Sans Mono-*-mono-*-iso10646-1:script=hebrew
list: -outline-DejaVu Sans Mono-*-iso10646-1:script=hebrew
list: -*-DejaVu Sans Mono-*-mono-*-iso10646-1:script=hebrew
list: -*-DejaVu Sans Mono-*-iso10646-1:script=hebrew
list: -outline-*-mono-*-iso10646-1:script=hebrew
list: -outline-*-iso10646-1:script=hebrew
list: -*-mono-*-iso10646-1:script=hebrew
list: -*-iso10646-1:script=hebrew
font for: (1500 . hebrew-iso8859-8)
list: -outline-DejaVu Sans Mono-*-mono-*-iso10646-1:script=hebrew
list: -outline-DejaVu Sans Mono-*-iso10646-1:script=hebrew
list: -*-DejaVu Sans Mono-*-mono-*-iso10646-1:script=hebrew
list: -*-DejaVu Sans Mono-*-iso10646-1:script=hebrew
list: -outline-*-mono-*-iso10646-1:script=hebrew
list: -outline-*-iso10646-1:script=hebrew
list: -*-mono-*-iso10646-1:script=hebrew
list: -*-iso10646-1:script=hebrew
font for: (1493 . hebrew-iso8859-8)
list: -outline-DejaVu Sans Mono-*-mono-*-iso10646-1:script=hebrew
list: -outline-DejaVu Sans Mono-*-iso10646-1:script=hebrew
list: -*-DejaVu Sans Mono-*-mono-*-iso10646-1:script=hebrew
list: -*-DejaVu Sans Mono-*-iso10646-1:script=hebrew
list: -outline-*-mono-*-iso10646-1:script=hebrew
list: -outline-*-iso10646-1:script=hebrew
list: -*-mono-*-iso10646-1:script=hebrew
list: -*-iso10646-1:script=hebrew
font for: (1501 . hebrew-iso8859-8)
list: -outline-DejaVu Sans Mono-*-mono-*-iso10646-1:script=hebrew
list: -outline-DejaVu Sans Mono-*-iso10646-1:script=hebrew
list: -*-DejaVu Sans Mono-*-mono-*-iso10646-1:script=hebrew
list: -*-DejaVu Sans Mono-*-iso10646-1:script=hebrew
list: -outline-*-mono-*-iso10646-1:script=hebrew
list: -outline-*-iso10646-1:script=hebrew
list: -*-mono-*-iso10646-1:script=hebrew
list: -*-iso10646-1:script=hebrew
font for: (295 . iso-8859-3)
list: -outline-DejaVu Sans Mono-normal-*-normal-mono-*-c-*-iso8859-1
  -outline-DejaVu Sans Mono-normal-normal-normal-mono-*-c-*-iso8859-1
  -outline-DejaVu Sans Mono-normal-italic-normal-mono-*-c-*-iso8859-1
  -outline-DejaVu Sans Mono-normal-normal-normal-mono-*-c-*-iso8859-1
  -outline-DejaVu Sans Mono-normal-italic-normal-mono-*-c-*-iso8859-1
sort-by: -outline-DejaVu Sans Mono-normal-italic-normal-mono-13-*-c-*-iso8859-1
  uniscribe:-outline-DejaVu Sans Mono-normal-italic-normal-mono-*-c-*-iso8859-1
open: -outline-DejaVu Sans Mono-normal-italic-normal-mono-*-c-*-iso8859-1
  uniscribe:-outline-DejaVu Sans
Mono-normal-italic-normal-mono-13-*-c-*-iso8859-1




Information forwarded to bug-submit-list <at> lists.donarmstrong.com, Emacs Bugs <bug-gnu-emacs <at> gnu.org>:
bug#1990; Package emacs. (Mon, 26 Jan 2009 08:10:04 GMT) Full text and rfc822 format available.

Acknowledgement sent to Kenichi Handa <handa <at> m17n.org>:
Extra info received and forwarded to list. Copy sent to Emacs Bugs <bug-gnu-emacs <at> gnu.org>. (Mon, 26 Jan 2009 08:10:04 GMT) Full text and rfc822 format available.

Message #65 received at 1990 <at> emacsbugs.donarmstrong.com (full text, mbox):

From: Kenichi Handa <handa <at> m17n.org>
To: Chong Yidong <cyd <at> stupidchicken.com>
Cc: jasonr <at> gnu.org, 1990 <at> debbugs.gnu.org
Subject: Re: 23.0.60; Emacs trying too hard to find fonts that don't exist
Date: Mon, 26 Jan 2009 17:00:09 +0900
In article <87d4ec1o6z.fsf <at> cyd.mit.edu>, Chong Yidong <cyd <at> stupidchicken.com> writes:

> Jason Rumney <jasonr <at> gnu.org> writes:
>>> However, there are several other places in that function that return
>>> with a Qnil, without doing this FONTSET_SET.  Do matters improve if
>>> we do the same FONTSET_SET call before returning?
> >
> > It doesn't seem to help much, if at all.

> How about something like this?  Does it improve performance noticeably?

> *** trunk/src/fontset.c.~1.150.~	2009-01-08 06:46:23.000000000 -0500
> --- trunk/src/fontset.c	2009-01-24 14:44:09.000000000 -0500
> ***************
> *** 660,665 ****
> --- 660,668 ----
>     Lisp_Object rfont_def;
>     Lisp_Object base_fontset;
  
> +   if (EQ (Fchar_table_range (fontset, make_number (c)), Qt))
> +     return Qnil;
> + 
>     /* Try a font-group of FONTSET. */
>     rfont_def = fontset_find_font (fontset, c, face, id, 0);
>     if (VECTORP (rfont_def))

I found a bug in fontset_find_font in handling non-cons
return value of fontset_get_font_group (it seems that I
embugged it when I modified fontset.c largely last time).

Your change surely fixes the bug, but it does unnecessary
char-table lookup for the normal case (i.e. a font is
found).  So, I think the following patch is better.

If you agree, please install it.  I, at the moment, can't do
cvs commit.

2009-01-26  Kenichi Handa  <handa <at> m17n.org>

	* fontset.c (fontset_find_font): Fix handling of non-cons return
	value of fontset_get_font_group.
	(fontset_font): Cancel previous change.

*** fontset.c.~1.151.~	2009-01-26 16:52:57.000000000 +0900
--- fontset.c	2009-01-26 16:53:14.000000000 +0900
***************
*** 521,527 ****
  
    font_group = fontset_get_font_group (fontset, fallback ? -1 : c);
    if (! CONSP (font_group))
!     return Qnil;
    vec = XCDR (font_group);
    if (ASIZE (vec) == 0)
      return Qnil;
--- 521,527 ----
  
    font_group = fontset_get_font_group (fontset, fallback ? -1 : c);
    if (! CONSP (font_group))
!     return font_group;
    vec = XCDR (font_group);
    if (ASIZE (vec) == 0)
      return Qnil;
***************
*** 660,669 ****
    Lisp_Object rfont_def;
    Lisp_Object base_fontset;
  
-   /* If we know there is no font of C, don't do any work.  */
-   if (EQ (fontset_ref (fontset, c), Qt))
-     return Qnil;
- 
    /* Try a font-group of FONTSET. */
    rfont_def = fontset_find_font (fontset, c, face, id, 0);
    if (VECTORP (rfont_def))
--- 660,665 ----
---
Kenichi Handa
handa <at> m17n.org




Information forwarded to bug-submit-list <at> lists.donarmstrong.com, Emacs Bugs <bug-gnu-emacs <at> gnu.org>:
bug#1990; Package emacs. (Mon, 26 Jan 2009 11:55:03 GMT) Full text and rfc822 format available.

Acknowledgement sent to Kenichi Handa <handa <at> m17n.org>:
Extra info received and forwarded to list. Copy sent to Emacs Bugs <bug-gnu-emacs <at> gnu.org>. (Mon, 26 Jan 2009 11:55:04 GMT) Full text and rfc822 format available.

Message #70 received at 1990 <at> emacsbugs.donarmstrong.com (full text, mbox):

From: Kenichi Handa <handa <at> m17n.org>
To: Juanma Barranquero <lekktu <at> gmail.com>
Cc: jasonr <at> gnu.org, cyd <at> stupidchicken.com, 1990 <at> debbugs.gnu.org
Subject: Re: bug#1990: 23.0.60; Emacs trying too hard to find fonts that don't 
	exist
Date: Mon, 26 Jan 2009 20:46:35 +0900
In article <f7ccd24b0901250357p6ac606beh67a4f2d4562e6230 <at> mail.gmail.com>, Juanma Barranquero <lekktu <at> gmail.com> writes:

> On Sun, Jan 25, 2009 at 06:22, Jason Rumney <jasonr <at> gnu.org> wrote:
> > That looks much better though. Before, each "font for:" log entry was
> > followed by a dozen or so "list:" entries, which is what takes excessive
> > time on Windows.

> They still are. That was the output of M-occur on the *Help* buffer.

> For example, that's the result of

> emacs -Q
> C-h H
> M-: (setq font-log nil)
> M-x font-show-log

> font for: (1513 . hebrew-iso8859-8)
> list: -outline-DejaVu Sans Mono-*-mono-*-iso10646-1:script=hebrew
> list: -outline-DejaVu Sans Mono-*-iso10646-1:script=hebrew
> list: -*-DejaVu Sans Mono-*-mono-*-iso10646-1:script=hebrew
> list: -*-DejaVu Sans Mono-*-iso10646-1:script=hebrew
> list: -outline-*-mono-*-iso10646-1:script=hebrew
> list: -outline-*-iso10646-1:script=hebrew
> list: -*-mono-*-iso10646-1:script=hebrew
> list: -*-iso10646-1:script=hebrew
[...]

As there's no logs from the font-backend's `list' method,
the above listings actually did cache looking up only, and
thus they should not be that slow.  If you do:

M-: (setq font-log nil)

before C-h H, you'll see logs from the font-backend (labeled
"uniscribe-list:" or "w32font-list:" on Windows).

---
Kenichi Handa
handa <at> m17n.org




Information forwarded to bug-submit-list <at> lists.donarmstrong.com, Emacs Bugs <bug-gnu-emacs <at> gnu.org>:
bug#1990; Package emacs. (Mon, 26 Jan 2009 12:10:04 GMT) Full text and rfc822 format available.

Acknowledgement sent to Juanma Barranquero <lekktu <at> gmail.com>:
Extra info received and forwarded to list. Copy sent to Emacs Bugs <bug-gnu-emacs <at> gnu.org>. (Mon, 26 Jan 2009 12:10:04 GMT) Full text and rfc822 format available.

Message #75 received at 1990 <at> emacsbugs.donarmstrong.com (full text, mbox):

From: Juanma Barranquero <lekktu <at> gmail.com>
To: Kenichi Handa <handa <at> m17n.org>
Cc: jasonr <at> gnu.org, cyd <at> stupidchicken.com, 1990 <at> debbugs.gnu.org
Subject: Re: bug#1990: 23.0.60; Emacs trying too hard to find fonts that don't 
	exist
Date: Mon, 26 Jan 2009 13:02:56 +0100
On Mon, Jan 26, 2009 at 12:46, Kenichi Handa <handa <at> m17n.org> wrote:

> As there's no logs from the font-backend's `list' method,
> the above listings actually did cache looking up only, and
> thus they should not be that slow.

I meant that still are a lot of `list's in the output, not that it
still was a bug. As I reported, it is quite fast now.

> before C-h H, you'll see logs from the font-backend (labeled
> "uniscribe-list:" or "w32font-list:" on Windows).

Yes, and after the buffer is displayed there's none when moving around.

    Juanma




Information forwarded to bug-submit-list <at> lists.donarmstrong.com, Emacs Bugs <bug-gnu-emacs <at> gnu.org>:
bug#1990; Package emacs. (Mon, 26 Jan 2009 16:00:03 GMT) Full text and rfc822 format available.

Acknowledgement sent to Chong Yidong <cyd <at> stupidchicken.com>:
Extra info received and forwarded to list. Copy sent to Emacs Bugs <bug-gnu-emacs <at> gnu.org>. (Mon, 26 Jan 2009 16:00:03 GMT) Full text and rfc822 format available.

Message #80 received at 1990 <at> emacsbugs.donarmstrong.com (full text, mbox):

From: Chong Yidong <cyd <at> stupidchicken.com>
To: Kenichi Handa <handa <at> m17n.org>
Cc: jasonr <at> gnu.org, 1990 <at> debbugs.gnu.org
Subject: Re: 23.0.60; Emacs trying too hard to find fonts that don't exist
Date: Mon, 26 Jan 2009 10:51:57 -0500
Kenichi Handa <handa <at> m17n.org> writes:

> I found a bug in fontset_find_font in handling non-cons
> return value of fontset_get_font_group (it seems that I
> embugged it when I modified fontset.c largely last time).
>
> Your change surely fixes the bug, but it does unnecessary
> char-table lookup for the normal case (i.e. a font is
> found).  So, I think the following patch is better.
>
> If you agree, please install it.  I, at the moment, can't do
> cvs commit.

Installed, thanks.




bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> emacsbugs.donarmstrong.com. (Tue, 24 Feb 2009 15:24:05 GMT) Full text and rfc822 format available.

This bug report was last modified 16 years and 176 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.