/* Header for fontset handler.
- Ver.1.0
- Copyright (C) 1995 Free Software Foundation, Inc.
- Copyright (C) 1995 Electrotechnical Laboratory, JAPAN.
+ Copyright (C) 1995, 1997 Electrotechnical Laboratory, JAPAN.
+ Licensed to the Free Software Foundation.
This file is part of GNU Emacs.
whose default value is defined in lisp/fontset.el. Since there's
no charset whose id is 1, we use encoding[1] to store the
encoding information decided by the font itself. */
- char encoding[MAX_CHARSET];
+ unsigned char encoding[MAX_CHARSET + 1];
/* The baseline position of a font is normally `ascent' value of the
font. However, there exists many fonts which don't set `ascent'
height). In this case, the character is drawn beneath the
previous glyphs.
- This value is take from a private font property
+ This value is taken from a private font property
`_MULE_RELATIVE_COMPOSE' which is introduced by Emacs. */
int relative_compose;
struct ccl_program *font_encoder;
};
+/* A value which may appear in the member encoding of struch font_info
+ indicating that a font itself doesn't tell which encoding to be
+ used. */
+#define FONT_ENCODING_NOT_DECIDED 4
+
#define FONT_NOT_OPENED -1
#define FONT_NOT_FOUND -2
int height;
/* Table of font name for each character set. */
- char *fontname[MAX_CHARSET];
+ char *fontname[MAX_CHARSET + 1];
/* Table of index numbers of fonts indexed by charset. If a font is
not yet loaded, the value is -1 (FONT_NOT_OPENED). If font
loading is failed, the value is -2 (FONT_NOT_FOUND). */
- int font_indexes[MAX_CHARSET];
+ int font_indexes[MAX_CHARSET + 1];
};
/* This data type is used for the fontset_data field of struct frame. */
extern Lisp_Object Qfontset;
extern Lisp_Object Vuse_default_ascent;
+extern Lisp_Object Valternative_fontname_alist;
+extern Lisp_Object Vhighlight_wrong_size_font;
+extern Lisp_Object Vclip_large_size_font;
+
+extern int font_idx_temp;
+
+/* Load a font named FONTNAME for displaying CHARSET on frame F.
+ All fonts for frame F is stored in a table pointed by FONT_TABLE.
+ Return a pointer to the struct font_info of the loaded font.
+ If loading fails, return 0;
+ If FONTNAME is NULL, the name is taken from the information of FONTSET.
+ If FONTSET is given, try to load a font whose size matches that of
+ FONTSET, and, the font index is stored in the table for FONTSET. */
+
+#define FS_LOAD_FONT(f, font_table, charset, fontname, fontset) \
+ (fontset >= 0 && fontset < FRAME_FONTSET_DATA (f)->n_fontsets \
+ && (font_idx_temp = (FRAME_FONTSET_DATA (f) \
+ ->fontset_table[fontset]->font_indexes[charset]), \
+ font_idx_temp >= 0) \
+ ? font_table + font_idx_temp \
+ : fs_load_font (f, font_table, charset, fontname, fontset))
#endif /* _FONTSET_H */