From 6ab1fb6a7819c4efe8f3e43f3fa7fcd1423b3aab Mon Sep 17 00:00:00 2001 From: Kenichi Handa Date: Thu, 1 Aug 2002 05:44:09 +0000 Subject: [PATCH] (fs_load_font): If fontp->charset is not negative, return fontp without setting its members. --- src/ChangeLog | 7 +++++++ src/fontset.c | 33 +++++++++++++++++++++------------ 2 files changed, 28 insertions(+), 12 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 2071b3507f7..dff9ee1b951 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,10 @@ +2002-08-01 Kenichi Handa + + * 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 * config.in: Generated with autoheader. diff --git a/src/fontset.c b/src/fontset.c index e038000e865..1c1c1b12a4a 100644 --- a/src/fontset.c +++ b/src/fontset.c @@ -234,7 +234,7 @@ static int fontset_id_valid_p P_ ((int)); 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 *)); /********** MACROS AND FUNCTIONS TO HANDLE FONTSET **********/ @@ -792,14 +792,14 @@ make_fontset_for_ascii_face (f, base_fontset_id, face) /* 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; @@ -808,16 +808,25 @@ fs_load_font (f, fontname, charset_id) 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) @@ -836,9 +845,9 @@ fs_load_font (f, fontname, charset_id) #endif -/* 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 -- 2.39.2