GNU bug report logs - #2667
23.0.91; Inconsistent fonts

Previous Next

Package: emacs;

Reported by: David Kastrup <dak <at> gnu.org>

Date: Fri, 13 Mar 2009 21:35:03 UTC

Severity: serious

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 2667 in the body.
You can then email your comments to 2667 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#2667; Package emacs. (Fri, 13 Mar 2009 21:35:03 GMT) Full text and rfc822 format available.

Acknowledgement sent to David Kastrup <dak <at> gnu.org>:
New bug report received and forwarded. Copy sent to Emacs Bugs <bug-gnu-emacs <at> gnu.org>. (Fri, 13 Mar 2009 21:35:03 GMT) Full text and rfc822 format available.

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

From: David Kastrup <dak <at> gnu.org>
To: emacs-pretest-bug <at> gnu.org
Subject: 23.0.91; Inconsistent fonts
Date: Fri, 13 Mar 2009 22:28:05 +0100
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 I write something like "Schätzchen" after selecting a Unicode-capable
font in the font menu (in this case LMSans12), I get on the S

        character: S (83, #o123, #x53)
preferred charset: ascii (ASCII (ISO646 IRV))
       code point: 0x53
           syntax: w 	which means: word
         category: .:Base, a:ASCII, l:Latin, r:Roman
      buffer code: #x53
        file code: #x53 (encoded by coding system utf-8-emacs-unix)
          display: by this font (glyph code)
    xft:-unknown-LMSans12-normal-normal-normal-*-16-*-*-*-*-0-iso10646-1 (#x10C)

Character code properties: customize what to show
  name: LATIN CAPITAL LETTER S
  general-category: Lu (Letter, Uppercase)

There are text properties here:
  fontified            t

[back]

But on the ä I get

        character: ä (228, #o344, #xe4)
preferred charset: unicode (Unicode (ISO10646))
       code point: 0xE4
           syntax: w 	which means: word
         category: .:Base, j:Japanese, l:Latin
      buffer code: #xC3 #xA4
        file code: #xC3 #xA4 (encoded by coding system utf-8-emacs-unix)
          display: by this font (glyph code)
    x:-misc-fixed-medium-r-normal--15-140-75-75-c-90-iso10646-1 (#xE4)

Character code properties: customize what to show
  name: LATIN SMALL LETTER A WITH DIAERESIS
  old-name: LATIN SMALL LETTER A DIAERESIS
  general-category: Ll (Letter, Lowercase)
  decomposition: (97 776) ('a' '̈')

There are text properties here:
  fontified            t

[back]

What is wrong here?  Why does it not use the LM font?

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
/usr/local/emacs-21/share/emacs/23.0.91/etc/DEBUG for instructions.


In GNU Emacs 23.0.91.1 (i686-pc-linux-gnu, GTK+ Version 2.14.4)
 of 2009-03-13 on lola
Windowing system distributor `The X.Org Foundation', version 11.0.10502000
configured using `configure  'CFLAGS=-g -O2 -fno-crossjumping' '--prefix=/usr/local/emacs-21' '--without-toolkit-scroll-bars''

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_US.UTF-8
  value of $XMODIFIERS: nil
  locale-coding-system: utf-8-unix
  default-enable-multibyte-characters: t

Major mode: Message

Minor modes in effect:
  buffer-face-mode: t
  shell-dirtrack-mode: t
  mml-mode: t
  gnus-message-citation-mode: t
  TeX-PDF-mode: t
  desktop-save-mode: t
  minibuffer-electric-default-mode: t
  tooltip-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
  abbrev-mode: t

Recent input:
h SPC a u c h SPC i m SPC P r o i v <backspace> <backspace> 
<backspace> i v a t l e b e n SPC r e c h t SPC e r 
f o l g r e i c h SPC d u r c h g e <up> <down> z o 
g e n . M-q <up> C-k C-k C-k M-q u SPC g l a u b s 
t SPC g a r SPC n i c h t , SPC w i e v i e l e SPC 
<backspace> <backspace> SPC A u f w a n f <backspace> 
d SPC m a n SPC s i c h SPC s p a r e n SPC k a n n 
, SPC w e n n SPC m a n SPC E r o b e r u n g e n SPC 
s c h o n SPC i m SPC K e i m SPC a b s c h ü t t e 
l t . M-q M-q C-e <up> <up> <down> <down> <down> <down> 
<up> <up> <up> <down> C-e <up> <right> <right> <right> 
<right> <right> <right> <right> <right> <right> <right> 
<right> <right> <right> <right> <right> <right> <right> 
<right> <right> <right> <right> <right> <right> <right> 
M-q <down> <up> <down> C-e M-q <help-echo> <help-echo> 
<help-echo> <help-echo> <help-echo> <help-echo> <help-echo> 
<help-echo> <help-echo> <help-echo> <help-echo> <menu-bar> 
<options> <menu-set-font> <down-mouse-3> <mouse-3> 
<down-mouse-1> <mouse-1> <down-mouse-3> <mouse-3> <S-down-mouse-1> 
<up> <up> <up> <down> <left> <left> <left> <left> C-u 
C-x = <right> C-u C-x = M-x e m a c s - r e [ p <backspace> 
<backspace> p o <tab> <backspace> <backspace> <backspace> 
<backspace> b u <tab> <backspace> <backspace> <backspace> 
C-a r e p o r t - C-e - b u <tab> <return>

Recent messages:
Generating summary...done
call-interactively: Beginning of buffer
Mark set [2 times]
Auto-saving...done
Auto-saving...done
Auto-saving...done
Buffer-Face mode enabled
Type C-x 1 to delete the help window, C-M-v to scroll help.
Char: h (104, #o150, #x68) point=1549 of 2036 (76%) <791-2037> column=2
Char: ä (228, #o344, #xe4, file ...) point=1550 of 2036 (76%) <791-2037> column=3

-- 
David Kastrup




Information forwarded to bug-submit-list <at> lists.donarmstrong.com, Emacs Bugs <bug-gnu-emacs <at> gnu.org>:
bug#2667; Package emacs. (Tue, 17 Mar 2009 07:45: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>. (Tue, 17 Mar 2009 07:45:03 GMT) Full text and rfc822 format available.

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

From: Kenichi Handa <handa <at> m17n.org>
To: David Kastrup <dak <at> gnu.org>, 2667 <at> debbugs.gnu.org
Subject: Re: bug#2667: 23.0.91; Inconsistent fonts
Date: Tue, 17 Mar 2009 16:39:56 +0900
In article <85r6115d0a.fsf <at> lola.goethe.zz>, David Kastrup <dak <at> gnu.org> writes:

> If I write something like "Schätzchen" after selecting a Unicode-capable
> font in the font menu (in this case LMSans12), I get on the S

>         character: S (83, #o123, #x53)
[...]
>     xft:-unknown-LMSans12-normal-normal-normal-*-16-*-*-*-*-0-iso10646-1 (#x10C)
[...]
> But on the ä I get

>         character: ä (228, #o344, #xe4)
[...]
>     x:-misc-fixed-medium-r-normal--15-140-75-75-c-90-iso10646-1 (#xE4)
[...]
> What is wrong here?  Why does it not use the LM font?

I can't reproduce it with the latest code.  Please show me
the result of this:

% emacs -Q
M-x set-default-font RET lmsans12 RET
ESC : (setq font-log nil) RET
ESC : (insert "Schätzchen") RET
M-x font-show-log RET

What I get in *Help* buffer is this:
----------------------------------------------------------------------
font for: (228)
list: -unknown-LMSans12-*-iso10646-1
  -unknown-LMSans12-normal-oblique-normal-*-0-iso10646-1
  -unknown-LMSans12-normal-normal-normal-*-0-iso10646-1
sort-by: -*-normal-normal-normal-*-17-*
  xft:-unknown-LMSans12-normal-normal-normal-*-0-iso10646-1
font for: (228)
list: -unknown-LMSans12-normal-*-normal-*-0-iso10646-1
  -unknown-LMSans12-normal-normal-normal-*-0-iso10646-1
  -unknown-LMSans12-normal-oblique-normal-*-0-iso10646-1
sort-by: -*-normal-italic-normal-*-17-*
  xft:-unknown-LMSans12-normal-oblique-normal-*-0-iso10646-1
open: -unknown-LMSans12-normal-oblique-normal-*-0-iso10646-1
  xft:-unknown-LMSans12-normal-oblique-normal-*-17-*-0-iso10646-1
----------------------------------------------------------------------

---
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#2667; Package emacs. (Wed, 06 May 2009 04:25:03 GMT) Full text and rfc822 format available.

Acknowledgement sent to Stefan Monnier <monnier <at> iro.umontreal.ca>:
Extra info received and forwarded to list. Copy sent to Emacs Bugs <bug-gnu-emacs <at> gnu.org>. (Wed, 06 May 2009 04:25:03 GMT) Full text and rfc822 format available.

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

From: Stefan Monnier <monnier <at> iro.umontreal.ca>
To: 2667 <at> debbugs.gnu.org
Subject: Still seeing inconsistent fonts
Date: Wed, 06 May 2009 00:17:23 -0400
I also noticed recently that my fonts are inconsistent: when writing
math symbols (mostly greek letters), I notice that they do not use my
misc-fixed font but "DejaVu Sans" instead.

E.g.:

  > xrdb -remove; rm ~/.Xdefaults
  > emacs -Q ~/re/papers/comp-deptypes/main.tex
  M-: (setq font-log nil) RET
  M-: (set-face-font 'default "-misc-fixed-medium-r-semicondensed--13-*-*-*-*-*-*-*")

And now all my latin text uses my beloved misc-fixed:

    x:-misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso8859-1 (#x3A)

but all the math symbols use "DejaVu Sans":

    xft:-unknown-DejaVu Sans-normal-normal-semi-condensed-*-13-*-*-*-*-0-iso10646-1 (#xC3E)

The output of font-show-log is appended.  The same steps with Emacs-22
correctly use the misc-fixed font, of course.


        Stefan


font for: (8322)
ftfont-list: -misc-fixed-*--*-iso8859-1
xfont-list: -misc-fixed-*-*-*--*-*-*-*-*-*-iso8859-1
  -misc-fixed-medium-r-semicondensed--13-*-75-75-c-60-iso8859-1
  -misc-fixed-medium-r-semicondensed--13-*-100-100-c-60-iso8859-1
  -misc-fixed-medium-r-semicondensed--12-*-100-100-c-60-iso8859-1
  -misc-fixed-medium-r-semicondensed--12-*-75-75-c-60-iso8859-1
  -misc-fixed-medium-r-normal--9-*-75-75-c-60-iso8859-1
  -misc-fixed-medium-r-normal--9-*-100-100-c-60-iso8859-1
  -misc-fixed-medium-r-normal--8-*-75-75-c-50-iso8859-1
  -misc-fixed-medium-r-normal--8-*-100-100-c-50-iso8859-1
  -misc-fixed-medium-r-normal--7-*-75-75-c-50-iso8859-1
  -misc-fixed-medium-r-normal--7-*-100-100-c-50-iso8859-1
  -misc-fixed-medium-r-normal--6-*-75-75-c-40-iso8859-1
  -misc-fixed-medium-r-normal--20-*-75-75-c-100-iso8859-1
  -misc-fixed-medium-r-normal--20-*-100-100-c-100-iso8859-1
  -misc-fixed-medium-r-normal--18-*-100-100-c-90-iso8859-1
  -misc-fixed-medium-r-normal--15-*-75-75-c-90-iso8859-1
  -misc-fixed-medium-r-normal--15-*-100-100-c-90-iso8859-1
  -misc-fixed-medium-r-normal--14-*-75-75-c-70-iso8859-1
  -misc-fixed-medium-r-normal--14-*-100-100-c-70-iso8859-1
  -misc-fixed-medium-r-normal--13-*-75-75-c-80-iso8859-1
  ...
list: -misc-fixed-medium-r-semicondensed--*-iso8859-1
  -misc-fixed-medium-r-semicondensed--13-*-75-75-c-60-iso8859-1
  -misc-fixed-medium-r-semicondensed--13-*-100-100-c-60-iso8859-1
  -misc-fixed-medium-r-semicondensed--12-*-100-100-c-60-iso8859-1
  -misc-fixed-medium-r-semicondensed--12-*-75-75-c-60-iso8859-1
sort-by: -*-unspecified-unspecified-unspecified-*-13-*
  x:-misc-fixed-medium-r-semicondensed--13-*-75-75-c-60-iso8859-1
open: -misc-fixed-medium-r-semicondensed--13-*-75-75-c-60-iso8859-1
  x:-misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso8859-1
list: -misc-fixed-medium-r-semicondensed--*-iso8859-1
  -misc-fixed-medium-r-semicondensed--13-*-75-75-c-60-iso8859-1
  -misc-fixed-medium-r-semicondensed--13-*-100-100-c-60-iso8859-1
  -misc-fixed-medium-r-semicondensed--12-*-100-100-c-60-iso8859-1
  -misc-fixed-medium-r-semicondensed--12-*-75-75-c-60-iso8859-1
sort-by: -*-normal-normal-normal-*-13-*
  x:-misc-fixed-medium-r-semicondensed--13-*-75-75-c-60-iso8859-1
ftfont-list: -misc-fixed-*--*-c-*-iso8859-1
xfont-list: -misc-fixed-*-*-*--*-*-*-*-c-*-iso8859-1
  -misc-fixed-medium-r-semicondensed--13-*-75-75-c-60-iso8859-1
  -misc-fixed-medium-r-semicondensed--13-*-100-100-c-60-iso8859-1
  -misc-fixed-medium-r-semicondensed--12-*-100-100-c-60-iso8859-1
  -misc-fixed-medium-r-semicondensed--12-*-75-75-c-60-iso8859-1
  -misc-fixed-medium-r-normal--9-*-75-75-c-60-iso8859-1
  -misc-fixed-medium-r-normal--9-*-100-100-c-60-iso8859-1
  -misc-fixed-medium-r-normal--8-*-75-75-c-50-iso8859-1
  -misc-fixed-medium-r-normal--8-*-100-100-c-50-iso8859-1
  -misc-fixed-medium-r-normal--7-*-75-75-c-50-iso8859-1
  -misc-fixed-medium-r-normal--7-*-100-100-c-50-iso8859-1
  -misc-fixed-medium-r-normal--6-*-75-75-c-40-iso8859-1
  -misc-fixed-medium-r-normal--20-*-75-75-c-100-iso8859-1
  -misc-fixed-medium-r-normal--20-*-100-100-c-100-iso8859-1
  -misc-fixed-medium-r-normal--18-*-100-100-c-90-iso8859-1
  -misc-fixed-medium-r-normal--15-*-75-75-c-90-iso8859-1
  -misc-fixed-medium-r-normal--15-*-100-100-c-90-iso8859-1
  -misc-fixed-medium-r-normal--14-*-75-75-c-70-iso8859-1
  -misc-fixed-medium-r-normal--14-*-100-100-c-70-iso8859-1
  -misc-fixed-medium-r-normal--13-*-75-75-c-80-iso8859-1
  ...
list: -misc-fixed-*-r-semicondensed--*-75-75-c-60-iso8859-1
  -misc-fixed-medium-r-semicondensed--13-*-75-75-c-60-iso8859-1
  -misc-fixed-medium-r-semicondensed--12-*-75-75-c-60-iso8859-1
  -misc-fixed-bold-r-semicondensed--13-*-75-75-c-60-iso8859-1
sort-by: -*-light-r-semicondensed-*-13-*
  x:-misc-fixed-medium-r-semicondensed--13-*-75-75-c-60-iso8859-1
open: -misc-fixed-medium-r-semicondensed--13-*-75-75-c-60-iso8859-1
  x:-misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso8859-1
list: -misc-fixed-*-r-semicondensed--*-75-75-c-60-iso8859-1
  -misc-fixed-medium-r-semicondensed--13-*-75-75-c-60-iso8859-1
  -misc-fixed-medium-r-semicondensed--12-*-75-75-c-60-iso8859-1
  -misc-fixed-bold-r-semicondensed--13-*-75-75-c-60-iso8859-1
sort-by: -*-light-r-semicondensed-*-13-*
  x:-misc-fixed-medium-r-semicondensed--13-*-75-75-c-60-iso8859-1
font for: (8321)
ftfont-list: -misc-fixed-*--*-iso10646-1:script=symbol
list: -misc-fixed-*--*-iso10646-1:script=symbol
ftfont-list: -misc-fixed-*-iso10646-1:script=symbol
list: -misc-fixed-*-iso10646-1:script=symbol
ftfont-list: -*-fixed-*--*-iso10646-1:script=symbol
list: -*-fixed-*--*-iso10646-1:script=symbol
ftfont-list: -*-fixed-*-iso10646-1:script=symbol
list: -*-fixed-*-iso10646-1:script=symbol
ftfont-list: -misc-*--*-iso10646-1:script=symbol
list: -misc-*--*-iso10646-1:script=symbol
ftfont-list: -misc-*-iso10646-1:script=symbol
list: -misc-*-iso10646-1:script=symbol
ftfont-list: -*--*-iso10646-1:script=symbol
  -microsoft-Georgia-normal-italic-normal-*-0-iso10646-1
  -monotype-Arial-bold-normal-normal-*-0-iso10646-1
  -urw-Nimbus Mono L-normal-normal-normal-*-m-0-iso10646-1
  -unknown-DejaVu Serif-bold-normal-normal-*-0-iso10646-1
  -unknown-DejaVu Sans-bold-normal-semi-condensed-*-0-iso10646-1
  -monotype-Times New Roman-normal-italic-normal-*-0-iso10646-1
  -microsoft-Verdana-normal-italic-normal-*-0-iso10646-1
  -unknown-Liberation Sans-normal-normal-normal-*-0-iso10646-1
  -bitstream-Courier 10 Pitch-normal-italic-normal-*-m-0-iso10646-1
  -monotype-Andale Mono-normal-normal-normal-*-m-0-iso10646-1
  -urw-URW Bookman L-normal-italic-normal-*-0-iso10646-1
  -microsoft-Verdana-bold-italic-normal-*-0-iso10646-1
  -unknown-DejaVu Serif-normal-italic-normal-*-0-iso10646-1
  -urw-Nimbus Sans L-normal-normal-normal-*-0-iso10646-1
  -microsoft-Trebuchet MS-bold-italic-normal-*-0-iso10646-1
  -monotype-Arial Black-normal-normal-normal-*-0-iso10646-1
  -monotype-Times New Roman-bold-normal-normal-*-0-iso10646-1
  -unknown-DejaVu Sans-bold-oblique-semi-condensed-*-0-iso10646-1
  -monotype-Times New Roman-bold-italic-normal-*-0-iso10646-1
  ...
list: -*--*-iso10646-1:script=symbol
  -microsoft-Georgia-normal-italic-normal-*-0-iso10646-1
  -monotype-Arial-bold-normal-normal-*-0-iso10646-1
  -urw-Nimbus Mono L-normal-normal-normal-*-m-0-iso10646-1
  -unknown-DejaVu Serif-bold-normal-normal-*-0-iso10646-1
  -unknown-DejaVu Sans-bold-normal-semi-condensed-*-0-iso10646-1
  -monotype-Times New Roman-normal-italic-normal-*-0-iso10646-1
  -microsoft-Verdana-normal-italic-normal-*-0-iso10646-1
  -unknown-Liberation Sans-normal-normal-normal-*-0-iso10646-1
  -bitstream-Courier 10 Pitch-normal-italic-normal-*-m-0-iso10646-1
  -monotype-Andale Mono-normal-normal-normal-*-m-0-iso10646-1
  -urw-URW Bookman L-normal-italic-normal-*-0-iso10646-1
  -microsoft-Verdana-bold-italic-normal-*-0-iso10646-1
  -unknown-DejaVu Serif-normal-italic-normal-*-0-iso10646-1
  -urw-Nimbus Sans L-normal-normal-normal-*-0-iso10646-1
  -microsoft-Trebuchet MS-bold-italic-normal-*-0-iso10646-1
  -monotype-Arial Black-normal-normal-normal-*-0-iso10646-1
  -monotype-Times New Roman-bold-normal-normal-*-0-iso10646-1
  -unknown-DejaVu Sans-bold-oblique-semi-condensed-*-0-iso10646-1
  -monotype-Times New Roman-bold-italic-normal-*-0-iso10646-1
  ...
sort-by: -*-medium-r-semicondensed-*-13-*
  xft:-unknown-DejaVu Sans-normal-normal-semi-condensed-*-0-iso10646-1
open: -unknown-DejaVu Sans-normal-normal-semi-condensed-*-0-iso10646-1:script=symbol
  xft:-unknown-DejaVu Sans-normal-normal-semi-condensed-*-13-*-0-iso10646-1
font for: (8704)
list: -misc-fixed-*--*-iso10646-1:script=symbol
list: -misc-fixed-*-iso10646-1:script=symbol
list: -*-fixed-*--*-iso10646-1:script=symbol
list: -*-fixed-*-iso10646-1:script=symbol
list: -misc-*--*-iso10646-1:script=symbol
list: -misc-*-iso10646-1:script=symbol
list: -*--*-iso10646-1:script=symbol
  -microsoft-Georgia-normal-italic-normal-*-0-iso10646-1
  -monotype-Arial-bold-normal-normal-*-0-iso10646-1
  -urw-Nimbus Mono L-normal-normal-normal-*-m-0-iso10646-1
  -unknown-DejaVu Serif-bold-normal-normal-*-0-iso10646-1
  -unknown-DejaVu Sans-bold-normal-semi-condensed-*-0-iso10646-1
  -monotype-Times New Roman-normal-italic-normal-*-0-iso10646-1
  -microsoft-Verdana-normal-italic-normal-*-0-iso10646-1
  -unknown-Liberation Sans-normal-normal-normal-*-0-iso10646-1
  -bitstream-Courier 10 Pitch-normal-italic-normal-*-m-0-iso10646-1
  -monotype-Andale Mono-normal-normal-normal-*-m-0-iso10646-1
  -urw-URW Bookman L-normal-italic-normal-*-0-iso10646-1
  -microsoft-Verdana-bold-italic-normal-*-0-iso10646-1
  -unknown-DejaVu Serif-normal-italic-normal-*-0-iso10646-1
  -urw-Nimbus Sans L-normal-normal-normal-*-0-iso10646-1
  -microsoft-Trebuchet MS-bold-italic-normal-*-0-iso10646-1
  -monotype-Arial Black-normal-normal-normal-*-0-iso10646-1
  -monotype-Times New Roman-bold-normal-normal-*-0-iso10646-1
  -unknown-DejaVu Sans-bold-oblique-semi-condensed-*-0-iso10646-1
  -monotype-Times New Roman-bold-italic-normal-*-0-iso10646-1
  ...
sort-by: -*-medium-r-semicondensed-*-13-*
  xft:-unknown-DejaVu Sans-normal-normal-semi-condensed-*-0-iso10646-1
font for: (928)
list: -misc-fixed-*--*-iso10646-1:script=symbol
list: -misc-fixed-*-iso10646-1:script=symbol
list: -*-fixed-*--*-iso10646-1:script=symbol
list: -*-fixed-*-iso10646-1:script=symbol
list: -misc-*--*-iso10646-1:script=symbol
list: -misc-*-iso10646-1:script=symbol
list: -*--*-iso10646-1:script=symbol
  -microsoft-Georgia-normal-italic-normal-*-0-iso10646-1
  -monotype-Arial-bold-normal-normal-*-0-iso10646-1
  -urw-Nimbus Mono L-normal-normal-normal-*-m-0-iso10646-1
  -unknown-DejaVu Serif-bold-normal-normal-*-0-iso10646-1
  -unknown-DejaVu Sans-bold-normal-semi-condensed-*-0-iso10646-1
  -monotype-Times New Roman-normal-italic-normal-*-0-iso10646-1
  -microsoft-Verdana-normal-italic-normal-*-0-iso10646-1
  -unknown-Liberation Sans-normal-normal-normal-*-0-iso10646-1
  -bitstream-Courier 10 Pitch-normal-italic-normal-*-m-0-iso10646-1
  -monotype-Andale Mono-normal-normal-normal-*-m-0-iso10646-1
  -urw-URW Bookman L-normal-italic-normal-*-0-iso10646-1
  -microsoft-Verdana-bold-italic-normal-*-0-iso10646-1
  -unknown-DejaVu Serif-normal-italic-normal-*-0-iso10646-1
  -urw-Nimbus Sans L-normal-normal-normal-*-0-iso10646-1
  -microsoft-Trebuchet MS-bold-italic-normal-*-0-iso10646-1
  -monotype-Arial Black-normal-normal-normal-*-0-iso10646-1
  -monotype-Times New Roman-bold-normal-normal-*-0-iso10646-1
  -unknown-DejaVu Sans-bold-oblique-semi-condensed-*-0-iso10646-1
  -monotype-Times New Roman-bold-italic-normal-*-0-iso10646-1
  ...
sort-by: -*-medium-r-semicondensed-*-13-*
  xft:-unknown-DejaVu Sans-normal-normal-semi-condensed-*-0-iso10646-1
font for: (964)
list: -misc-fixed-*--*-iso10646-1:script=symbol
list: -misc-fixed-*-iso10646-1:script=symbol
list: -*-fixed-*--*-iso10646-1:script=symbol
list: -*-fixed-*-iso10646-1:script=symbol
list: -misc-*--*-iso10646-1:script=symbol
list: -misc-*-iso10646-1:script=symbol
list: -*--*-iso10646-1:script=symbol
  -microsoft-Georgia-normal-italic-normal-*-0-iso10646-1
  -monotype-Arial-bold-normal-normal-*-0-iso10646-1
  -urw-Nimbus Mono L-normal-normal-normal-*-m-0-iso10646-1
  -unknown-DejaVu Serif-bold-normal-normal-*-0-iso10646-1
  -unknown-DejaVu Sans-bold-normal-semi-condensed-*-0-iso10646-1
  -monotype-Times New Roman-normal-italic-normal-*-0-iso10646-1
  -microsoft-Verdana-normal-italic-normal-*-0-iso10646-1
  -unknown-Liberation Sans-normal-normal-normal-*-0-iso10646-1
  -bitstream-Courier 10 Pitch-normal-italic-normal-*-m-0-iso10646-1
  -monotype-Andale Mono-normal-normal-normal-*-m-0-iso10646-1
  -urw-URW Bookman L-normal-italic-normal-*-0-iso10646-1
  -microsoft-Verdana-bold-italic-normal-*-0-iso10646-1
  -unknown-DejaVu Serif-normal-italic-normal-*-0-iso10646-1
  -urw-Nimbus Sans L-normal-normal-normal-*-0-iso10646-1
  -microsoft-Trebuchet MS-bold-italic-normal-*-0-iso10646-1
  -monotype-Arial Black-normal-normal-normal-*-0-iso10646-1
  -monotype-Times New Roman-bold-normal-normal-*-0-iso10646-1
  -unknown-DejaVu Sans-bold-oblique-semi-condensed-*-0-iso10646-1
  -monotype-Times New Roman-bold-italic-normal-*-0-iso10646-1
  ...
sort-by: -*-medium-r-semicondensed-*-13-*
  xft:-unknown-DejaVu Sans-normal-normal-semi-condensed-*-0-iso10646-1
font for: (8614)
list: -misc-fixed-*--*-iso10646-1:script=symbol
list: -misc-fixed-*-iso10646-1:script=symbol
list: -*-fixed-*--*-iso10646-1:script=symbol
list: -*-fixed-*-iso10646-1:script=symbol
list: -misc-*--*-iso10646-1:script=symbol
list: -misc-*-iso10646-1:script=symbol
list: -*--*-iso10646-1:script=symbol
  -microsoft-Georgia-normal-italic-normal-*-0-iso10646-1
  -monotype-Arial-bold-normal-normal-*-0-iso10646-1
  -urw-Nimbus Mono L-normal-normal-normal-*-m-0-iso10646-1
  -unknown-DejaVu Serif-bold-normal-normal-*-0-iso10646-1
  -unknown-DejaVu Sans-bold-normal-semi-condensed-*-0-iso10646-1
  -monotype-Times New Roman-normal-italic-normal-*-0-iso10646-1
  -microsoft-Verdana-normal-italic-normal-*-0-iso10646-1
  -unknown-Liberation Sans-normal-normal-normal-*-0-iso10646-1
  -bitstream-Courier 10 Pitch-normal-italic-normal-*-m-0-iso10646-1
  -monotype-Andale Mono-normal-normal-normal-*-m-0-iso10646-1
  -urw-URW Bookman L-normal-italic-normal-*-0-iso10646-1
  -microsoft-Verdana-bold-italic-normal-*-0-iso10646-1
  -unknown-DejaVu Serif-normal-italic-normal-*-0-iso10646-1
  -urw-Nimbus Sans L-normal-normal-normal-*-0-iso10646-1
  -microsoft-Trebuchet MS-bold-italic-normal-*-0-iso10646-1
  -monotype-Arial Black-normal-normal-normal-*-0-iso10646-1
  -monotype-Times New Roman-bold-normal-normal-*-0-iso10646-1
  -unknown-DejaVu Sans-bold-oblique-semi-condensed-*-0-iso10646-1
  -monotype-Times New Roman-bold-italic-normal-*-0-iso10646-1
  ...
sort-by: -*-medium-r-semicondensed-*-13-*
  xft:-unknown-DejaVu Sans-normal-normal-semi-condensed-*-0-iso10646-1
font for: (8594)
list: -misc-fixed-*--*-iso10646-1:script=symbol
list: -misc-fixed-*-iso10646-1:script=symbol
list: -*-fixed-*--*-iso10646-1:script=symbol
list: -*-fixed-*-iso10646-1:script=symbol
list: -misc-*--*-iso10646-1:script=symbol
list: -misc-*-iso10646-1:script=symbol
list: -*--*-iso10646-1:script=symbol
  -microsoft-Georgia-normal-italic-normal-*-0-iso10646-1
  -monotype-Arial-bold-normal-normal-*-0-iso10646-1
  -urw-Nimbus Mono L-normal-normal-normal-*-m-0-iso10646-1
  -unknown-DejaVu Serif-bold-normal-normal-*-0-iso10646-1
  -unknown-DejaVu Sans-bold-normal-semi-condensed-*-0-iso10646-1
  -monotype-Times New Roman-normal-italic-normal-*-0-iso10646-1
  -microsoft-Verdana-normal-italic-normal-*-0-iso10646-1
  -unknown-Liberation Sans-normal-normal-normal-*-0-iso10646-1
  -bitstream-Courier 10 Pitch-normal-italic-normal-*-m-0-iso10646-1
  -monotype-Andale Mono-normal-normal-normal-*-m-0-iso10646-1
  -urw-URW Bookman L-normal-italic-normal-*-0-iso10646-1
  -microsoft-Verdana-bold-italic-normal-*-0-iso10646-1
  -unknown-DejaVu Serif-normal-italic-normal-*-0-iso10646-1
  -urw-Nimbus Sans L-normal-normal-normal-*-0-iso10646-1
  -microsoft-Trebuchet MS-bold-italic-normal-*-0-iso10646-1
  -monotype-Arial Black-normal-normal-normal-*-0-iso10646-1
  -monotype-Times New Roman-bold-normal-normal-*-0-iso10646-1
  -unknown-DejaVu Sans-bold-oblique-semi-condensed-*-0-iso10646-1
  -monotype-Times New Roman-bold-italic-normal-*-0-iso10646-1
  ...
sort-by: -*-medium-r-semicondensed-*-13-*
  xft:-unknown-DejaVu Sans-normal-normal-semi-condensed-*-0-iso10646-1
font for: (937)
list: -misc-fixed-*--*-iso10646-1:script=symbol
list: -misc-fixed-*-iso10646-1:script=symbol
list: -*-fixed-*--*-iso10646-1:script=symbol
list: -*-fixed-*-iso10646-1:script=symbol
list: -misc-*--*-iso10646-1:script=symbol
list: -misc-*-iso10646-1:script=symbol
list: -*--*-iso10646-1:script=symbol
  -microsoft-Georgia-normal-italic-normal-*-0-iso10646-1
  -monotype-Arial-bold-normal-normal-*-0-iso10646-1
  -urw-Nimbus Mono L-normal-normal-normal-*-m-0-iso10646-1
  -unknown-DejaVu Serif-bold-normal-normal-*-0-iso10646-1
  -unknown-DejaVu Sans-bold-normal-semi-condensed-*-0-iso10646-1
  -monotype-Times New Roman-normal-italic-normal-*-0-iso10646-1
  -microsoft-Verdana-normal-italic-normal-*-0-iso10646-1
  -unknown-Liberation Sans-normal-normal-normal-*-0-iso10646-1
  -bitstream-Courier 10 Pitch-normal-italic-normal-*-m-0-iso10646-1
  -monotype-Andale Mono-normal-normal-normal-*-m-0-iso10646-1
  -urw-URW Bookman L-normal-italic-normal-*-0-iso10646-1
  -microsoft-Verdana-bold-italic-normal-*-0-iso10646-1
  -unknown-DejaVu Serif-normal-italic-normal-*-0-iso10646-1
  -urw-Nimbus Sans L-normal-normal-normal-*-0-iso10646-1
  -microsoft-Trebuchet MS-bold-italic-normal-*-0-iso10646-1
  -monotype-Arial Black-normal-normal-normal-*-0-iso10646-1
  -monotype-Times New Roman-bold-normal-normal-*-0-iso10646-1
  -unknown-DejaVu Sans-bold-oblique-semi-condensed-*-0-iso10646-1
  -monotype-Times New Roman-bold-italic-normal-*-0-iso10646-1
  ...
sort-by: -*-medium-r-semicondensed-*-13-*
  xft:-unknown-DejaVu Sans-normal-normal-semi-condensed-*-0-iso10646-1
font for: (8658)
list: -misc-fixed-*--*-iso10646-1:script=symbol
list: -misc-fixed-*-iso10646-1:script=symbol
list: -*-fixed-*--*-iso10646-1:script=symbol
list: -*-fixed-*-iso10646-1:script=symbol
list: -misc-*--*-iso10646-1:script=symbol
list: -misc-*-iso10646-1:script=symbol
list: -*--*-iso10646-1:script=symbol
  -microsoft-Georgia-normal-italic-normal-*-0-iso10646-1
  -monotype-Arial-bold-normal-normal-*-0-iso10646-1
  -urw-Nimbus Mono L-normal-normal-normal-*-m-0-iso10646-1
  -unknown-DejaVu Serif-bold-normal-normal-*-0-iso10646-1
  -unknown-DejaVu Sans-bold-normal-semi-condensed-*-0-iso10646-1
  -monotype-Times New Roman-normal-italic-normal-*-0-iso10646-1
  -microsoft-Verdana-normal-italic-normal-*-0-iso10646-1
  -unknown-Liberation Sans-normal-normal-normal-*-0-iso10646-1
  -bitstream-Courier 10 Pitch-normal-italic-normal-*-m-0-iso10646-1
  -monotype-Andale Mono-normal-normal-normal-*-m-0-iso10646-1
  -urw-URW Bookman L-normal-italic-normal-*-0-iso10646-1
  -microsoft-Verdana-bold-italic-normal-*-0-iso10646-1
  -unknown-DejaVu Serif-normal-italic-normal-*-0-iso10646-1
  -urw-Nimbus Sans L-normal-normal-normal-*-0-iso10646-1
  -microsoft-Trebuchet MS-bold-italic-normal-*-0-iso10646-1
  -monotype-Arial Black-normal-normal-normal-*-0-iso10646-1
  -monotype-Times New Roman-bold-normal-normal-*-0-iso10646-1
  -unknown-DejaVu Sans-bold-oblique-semi-condensed-*-0-iso10646-1
  -monotype-Times New Roman-bold-italic-normal-*-0-iso10646-1
  ...
sort-by: -*-medium-r-semicondensed-*-13-*
  xft:-unknown-DejaVu Sans-normal-normal-semi-condensed-*-0-iso10646-1
font for: (937)
list: -misc-fixed-*-r-semicondensed--*-75-75-c-60-iso8859-1
  -misc-fixed-medium-r-semicondensed--13-*-75-75-c-60-iso8859-1
  -misc-fixed-medium-r-semicondensed--12-*-75-75-c-60-iso8859-1
  -misc-fixed-bold-r-semicondensed--13-*-75-75-c-60-iso8859-1
sort-by: -*-bold-r-semicondensed-*-13-*
  x:-misc-fixed-bold-r-semicondensed--13-*-75-75-c-60-iso8859-1
open: -misc-fixed-bold-r-semicondensed--13-*-75-75-c-60-iso8859-1
  x:-misc-fixed-bold-r-semicondensed--13-120-75-75-c-60-iso8859-1
font for: (937)
list: -misc-fixed-medium-*-semicondensed--*-75-75-c-60-iso8859-1
  -misc-fixed-medium-r-semicondensed--13-*-75-75-c-60-iso8859-1
  -misc-fixed-medium-r-semicondensed--12-*-75-75-c-60-iso8859-1
  -misc-fixed-medium-o-semicondensed--13-*-75-75-c-60-iso8859-1
sort-by: -*-medium-italic-semicondensed-*-13-*
  x:-misc-fixed-medium-o-semicondensed--13-*-75-75-c-60-iso8859-1
open: -misc-fixed-medium-o-semicondensed--13-*-75-75-c-60-iso8859-1
  x:-misc-fixed-medium-o-semicondensed--13-120-75-75-c-60-iso8859-1




Severity set to `serious' from `normal' Request was from Stefan Monnier <monnier <at> iro.umontreal.ca> to control <at> emacsbugs.donarmstrong.com. (Wed, 06 May 2009 04:25:05 GMT) Full text and rfc822 format available.

Information forwarded to bug-submit-list <at> lists.donarmstrong.com, Emacs Bugs <bug-gnu-emacs <at> gnu.org>:
bug#2667; Package emacs. (Fri, 08 May 2009 03:45: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, 08 May 2009 03:45:03 GMT) Full text and rfc822 format available.

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

From: Chong Yidong <cyd <at> stupidchicken.com>
To: Stefan Monnier <monnier <at> iro.umontreal.ca>
Cc: 2667 <at> debbugs.gnu.org
Subject: Re: Still seeing inconsistent fonts
Date: Thu, 07 May 2009 23:41:28 -0400
> I also noticed recently that my fonts are inconsistent: when writing
> math symbols (mostly greek letters), I notice that they do not use my
> misc-fixed font but "DejaVu Sans" instead.
>
>   > xrdb -remove; rm ~/.Xdefaults
>   > emacs -Q ~/re/papers/comp-deptypes/main.tex
>   M-: (setq font-log nil) RET
>   M-: (set-face-font 'default
>   > "-misc-fixed-medium-r-semicondensed--13-*-*-*-*-*-*-*")
>
> And now all my latin text uses my beloved misc-fixed
> but all the math symbols use "DejaVu Sans"

I can't reproduce this.  Could you provide a self-contained testcase?




Information forwarded to bug-submit-list <at> lists.donarmstrong.com, Emacs Bugs <bug-gnu-emacs <at> gnu.org>:
bug#2667; Package emacs. (Fri, 08 May 2009 20:05:07 GMT) Full text and rfc822 format available.

Acknowledgement sent to Stefan Monnier <monnier <at> IRO.UMontreal.CA>:
Extra info received and forwarded to list. Copy sent to Emacs Bugs <bug-gnu-emacs <at> gnu.org>. (Fri, 08 May 2009 20:05:07 GMT) Full text and rfc822 format available.

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

From: Stefan Monnier <monnier <at> IRO.UMontreal.CA>
To: Chong Yidong <cyd <at> stupidchicken.com>
Cc: 2667 <at> debbugs.gnu.org
Subject: Re: Still seeing inconsistent fonts
Date: Fri, 08 May 2009 15:58:31 -0400
> I can't reproduce this.  Could you provide a self-contained testcase?

Sure:

   > xrdb -remove
   > rm ~/.Xdefaults
   > src/emacs -Q --eval '(set-face-font (quote default) \
       "-misc-fixed-medium-r-semicondensed--13-*-*-*-*-*-*-*")'
   C-u C-\ TeX RET
   a
   \ ' e
   \ ' r
   \ f o r a l l

"aéŕ" use misc-fixed-semicondensed (the first two with iso8859-1 and
the last with iso8859-2), but "∀" is displayed with
xft:-unknown-DejaVu Sans-normal-normal-semi-condensed-*-13-*-*-*-*-0-iso10646-1

Note that Emacs-22.3 used
-Misc-Fixed-Medium-R-SemiCondensed--13-120-75-75-C-60-ISO10646-1 for
both "ŕ" and "∀".


        Stefan




Information forwarded to bug-submit-list <at> lists.donarmstrong.com, Emacs Bugs <bug-gnu-emacs <at> gnu.org>:
bug#2667; Package emacs. (Mon, 11 May 2009 12:25:05 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, 11 May 2009 12:25:05 GMT) Full text and rfc822 format available.

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

From: Kenichi Handa <handa <at> m17n.org>
To: Stefan Monnier <monnier <at> IRO.UMontreal.CA>, 2667 <at> debbugs.gnu.org
Cc: cyd <at> stupidchicken.com, 2667 <at> debbugs.gnu.org
Subject: Re: bug#2667: Still seeing inconsistent fonts
Date: Mon, 11 May 2009 21:21:45 +0900
Sorry for the late response on this matter.

In article <jwv7i0rml4c.fsf-monnier+emacsbugreports <at> gnu.org>, Stefan Monnier <monnier <at> IRO.UMontreal.CA> writes:

> > I can't reproduce this.  Could you provide a self-contained testcase?
> Sure:

> xrdb -remove
> rm ~/.Xdefaults
> src/emacs -Q --eval '(set-face-font (quote default) \
>        "-misc-fixed-medium-r-semicondensed--13-*-*-*-*-*-*-*")'
>    C-u C-\ TeX RET
>    a
>    \ ' e
>    \ ' r
>    \ f o r a l l

> "aéŕ" use misc-fixed-semicondensed (the first two with iso8859-1 and
> the last with iso8859-2), but "∀" is displayed with
> xft:-unknown-DejaVu Sans-normal-normal-semi-condensed-*-13-*-*-*-*-0-iso10646-1

∀ belongs to `symbol' script, but the xfont backend didn't
support :script font property.  That is because I was afraid
that it made the font listing extremely slow (we must open
all iso10646-1 fonts to check if it supports the requested
characters).  Actually my trial implementation of :script
property supports took more than 1 minute to display HELLO
file.

But, if we can use this heuristic:

   X fonts that have the same property values except for
   size related properties supports the same set of
   characters on all display.  For example, all these fonts 

-adobe-courier-medium-r-normal--8-80-75-75-m-50-iso10646-1
-adobe-courier-medium-r-normal--10-100-75-75-m-60-iso10646-1
-adobe-courier-medium-r-normal--11-80-100-100-m-60-iso10646-1
-adobe-courier-medium-r-normal--12-120-75-75-m-70-iso10646-1
-adobe-courier-medium-r-normal--14-100-100-100-m-90-iso10646-1
-adobe-courier-medium-r-normal--14-140-75-75-m-90-iso10646-1
-adobe-courier-medium-r-normal--17-120-100-100-m-100-iso10646-1
-adobe-courier-medium-r-normal--18-180-75-75-m-110-iso10646-1
-adobe-courier-medium-r-normal--20-140-100-100-m-110-iso10646-1
-adobe-courier-medium-r-normal--24-240-75-75-m-150-iso10646-1
-adobe-courier-medium-r-normal--25-180-100-100-m-150-iso10646-1
-adobe-courier-medium-r-normal--34-240-100-100-m-200-iso10646-1

   suports the same set of characters.

we can list fonts in a realistic time.  Attached is the
patch to try it.  Could you please test it?  As the change
is not simple, I have not yet installed it.

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

Index: xfont.c
===================================================================
RCS file: /cvsroot/emacs/emacs/src/xfont.c,v
retrieving revision 1.28
diff -u -r1.28 xfont.c
--- xfont.c	8 May 2009 06:22:40 -0000	1.28
+++ xfont.c	11 May 2009 12:03:16 -0000
@@ -256,20 +256,172 @@
   return len;
 }
 
-static Lisp_Object xfont_list_pattern P_ ((Lisp_Object, Display *, char *));
+static int xfont_chars_supported P_ ((Lisp_Object, XFontStruct *,
+				      struct charset *, struct charset *));
+
+/* Check if CHARS (cons or vector) is supported by XFONT whose
+   encoding charset is ENCODING (XFONT is NULL) or by a font whose
+   registry corresponds to ENCODING and REPERTORY.
+   Return 1 if supported, return 0 otherwise.  */
+
+static int
+xfont_chars_supported (chars, xfont, encoding, repertory)
+     Lisp_Object chars;
+     XFontStruct *xfont;
+     struct charset *encoding, *repertory;
+{
+  struct charset *charset = repertory ? repertory : encoding;
+
+  if (CONSP (chars))
+    {
+      for (; CONSP (chars); chars = XCDR (chars))
+	{
+	  int c = XINT (XCAR (chars));
+	  unsigned code = ENCODE_CHAR (charset, c);
+	  XChar2b char2b;
+
+	  if (code == CHARSET_INVALID_CODE (charset))
+	    break;
+	  if (! xfont)
+	    continue;
+	  if (code >= 0x10000)
+	    break;
+	  char2b.byte1 = code >> 8;
+	  char2b.byte2 = code & 0xFF;
+	  if (! xfont_get_pcm (xfont, &char2b))
+	    break;
+	}
+      return (NILP (chars));
+    }
+  else if (VECTORP (chars))
+    {
+      int i;
+
+      for (i = ASIZE (chars) - 1; i >= 0; i--)
+	{
+	  int c = XINT (AREF (chars, i));
+	  unsigned code = ENCODE_CHAR (charset, c);
+	  XChar2b char2b;
+
+	  if (code == CHARSET_INVALID_CODE (charset))
+	    continue;
+	  if (! xfont)
+	    break;
+	  if (code >= 0x10000)
+	    continue;
+	  char2b.byte1 = code >> 8;
+	  char2b.byte2 = code & 0xFF;
+	  if (xfont_get_pcm (xfont, &char2b))
+	    break;
+	}
+      return (i >= 0);
+    }
+  return 0;
+}
+
+/* A hash table recoding which font supports which scritps.  Each key
+   is a vector of characteristic font propertis FOUNDRY to WIDTH and
+   ADDSTYLE, and each value is a list of script symbols.
+
+   We assume that fonts that have the same value in the above
+   properties supports the same set of characters on all displays.  */
+
+static Lisp_Object xfont_scripts_cache;
+
+/* Return a list of scripts supported by the font of FONTNAME whose
+   characteristic properties are in PROPS and whose encoding charset
+   is ENCODING.  A caller must call BLOCK_INPUT in advance.  */
 
 static Lisp_Object
-xfont_list_pattern (frame, display, pattern)
-     Lisp_Object frame;
+xfont_supported_scripts (display, fontname, props, encoding)
+     Display *display;
+     char *fontname;
+     Lisp_Object props;
+     struct charset *encoding;
+{
+  Lisp_Object scripts;
+
+  /* Two special cases to avoid opening rather big fonts.  */
+  if (AREF (props, 2), Qja)
+    return Fcons (intern ("kana"), Fcons (intern ("han"), Qnil));
+  if (AREF (props, 2), Qko)
+    return Fcons (intern ("hangul"), Qnil);
+  scripts = Fgethash (props, xfont_scripts_cache, Qt);
+  if (EQ (scripts, Qt))
+    {
+      XFontStruct *xfont;
+      Lisp_Object val;
+
+      scripts = Qnil;
+      xfont = XLoadQueryFont (display, fontname);
+      if (xfont)
+	{
+	  if (xfont->per_char)
+	    {
+	      for (val = Vscript_representative_chars; CONSP (val);
+		   val = XCDR (val))
+		if (CONSP (XCAR (val)) && SYMBOLP (XCAR (XCAR (val))))
+		  {
+		    Lisp_Object script = XCAR (XCAR (val));
+		    Lisp_Object chars = XCDR (XCAR (val));
+
+		    if (xfont_chars_supported (chars, xfont, encoding, NULL))
+		      scripts = Fcons (script, scripts);
+		  }
+	    }
+	  XFreeFont (display, xfont);
+	}
+      Fputhash (Fcopy_sequence (props), scripts, xfont_scripts_cache);
+    }
+  return scripts;
+}
+
+extern Lisp_Object Vscalable_fonts_allowed;
+
+static Lisp_Object xfont_list_pattern P_ ((Display *, char *, 
+					   Lisp_Object, Lisp_Object));
+
+static Lisp_Object
+xfont_list_pattern (display, pattern, registry, script)
      Display *display;
      char *pattern;
+     Lisp_Object registry, script;
 {
   Lisp_Object list = Qnil;
+  Lisp_Object chars = Qnil;
+  struct charset *encoding, *repertory = NULL;
   int i, limit, num_fonts;
   char **names;
   /* Large enough to decode the longest XLFD (255 bytes). */
   char buf[512];
 
+  if (! NILP (registry)
+      && font_registry_charsets (registry, &encoding, &repertory) < 0)
+    /* Unknown REGISTRY, not supported.  */
+    return Qnil;
+  if (! NILP (script))
+    {
+      chars = assq_no_quit (script, Vscript_representative_chars);
+      if (NILP (chars))
+	/* We can't tell whether or not a font supports SCRIPT.  */
+	return Qnil;
+      chars = XCDR (chars);
+      if (repertory)
+	{
+	  if (! xfont_chars_supported (chars, NULL, encoding, repertory))
+	    return Qnil;
+	  script = Qnil;
+	}
+    }
+  if (! repertory && NILP (xfont_scripts_cache))
+    {
+      Lisp_Object args[2];
+
+      args[0] = QCtest;
+      args[1] = Qequal;
+      xfont_scripts_cache = Fmake_hash_table (2, args);
+    }
+      
   BLOCK_INPUT;
   x_catch_errors (display);
 
@@ -292,6 +444,8 @@
   if (num_fonts > 0)
     {
       char **indices = alloca (sizeof (char *) * num_fonts);
+      Lisp_Object props = Fmake_vector (make_number (9), Qnil);
+      Lisp_Object scripts = Qnil;
 
       for (i = 0; i < num_fonts; i++)
 	indices[i] = names[i];
@@ -300,47 +454,68 @@
       for (i = 0; i < num_fonts; i++)
 	{
 	  Lisp_Object entity;
-	  int result;
-	  char *p;
 
 	  if (i > 0 && xstrcasecmp (indices[i - 1], indices[i]) == 0)
 	    continue;
-
 	  entity = font_make_entity ();
-	  ASET (entity, FONT_TYPE_INDEX, Qx);
 	  xfont_decode_coding_xlfd (indices[i], -1, buf);
-	  result = font_parse_xlfd (buf, entity);
-	  if (result < 0)
+	  font_parse_xlfd (buf, entity);
+	  ASET (entity, FONT_TYPE_INDEX, Qx);
+	  /* Avoid auto-scaled fonts.  */
+	  if (XINT (AREF (entity, FONT_DPI_INDEX)) != 0
+	      && XINT (AREF (entity, FONT_AVGWIDTH_INDEX)) == 0)
+	    continue;
+	  /* Avoid not-allowed scalable fonts.  */
+	  if (NILP (Vscalable_fonts_allowed))
 	    {
-	      /* This may be an alias name.  Try to get the full XLFD name
-		 from XA_FONT property of the font.  */
-	      XFontStruct *font = XLoadQueryFont (display, indices[i]);
-	      unsigned long value;
-
-	      if (! font)
+	      if (XINT (AREF (entity, FONT_SIZE_INDEX)) == 0)
 		continue;
-	      if (XGetFontProperty (font, XA_FONT, &value))
-		{
-		  char *name = (char *) XGetAtomName (display, (Atom) value);
-		  int len = strlen (name);
+	    }
+	  else if (CONSP (Vscalable_fonts_allowed))
+	    {
+	      Lisp_Object tail, elt;
 
-		  /* If DXPC (a Differential X Protocol Compressor)
-		     Ver.3.7 is running, XGetAtomName will return null
-		     string.  We must avoid such a name.  */
-		  if (len > 0)
-		    {
-		      xfont_decode_coding_xlfd (indices[i], -1, buf);
-		      result = font_parse_xlfd (buf, entity);
-		    }
-		  XFree (name);
+	      for (tail = Vscalable_fonts_allowed; CONSP (tail);
+		   tail = XCDR (tail))
+		{
+		  elt = XCAR (tail);
+		  if (STRINGP (elt)
+		      && fast_c_string_match_ignore_case (elt, indices[i]) >= 0)
+		    break;
 		}
-	      XFreeFont (display, font);
+	      if (! CONSP (tail))
+		continue;
 	    }
 
-	  if (result == 0
-	      /* Avoid auto-scaled fonts.  */
-	      && (XINT (AREF (entity, FONT_DPI_INDEX)) == 0
-		  || XINT (AREF (entity, FONT_AVGWIDTH_INDEX)) > 0))
+	  /* Update encoding and repertory if necessary.  */
+	  if (! EQ (registry, AREF (entity, FONT_REGISTRY_INDEX)))
+	    {
+	      registry = AREF (entity, FONT_REGISTRY_INDEX);
+	      if (font_registry_charsets (registry, &encoding, &repertory) < 0)
+		encoding = NULL;
+	    }
+	  if (! encoding)
+	    /* Unknown REGISTRY, not supported.  */
+	    continue;
+	  if (repertory)
+	    {
+	      if (NILP (script)
+		  || xfont_chars_supported (chars, NULL, encoding, repertory))
+		list = Fcons (entity, list);
+	      continue;
+	    }
+	  if (memcmp (&(AREF (props, 0)), &(AREF (entity, FONT_FOUNDRY_INDEX)),
+		      sizeof (Lisp_Object) * 7)
+	      || ! EQ (AREF (entity, FONT_SPACING_INDEX), AREF (props, 8)))
+	    {
+	      memcpy (&(AREF (props, 0)), &(AREF (entity, FONT_FOUNDRY_INDEX)),
+		      sizeof (Lisp_Object) * 7);
+	      ASET (props, 8, AREF (entity, FONT_SPACING_INDEX));
+	      scripts = xfont_supported_scripts (display, indices[i],
+						 props, encoding);
+	    }
+	  if (NILP (script)
+	      || ! NILP (Fmemq (script, scripts)))
 	    list = Fcons (entity, list);
 	}
       XFreeFontNames (names);
@@ -359,7 +534,7 @@
 {
   FRAME_PTR f = XFRAME (frame);
   Display *display = FRAME_X_DISPLAY_INFO (f)->display;
-  Lisp_Object registry, list, val, extra;
+  Lisp_Object registry, list, val, extra, script;
   int len;
   /* Large enough to contain the longest XLFD (255 bytes) in UTF-8.  */
   char name[512];
@@ -370,9 +545,6 @@
       val = assq_no_quit (QCotf, extra);
       if (! NILP (val))
 	return Qnil;
-      val = assq_no_quit (QCscript, extra);
-      if (! NILP (val))
-	return Qnil;
       val = assq_no_quit (QClang, extra);
       if (! NILP (val))
 	return Qnil;
@@ -382,8 +554,13 @@
   len = font_unparse_xlfd (spec, 0, name, 512);
   if (len < 0 || (len = xfont_encode_coding_xlfd (name)) < 0)
     return Qnil;
-  ASET (spec, FONT_REGISTRY_INDEX, registry);
-  list = xfont_list_pattern (frame, display, name);
+
+  val = assq_no_quit (QCscript, extra);
+  if (NILP (val))
+    script = Qnil;
+  else
+    script = XCDR (val);
+  list = xfont_list_pattern (display, name, registry, script);
   if (NILP (list) && NILP (registry))
     {
       /* Try iso10646-1 */
@@ -392,7 +569,7 @@
       if (r - name + 10 < 256)	/* 10 == strlen (iso10646-1) */
 	{
 	  strcpy (r, "iso10646-1");
-	  list = xfont_list_pattern (frame, display, name);
+	  list = xfont_list_pattern (display, name, Qiso10646_1, script);
 	}
     }
   if (NILP (list) && ! NILP (registry))
@@ -412,7 +589,7 @@
 		&& ((r - name) + SBYTES (XCAR (alter))) < 256)
 	      {
 		strcpy (r, (char *) SDATA (XCAR (alter)));
-		list = xfont_list_pattern (frame, display, name);
+		list = xfont_list_pattern (display, name, registry, script);
 		if (! NILP (list))
 		  break;
 	      }
@@ -427,7 +604,7 @@
 	  bcopy (SDATA (XCDR (val)), name, SBYTES (XCDR (val)) + 1);
 	  if (xfont_encode_coding_xlfd (name) < 0)
 	    return Qnil;
-	  list = xfont_list_pattern (frame, display, name);
+	  list = xfont_list_pattern (display, name, registry, script);
 	}
     }
 
@@ -996,6 +1173,8 @@
 void
 syms_of_xfont ()
 {
+  staticpro (&xfont_scripts_cache);
+  xfont_scripts_cache = Qnil;
   xfont_driver.type = Qx;
   register_font_driver (&xfont_driver, NULL);
 }




Information forwarded to bug-submit-list <at> lists.donarmstrong.com, Emacs Bugs <bug-gnu-emacs <at> gnu.org>:
bug#2667; Package emacs. (Mon, 11 May 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, 11 May 2009 16:00:03 GMT) Full text and rfc822 format available.

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

From: Chong Yidong <cyd <at> stupidchicken.com>
To: Stefan Monnier <monnier <at> IRO.UMontreal.CA>
Cc: Kenichi Handa <handa <at> m17n.org>, 2667 <at> debbugs.gnu.org
Subject: Re: bug#2667: Still seeing inconsistent fonts
Date: Mon, 11 May 2009 11:56:16 -0400
Kenichi Handa <handa <at> m17n.org> writes:

> But, if we can use this heuristic:
>
>    X fonts that have the same property values except for
>    size related properties supports the same set of
>    characters on all display.
>
> we can list fonts in a realistic time.  Attached is the
> patch to try it.  Could you please test it?  As the change
> is not simple, I have not yet installed it.

I don't have a good sense of whether this problem is serious enough to
justify the change, at this stage in the pretest.  Stefan, what's your
feeling about this?




Information forwarded to bug-submit-list <at> lists.donarmstrong.com, Emacs Bugs <bug-gnu-emacs <at> gnu.org>:
bug#2667; Package emacs. (Mon, 11 May 2009 17:30:04 GMT) Full text and rfc822 format available.

Acknowledgement sent to Stefan Monnier <monnier <at> iro.umontreal.ca>:
Extra info received and forwarded to list. Copy sent to Emacs Bugs <bug-gnu-emacs <at> gnu.org>. (Mon, 11 May 2009 17:30:04 GMT) Full text and rfc822 format available.

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

From: Stefan Monnier <monnier <at> iro.umontreal.ca>
To: Chong Yidong <cyd <at> stupidchicken.com>
Cc: Kenichi Handa <handa <at> m17n.org>, 2667 <at> debbugs.gnu.org
Subject: Re: bug#2667: Still seeing inconsistent fonts
Date: Mon, 11 May 2009 13:23:38 -0400
>> But, if we can use this heuristic:
>> X fonts that have the same property values except for
>> size related properties supports the same set of
>> characters on all display.
>> we can list fonts in a realistic time.  Attached is the
>> patch to try it.  Could you please test it?  As the change
>> is not simple, I have not yet installed it.
> I don't have a good sense of whether this problem is serious enough to
> justify the change, at this stage in the pretest.  Stefan, what's your
> feeling about this?

Not sure either.  I'll come back when I've tried it out some more.


        Stefan




Information forwarded to bug-submit-list <at> lists.donarmstrong.com, Emacs Bugs <bug-gnu-emacs <at> gnu.org>:
bug#2667; Package emacs. (Wed, 20 May 2009 19:50:06 GMT) Full text and rfc822 format available.

Acknowledgement sent to Stefan Monnier <monnier <at> IRO.UMontreal.CA>:
Extra info received and forwarded to list. Copy sent to Emacs Bugs <bug-gnu-emacs <at> gnu.org>. (Wed, 20 May 2009 19:50:06 GMT) Full text and rfc822 format available.

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

From: Stefan Monnier <monnier <at> IRO.UMontreal.CA>
To: Kenichi Handa <handa <at> m17n.org>
Cc: 2667 <at> debbugs.gnu.org, cyd <at> stupidchicken.com
Subject: Re: bug#2667: Still seeing inconsistent fonts
Date: Wed, 20 May 2009 15:43:00 -0400
> ∀ belongs to `symbol' script, but the xfont backend didn't
> support :script font property.  That is because I was afraid
> that it made the font listing extremely slow (we must open
> all iso10646-1 fonts to check if it supports the requested
> characters).  Actually my trial implementation of :script
> property supports took more than 1 minute to display HELLO
> file.

1 minute would be a problem, indeed.

> But, if we can use this heuristic:

>    X fonts that have the same property values except for
>    size related properties supports the same set of
>    characters on all display.  For example, all these fonts 

> -adobe-courier-medium-r-normal--8-80-75-75-m-50-iso10646-1
> -adobe-courier-medium-r-normal--10-100-75-75-m-60-iso10646-1
> -adobe-courier-medium-r-normal--11-80-100-100-m-60-iso10646-1
> -adobe-courier-medium-r-normal--12-120-75-75-m-70-iso10646-1
> -adobe-courier-medium-r-normal--14-100-100-100-m-90-iso10646-1
> -adobe-courier-medium-r-normal--14-140-75-75-m-90-iso10646-1
> -adobe-courier-medium-r-normal--17-120-100-100-m-100-iso10646-1
> -adobe-courier-medium-r-normal--18-180-75-75-m-110-iso10646-1
> -adobe-courier-medium-r-normal--20-140-100-100-m-110-iso10646-1
> -adobe-courier-medium-r-normal--24-240-75-75-m-150-iso10646-1
> -adobe-courier-medium-r-normal--25-180-100-100-m-150-iso10646-1
> -adobe-courier-medium-r-normal--34-240-100-100-m-200-iso10646-1

>    suports the same set of characters.

That assumption is obviously not guaranteed to hold, and I don't think
it really holds in practice, but it looks like an acceptable tradeoff,
since the cases where it doesn't hold shouldn't be too frequent.

> we can list fonts in a realistic time.  Attached is the
> patch to try it.  Could you please test it?  As the change
> is not simple, I have not yet installed it.

I tried it on my smallest machine, and it seems fast enough: C-h h takes
approximately the same amount of time with it than it did under Emacs-22.3
(around 3s to 4s).
[ And this even though the Emacs-22.3 I used was built with -O2 and
  such, whereas my Emacs-CVS is built with -O1, USE_LISP_UNION_TYPE,
  ENABLE_CHECKING, and a few additional runtime tests.  ]

The machines I used to test it were all running Debian testing, with
a fairly standard set of fonts.  I don't know how it would behave for
people with many more fonts installed (most of which would presumably
be scalable and hence wouldn't be affected by the heuristic).

> -static Lisp_Object xfont_list_pattern P_ ((Lisp_Object, Display *, char *));
> +static int xfont_chars_supported P_ ((Lisp_Object, XFontStruct *,
> +				      struct charset *, struct charset *));

Please just use ANSI-style declarations rather than K&R in new code.

> +  /* Two special cases to avoid opening rather big fonts.  */
> +  if (AREF (props, 2), Qja)
> +    return Fcons (intern ("kana"), Fcons (intern ("han"), Qnil));
> +  if (AREF (props, 2), Qko)
> +    return Fcons (intern ("hangul"), Qnil);

You need EQ (..) around those two tests.

> +  if (NILP (val))
> +    script = Qnil;
> +  else
> +    script = XCDR (val);

Aka: script = CDR (val);

> +  if (! repertory && NILP (xfont_scripts_cache))
> +    {
> +      Lisp_Object args[2];
> +
> +      args[0] = QCtest;
> +      args[1] = Qequal;
> +      xfont_scripts_cache = Fmake_hash_table (2, args);
> +    }
[...]
> @@ -996,6 +1173,8 @@
>  void
>  syms_of_xfont ()
>  {
> +  staticpro (&xfont_scripts_cache);
> +  xfont_scripts_cache = Qnil;
>    xfont_driver.type = Qx;
>    register_font_driver (&xfont_driver, NULL);
>  }

Why not just:

@@ -996,6 +1173,8 @@
 void
 syms_of_xfont ()
 {
+  staticpro (&xfont_scripts_cache);
+  {
+    Lisp_Object args[2];
+    args[0] = QCtest;
+    args[1] = Qequal;
+    xfont_scripts_cache = Fmake_hash_table (2, args);
+  }
   xfont_driver.type = Qx;
   register_font_driver (&xfont_driver, NULL);
 }


        Stefan




Information forwarded to bug-submit-list <at> lists.donarmstrong.com, Emacs Bugs <bug-gnu-emacs <at> gnu.org>:
bug#2667; Package emacs. (Thu, 21 May 2009 01:20:05 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>. (Thu, 21 May 2009 01:20:05 GMT) Full text and rfc822 format available.

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

From: Kenichi Handa <handa <at> m17n.org>
To: Stefan Monnier <monnier <at> IRO.UMontreal.CA>
Cc: 2667 <at> debbugs.gnu.org, cyd <at> stupidchicken.com
Subject: Re: bug#2667: Still seeing inconsistent fonts
Date: Thu, 21 May 2009 10:15:56 +0900
In article <jwvbppnefy5.fsf-monnier+emacsbugreports <at> gnu.org>, Stefan Monnier <monnier <at> IRO.UMontreal.CA> writes:

> > But, if we can use this heuristic:

> >    X fonts that have the same property values except for
> >    size related properties supports the same set of
> >    characters on all display.  For example, all these fonts 
[...]

> That assumption is obviously not guaranteed to hold, and I
> don't think it really holds in practice, but it looks like
> an acceptable tradeoff, since the cases where it doesn't
> hold shouldn't be too frequent.

So, you mean that we should install that change, right?

> > -static Lisp_Object xfont_list_pattern P_ ((Lisp_Object, Display *, char *));
> > +static int xfont_chars_supported P_ ((Lisp_Object, XFontStruct *,
> > +				      struct charset *, struct charset *));

> Please just use ANSI-style declarations rather than K&R in new code.

Ah, I didn't realize that we switched to ANSI-style.

> > +  /* Two special cases to avoid opening rather big fonts.  */
> > +  if (AREF (props, 2), Qja)
> > +    return Fcons (intern ("kana"), Fcons (intern ("han"), Qnil));
> > +  if (AREF (props, 2), Qko)
> > +    return Fcons (intern ("hangul"), Qnil);

> You need EQ (..) around those two tests.

Of course, sorry for the incorrect patch.

> > +  if (NILP (val))
> > +    script = Qnil;
> > +  else
> > +    script = XCDR (val);

> Aka: script = CDR (val);

Ok.  I didn't know CDR macro.

> > +  if (! repertory && NILP (xfont_scripts_cache))
> > +    {
> > +      Lisp_Object args[2];
> > +
> > +      args[0] = QCtest;
> > +      args[1] = Qequal;
> > +      xfont_scripts_cache = Fmake_hash_table (2, args);
> > +    }
> [...]
> > @@ -996,6 +1173,8 @@
> >  void
> >  syms_of_xfont ()
> >  {
> > +  staticpro (&xfont_scripts_cache);
> > +  xfont_scripts_cache = Qnil;
> >    xfont_driver.type = Qx;
> >    register_font_driver (&xfont_driver, NULL);
> >  }

> Why not just:

> @@ -996,6 +1173,8 @@
>  void
>  syms_of_xfont ()
>  {
> +  staticpro (&xfont_scripts_cache);
> +  {
> +    Lisp_Object args[2];
> +    args[0] = QCtest;
> +    args[1] = Qequal;
> +    xfont_scripts_cache = Fmake_hash_table (2, args);
> +  }
>    xfont_driver.type = Qx;
>    register_font_driver (&xfont_driver, NULL);
>  }

I usually hesitate using a Lisp symbol Qxxxx in syms_of_XXX
if I don't know where it is initialized, and wanted to avoid
increasing the temacs size where possible.

---
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#2667; Package emacs. (Thu, 21 May 2009 11:35: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>. (Thu, 21 May 2009 11:35:03 GMT) Full text and rfc822 format available.

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

From: Kenichi Handa <handa <at> m17n.org>
To: 2667 <at> debbugs.gnu.org
Cc: monnier <at> IRO.UMontreal.CA, cyd <at> stupidchicken.com,
        2667 <at> debbugs.gnu.org
Subject: Re: bug#2667: Still seeing inconsistent fonts
Date: Thu, 21 May 2009 20:26:57 +0900
In article <E1M6wt2-0001YM-IL <at> etlken>, Kenichi Handa <handa <at> m17n.org> writes:

> In article <jwvbppnefy5.fsf-monnier+emacsbugreports <at> gnu.org>, Stefan Monnier <monnier <at> IRO.UMontreal.CA> writes:
> > > But, if we can use this heuristic:

> > >    X fonts that have the same property values except for
> > >    size related properties supports the same set of
> > >    characters on all display.  For example, all these fonts 
> [...]

> > That assumption is obviously not guaranteed to hold, and I
> > don't think it really holds in practice, but it looks like
> > an acceptable tradeoff, since the cases where it doesn't
> > hold shouldn't be too frequent.

> So, you mean that we should install that change, right?

As Yidong said "go ahead", I've just installed the change
(with slight modifications).

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




bug closed, send any further explanations to David Kastrup <dak <at> gnu.org> Request was from Chong Yidong <cyd <at> stupidchicken.com> to control <at> emacsbugs.donarmstrong.com. (Thu, 21 May 2009 13:25:06 GMT) Full text and rfc822 format available.

Information forwarded to bug-submit-list <at> lists.donarmstrong.com, Emacs Bugs <bug-gnu-emacs <at> gnu.org>:
bug#2667; Package emacs. (Thu, 21 May 2009 14:55:07 GMT) Full text and rfc822 format available.

Acknowledgement sent to Stefan Monnier <monnier <at> iro.umontreal.ca>:
Extra info received and forwarded to list. Copy sent to Emacs Bugs <bug-gnu-emacs <at> gnu.org>. (Thu, 21 May 2009 14:55:07 GMT) Full text and rfc822 format available.

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

From: Stefan Monnier <monnier <at> iro.umontreal.ca>
To: Kenichi Handa <handa <at> m17n.org>
Cc: 2667 <at> debbugs.gnu.org, cyd <at> stupidchicken.com
Subject: Re: bug#2667: Still seeing inconsistent fonts
Date: Thu, 21 May 2009 10:52:54 -0400
> I usually hesitate using a Lisp symbol Qxxxx in syms_of_XXX
> if I don't know where it is initialized, and wanted to avoid
> increasing the temacs size where possible.

Since syms_of_<fontbackend> are all called very late, it's safe.
Marginally increasing the temacs size is a non-issue in the light of the
resulting code simplification.


        Stefan




bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> emacsbugs.donarmstrong.com. (Fri, 19 Jun 2009 14:24:13 GMT) Full text and rfc822 format available.

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

Previous Next


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