2002-07-03 Andrew Choi <akochoi@shaw.ca>
* macterm.c (x_list_fonts): Fix comment. Cache fonts matching pattern. Search cache first.
This commit is contained in:
parent
a0f593ff6a
commit
10ba2aecea
2 changed files with 30 additions and 8 deletions
|
@ -1,7 +1,9 @@
|
|||
2002-07-03 Andrew Choi <akochoi@shaw.ca>
|
||||
|
||||
* macterm.c (init_font_name_table): Also add entry for
|
||||
jisx0201.1976-0 coding for Japanese font.
|
||||
* macterm.c (x_list_fonts): Fix comment. Cache fonts matching
|
||||
pattern. Search cache first.
|
||||
(init_font_name_table): Also add entry for jisx0201.1976-0 coding
|
||||
for Japanese font.
|
||||
(XLoadQueryFont): Use it.
|
||||
|
||||
2002-07-02 Richard M. Stallman <rms@gnu.org>
|
||||
|
|
|
@ -10860,11 +10860,9 @@ init_font_name_table ()
|
|||
|
||||
|
||||
/* Return a list of at most MAXNAMES font specs matching the one in
|
||||
PATTERN. Note that each '*' in the PATTERN matches exactly one
|
||||
field of the font spec, unlike X in which an '*' in a font spec can
|
||||
match a number of fields. The result is in the Mac implementation
|
||||
all fonts must be specified by a font spec with all 13 fields
|
||||
(although many of these can be "*'s"). */
|
||||
PATTERN. Cache matching fonts for patterns in
|
||||
dpyinfo->name_list_element to avoid looking them up again by
|
||||
calling mac_font_pattern_match (slow). */
|
||||
|
||||
Lisp_Object
|
||||
x_list_fonts (struct frame *f,
|
||||
|
@ -10873,14 +10871,28 @@ x_list_fonts (struct frame *f,
|
|||
int maxnames)
|
||||
{
|
||||
char *ptnstr;
|
||||
Lisp_Object newlist = Qnil;
|
||||
Lisp_Object newlist = Qnil, tem, key;
|
||||
int n_fonts = 0;
|
||||
int i;
|
||||
struct gcpro gcpro1, gcpro2;
|
||||
struct mac_display_info *dpyinfo = f ? FRAME_MAC_DISPLAY_INFO (f) : NULL;
|
||||
|
||||
if (font_name_table == NULL) /* Initialize when first used. */
|
||||
init_font_name_table ();
|
||||
|
||||
if (dpyinfo)
|
||||
{
|
||||
tem = XCDR (dpyinfo->name_list_element);
|
||||
key = Fcons (pattern, make_number (maxnames));
|
||||
|
||||
newlist = Fassoc (key, tem);
|
||||
if (!NILP (newlist))
|
||||
{
|
||||
newlist = Fcdr_safe (newlist);
|
||||
goto label_cached;
|
||||
}
|
||||
}
|
||||
|
||||
ptnstr = XSTRING (pattern)->data;
|
||||
|
||||
GCPRO2 (pattern, newlist);
|
||||
|
@ -10902,6 +10914,14 @@ x_list_fonts (struct frame *f,
|
|||
|
||||
UNGCPRO;
|
||||
|
||||
if (dpyinfo)
|
||||
{
|
||||
XSETCDR (dpyinfo->name_list_element,
|
||||
Fcons (Fcons (key, newlist),
|
||||
XCDR (dpyinfo->name_list_element)));
|
||||
}
|
||||
label_cached:
|
||||
|
||||
return newlist;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue