Mercurial > emacs
changeset 88968:a35b7b45baa3
(fs_load_font): If fontp->charset is not negative,
return fontp without setting its members.
author | Kenichi Handa <handa@m17n.org> |
---|---|
date | Thu, 01 Aug 2002 05:43:06 +0000 |
parents | b604878589f4 |
children | 749c71c914b0 |
files | src/fontset.c |
diffstat | 1 files changed, 21 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- a/src/fontset.c Thu Aug 01 05:42:48 2002 +0000 +++ b/src/fontset.c Thu Aug 01 05:43:06 2002 +0000 @@ -234,7 +234,7 @@ 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 @@ /* 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 @@ 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 @@ #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