+2002-08-01 Kenichi Handa <handa@etl.go.jp>
+
+ * xterm.c (x_load_font): Initialize fontp->fontset to -1.
+
+ * fontset.c (fs_load_font): If fontp->charset is not negative,
+ return fontp without setting its members.
+
2002-07-31 Dave Love <fx@gnu.org>
* config.in: Generated with autoheader.
static Lisp_Object fontset_pattern_regexp P_ ((Lisp_Object));
static void accumulate_script_ranges P_ ((Lisp_Object, Lisp_Object,
Lisp_Object));
-
+static Lisp_Object find_font_encoding P_ ((char *));
\f
/********** MACROS AND FUNCTIONS TO HANDLE FONTSET **********/
/* Load a font named FONTNAME on frame F. Return a pointer to the
struct font_info of the loaded font. If loading fails, return
- NULL. CHARSET_ID is an ID of charset to encode characters for this
- font. */
+ NULL. CHARSET is an ID of charset to encode characters for this
+ font. If it is -1, find one from Vfont_encoding_alist. */
struct font_info *
-fs_load_font (f, fontname, charset_id)
+fs_load_font (f, fontname, charset)
FRAME_PTR f;
char *fontname;
- int charset_id;
+ int charset;
{
struct font_info *fontp;
return NULL;
fontp = (*load_font_func) (f, fontname, 0);
- if (!fontp)
- return NULL;
+ if (! fontp || fontp->charset >= 0)
+ return fontp;
fontname = fontp->full_name;
- fontp->charset = charset_id;
+ if (charset < 0)
+ {
+ Lisp_Object charset_symbol;
+
+ charset_symbol = find_font_encoding (fontname);
+ if (CONSP (charset_symbol))
+ charset_symbol = XCAR (charset_symbol);
+ charset = XINT (CHARSET_SYMBOL_ID (charset_symbol));
+ }
+ fontp->charset = charset;
fontp->vertical_centering = 0;
fontp->font_encoder = NULL;
- if (charset_id != charset_ascii)
+ if (charset != charset_ascii)
{
fontp->vertical_centering
= (STRINGP (Vvertical_centering_font_regexp)
#endif
\f
-/* Return ENCODING or a cons(ENCODING REPERTORY) of the font FONTNAME.
- ENCODING is a charset symbol that specifies the encoding of the
- font. REPERTORY is a charset symbol or nil. */
+/* Return ENCODING or a cons of ENCODING and REPERTORY of the font
+ FONTNAME. ENCODING is a charset symbol that specifies the encoding
+ of the font. REPERTORY is a charset symbol or nil. */
static Lisp_Object