summaryrefslogtreecommitdiff
path: root/src/fontset.c
diff options
context:
space:
mode:
authorKenichi Handa <handa@m17n.org>2002-08-01 05:44:09 +0000
committerKenichi Handa <handa@m17n.org>2002-08-01 05:44:09 +0000
commit6ab1fb6a7819c4efe8f3e43f3fa7fcd1423b3aab (patch)
treeae43d6cd1d80e29fe4fb3c95aabc9c21b6bc11b1 /src/fontset.c
parentd8891a0f51d6349f8247cbb5937aa10b8b1bc688 (diff)
downloademacs-6ab1fb6a7819c4efe8f3e43f3fa7fcd1423b3aab.tar.gz
emacs-6ab1fb6a7819c4efe8f3e43f3fa7fcd1423b3aab.tar.bz2
emacs-6ab1fb6a7819c4efe8f3e43f3fa7fcd1423b3aab.zip
(fs_load_font): If fontp->charset is not negative,
return fontp without setting its members.
Diffstat (limited to 'src/fontset.c')
-rw-r--r--src/fontset.c33
1 files changed, 21 insertions, 12 deletions
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