From: Kenichi Handa <handa@m17n.org>
To: Chong Yidong <cyd@stupidchicken.com>
Cc: 1990@emacsbugs.donarmstrong.com
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 [thread overview]
Message-ID: <E1LRMO9-0004Wg-Cc@etlken> (raw)
In-Reply-To: <87d4ec1o6z.fsf@cyd.mit.edu> (message from Chong Yidong on Sat, 24 Jan 2009 14:47:16 -0500)
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
next prev parent reply other threads:[~2009-01-26 8:00 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-01-23 5:04 bug#1990: 23.0.60; Emacs trying too hard to find fonts that don't exist Chong Yidong
2009-01-23 14:00 ` Jason Rumney
2009-01-24 19:47 ` Chong Yidong
2009-01-24 21:50 ` Juanma Barranquero
2009-01-24 21:55 ` Chong Yidong
2009-01-24 22:06 ` Juanma Barranquero
2009-01-25 5:22 ` Jason Rumney
2009-01-25 11:57 ` Juanma Barranquero
2009-01-26 11:46 ` Kenichi Handa
2009-01-26 12:02 ` Juanma Barranquero
2009-01-26 8:00 ` Kenichi Handa [this message]
2009-01-26 15:51 ` Chong Yidong
-- strict thread matches above, loose matches on Subject: below --
2009-01-22 13:22 Jason Rumney
2009-01-24 13:28 ` Juanma Barranquero
2009-01-24 14:02 ` Jason Rumney
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=E1LRMO9-0004Wg-Cc@etlken \
--to=handa@m17n.org \
--cc=1990@emacsbugs.donarmstrong.com \
--cc=cyd@stupidchicken.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).