370 |
int force; |
int force; |
371 |
{ |
{ |
372 |
Lisp_Object family, registry; |
Lisp_Object family, registry; |
373 |
char *p = XSTRING (fontname)->data; |
char *p = SDATA (fontname); |
374 |
char *sep[15]; |
char *sep[15]; |
375 |
int i = 0; |
int i = 0; |
376 |
|
|
557 |
font name. */ |
font name. */ |
558 |
elt = XCDR (elt); |
elt = XCDR (elt); |
559 |
xassert (STRINGP (elt)); |
xassert (STRINGP (elt)); |
560 |
fontp = FS_LOAD_FONT (f, c, XSTRING (elt)->data, -1); |
fontp = FS_LOAD_FONT (f, c, SDATA (elt), -1); |
561 |
if (!fontp) |
if (!fontp) |
562 |
return Qnil; |
return Qnil; |
563 |
|
|
616 |
if (!fontname && charset == CHARSET_ASCII) |
if (!fontname && charset == CHARSET_ASCII) |
617 |
{ |
{ |
618 |
elt = FONTSET_ASCII (fontset); |
elt = FONTSET_ASCII (fontset); |
619 |
fontname = XSTRING (XCDR (elt))->data; |
fontname = SDATA (XCDR (elt)); |
620 |
} |
} |
621 |
} |
} |
622 |
|
|
705 |
the corresponding regular expression. */ |
the corresponding regular expression. */ |
706 |
static Lisp_Object Vcached_fontset_data; |
static Lisp_Object Vcached_fontset_data; |
707 |
|
|
708 |
#define CACHED_FONTSET_NAME (XSTRING (XCAR (Vcached_fontset_data))->data) |
#define CACHED_FONTSET_NAME (SDATA (XCAR (Vcached_fontset_data))) |
709 |
#define CACHED_FONTSET_REGEX (XCDR (Vcached_fontset_data)) |
#define CACHED_FONTSET_REGEX (XCDR (Vcached_fontset_data)) |
710 |
|
|
711 |
/* If fontset name PATTERN contains any wild card, return regular |
/* If fontset name PATTERN contains any wild card, return regular |
715 |
fontset_pattern_regexp (pattern) |
fontset_pattern_regexp (pattern) |
716 |
Lisp_Object pattern; |
Lisp_Object pattern; |
717 |
{ |
{ |
718 |
if (!index (XSTRING (pattern)->data, '*') |
if (!index (SDATA (pattern), '*') |
719 |
&& !index (XSTRING (pattern)->data, '?')) |
&& !index (SDATA (pattern), '?')) |
720 |
/* PATTERN does not contain any wild cards. */ |
/* PATTERN does not contain any wild cards. */ |
721 |
return Qnil; |
return Qnil; |
722 |
|
|
723 |
if (!CONSP (Vcached_fontset_data) |
if (!CONSP (Vcached_fontset_data) |
724 |
|| strcmp (XSTRING (pattern)->data, CACHED_FONTSET_NAME)) |
|| strcmp (SDATA (pattern), CACHED_FONTSET_NAME)) |
725 |
{ |
{ |
726 |
/* We must at first update the cached data. */ |
/* We must at first update the cached data. */ |
727 |
char *regex = (char *) alloca (XSTRING (pattern)->size * 2 + 3); |
char *regex = (char *) alloca (SCHARS (pattern) * 2 + 3); |
728 |
char *p0, *p1 = regex; |
char *p0, *p1 = regex; |
729 |
|
|
730 |
/* Convert "*" to ".*", "?" to ".". */ |
/* Convert "*" to ".*", "?" to ".". */ |
731 |
*p1++ = '^'; |
*p1++ = '^'; |
732 |
for (p0 = (char *) XSTRING (pattern)->data; *p0; p0++) |
for (p0 = (char *) SDATA (pattern); *p0; p0++) |
733 |
{ |
{ |
734 |
if (*p0 == '*') |
if (*p0 == '*') |
735 |
{ |
{ |
744 |
*p1++ = '$'; |
*p1++ = '$'; |
745 |
*p1++ = 0; |
*p1++ = 0; |
746 |
|
|
747 |
Vcached_fontset_data = Fcons (build_string (XSTRING (pattern)->data), |
Vcached_fontset_data = Fcons (build_string (SDATA (pattern)), |
748 |
build_string (regex)); |
build_string (regex)); |
749 |
} |
} |
750 |
|
|
789 |
|| !BASE_FONTSET_P (fontset)) |
|| !BASE_FONTSET_P (fontset)) |
790 |
continue; |
continue; |
791 |
|
|
792 |
this_name = XSTRING (FONTSET_NAME (fontset))->data; |
this_name = SDATA (FONTSET_NAME (fontset)); |
793 |
if (regexpp |
if (regexpp |
794 |
? fast_c_string_match_ignore_case (name, this_name) >= 0 |
? fast_c_string_match_ignore_case (name, this_name) >= 0 |
795 |
: !strcmp (XSTRING (name)->data, this_name)) |
: !strcmp (SDATA (name), this_name)) |
796 |
return i; |
return i; |
797 |
} |
} |
798 |
return -1; |
return -1; |
815 |
|
|
816 |
CHECK_STRING (pattern); |
CHECK_STRING (pattern); |
817 |
|
|
818 |
if (XSTRING (pattern)->size == 0) |
if (SCHARS (pattern) == 0) |
819 |
return Qnil; |
return Qnil; |
820 |
|
|
821 |
id = fs_query_fontset (pattern, !NILP (regexpp)); |
id = fs_query_fontset (pattern, !NILP (regexpp)); |
854 |
|| !BASE_FONTSET_P (fontset) |
|| !BASE_FONTSET_P (fontset) |
855 |
|| !EQ (frame, FONTSET_FRAME (fontset))) |
|| !EQ (frame, FONTSET_FRAME (fontset))) |
856 |
continue; |
continue; |
857 |
name = XSTRING (FONTSET_NAME (fontset))->data; |
name = SDATA (FONTSET_NAME (fontset)); |
858 |
|
|
859 |
if (!NILP (regexp) |
if (!NILP (regexp) |
860 |
? (fast_c_string_match_ignore_case (regexp, name) < 0) |
? (fast_c_string_match_ignore_case (regexp, name) < 0) |
861 |
: strcmp (XSTRING (pattern)->data, name)) |
: strcmp (SDATA (pattern), name)) |
862 |
continue; |
continue; |
863 |
|
|
864 |
if (size) |
if (size) |
892 |
tem = Fquery_fontset (name, Qnil); |
tem = Fquery_fontset (name, Qnil); |
893 |
if (!NILP (tem)) |
if (!NILP (tem)) |
894 |
error ("Fontset `%s' matches the existing fontset `%s'", |
error ("Fontset `%s' matches the existing fontset `%s'", |
895 |
XSTRING (name)->data, XSTRING (tem)->data); |
SDATA (name), SDATA (tem)); |
896 |
|
|
897 |
/* Check the validity of FONTLIST while creating a template for |
/* Check the validity of FONTLIST while creating a template for |
898 |
fontset elements. */ |
fontset elements. */ |
969 |
CHECK_STRING (name); |
CHECK_STRING (name); |
970 |
id = fs_query_fontset (name, 0); |
id = fs_query_fontset (name, 0); |
971 |
if (id < 0) |
if (id < 0) |
972 |
error ("Fontset `%s' does not exist", XSTRING (name)->data); |
error ("Fontset `%s' does not exist", SDATA (name)); |
973 |
return FONTSET_FROM_ID (id); |
return FONTSET_FROM_ID (id); |
974 |
} |
} |
975 |
|
|
1120 |
if (!query_font_func) |
if (!query_font_func) |
1121 |
error ("Font query function is not supported"); |
error ("Font query function is not supported"); |
1122 |
|
|
1123 |
fontp = (*query_font_func) (f, XSTRING (name)->data); |
fontp = (*query_font_func) (f, SDATA (name)); |
1124 |
if (!fontp) |
if (!fontp) |
1125 |
return Qnil; |
return Qnil; |
1126 |
|
|
1338 |
if (CONSP (elt)) |
if (CONSP (elt)) |
1339 |
{ |
{ |
1340 |
elt = XCAR (elt); |
elt = XCAR (elt); |
1341 |
fontp = (*query_font_func) (f, XSTRING (elt)->data); |
fontp = (*query_font_func) (f, SDATA (elt)); |
1342 |
} |
} |
1343 |
val = Fmake_vector (make_number (3), val); |
val = Fmake_vector (make_number (3), val); |
1344 |
AREF (val, 0) = fontp ? make_number (fontp->size) : make_number (0); |
AREF (val, 0) = fontp ? make_number (fontp->size) : make_number (0); |