[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#1990: 23.0.60; Emacs trying too hard to find fonts that don't exist
From: |
Kenichi Handa |
Subject: |
bug#1990: 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@cyd.mit.edu>, Chong Yidong <cyd@stupidchicken.com>
writes:
> Jason Rumney <jasonr@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@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@m17n.org
- bug#1990: 23.0.60; Emacs trying too hard to find fonts that don't exist, (continued)
- bug#1990: 23.0.60; Emacs trying too hard to find fonts that don't exist, Chong Yidong, 2009/01/23
- bug#1990: 23.0.60; Emacs trying too hard to find fonts that don't exist, Jason Rumney, 2009/01/23
- bug#1990: 23.0.60; Emacs trying too hard to find fonts that don't exist, Jason Rumney, 2009/01/25
- bug#1990: 23.0.60; Emacs trying too hard to find fonts that don't exist, Juanma Barranquero, 2009/01/25
- bug#1990: 23.0.60; Emacs trying too hard to find fonts that don't exist, Kenichi Handa, 2009/01/26
- bug#1990: 23.0.60; Emacs trying too hard to find fonts that don't exist, Juanma Barranquero, 2009/01/26
- bug#1990: 23.0.60; Emacs trying too hard to find fonts that don't exist,
Kenichi Handa <=
- bug#1990: 23.0.60; Emacs trying too hard to find fonts that don't exist, Chong Yidong, 2009/01/26