Commit 1afa4408 authored by Kenichi Handa's avatar Kenichi Handa

(FONT_NOT_OPENED, FONT_NOT_FOUND): Macros removed.

(struct fontset_info, struct fontset_data): Structs removed.
(allloc_fontset_data, free_fontset_data, fs_regiser_fontset,
Vglobale_fontset_alist, font_idx_temp): Externs removed.
(fs_load_font, fs_query_fontset): Adjusted for new argument.
(fs_free_face_fontset, fontset_font_pattern,
face_suitable_for_char_p, face_for_char,
make_fontset_for_ascii_face): Extern them.
(FS_LOAD_FONT): Adjusted for the change of fontset implementation.
(FS_LOAD_FACE_FONT): New macro.
parent 0d407d77
/* Header for fontset handler. /* Header for fontset handler.
Copyright (C) 1995, 1997 Electrotechnical Laboratory, JAPAN. Copyright (C) 1995, 1997, 2000 Electrotechnical Laboratory, JAPAN.
Licensed to the Free Software Foundation. Licensed to the Free Software Foundation.
This file is part of GNU Emacs. This file is part of GNU Emacs.
...@@ -47,14 +47,16 @@ struct font_info ...@@ -47,14 +47,16 @@ struct font_info
X window, this is same as (font->max_bounds.width) */ X window, this is same as (font->max_bounds.width) */
int size; int size;
/* Height of the font. On X window, this is same as (font->ascent /* Height of the font. On X window, this is the same as
+ font->descent). */ (font->ascent + font->descent). */
int height; int height;
/* 1 iff we render characters at vartical center positions of lines. */ /* 1 iff `vertical-centering-font-regexp' matches this font name.
In this case, we render characters at vartical center positions
of lines. */
int vertical_centering; int vertical_centering;
/* Encodings of the font indexed by CHARSET. The value an integer /* Encodings of the font indexed by CHARSET. The value is one of
0, 1, 2, or 3: 0, 1, 2, or 3:
0: code points 0x20..0x7F or 0x2020..0x7F7F are used 0: code points 0x20..0x7F or 0x2020..0x7F7F are used
1: code points 0xA0..0xFF or 0xA0A0..0xFFFF are used 1: code points 0xA0..0xFF or 0xA0A0..0xFFFF are used
...@@ -68,7 +70,10 @@ struct font_info ...@@ -68,7 +70,10 @@ struct font_info
consult `font-encoding-alist' to get of the corresponding charset consult `font-encoding-alist' to get of the corresponding charset
whose default value is defined in lisp/fontset.el. Since there's 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 no charset whose id is 1, we use encoding[1] to store the
encoding information decided by the font itself. */ encoding information decided by the font itself.
If the member `font_encoder' is not NULL, this member is ignored.
*/
unsigned char encoding[MAX_CHARSET + 1]; unsigned char encoding[MAX_CHARSET + 1];
/* The baseline position of a font is normally `ascent' value of the /* The baseline position of a font is normally `ascent' value of the
...@@ -124,51 +129,11 @@ struct font_info ...@@ -124,51 +129,11 @@ struct font_info
struct ccl_program *font_encoder; struct ccl_program *font_encoder;
}; };
/* A value which may appear in the member encoding of struch font_info /* A value which may appear in the member `encoding' of struch
indicating that a font itself doesn't tell which encoding to be font_info indicating that a font itself doesn't tell which encoding
used. */ to be used. */
#define FONT_ENCODING_NOT_DECIDED 255 #define FONT_ENCODING_NOT_DECIDED 255
#define FONT_NOT_OPENED -1
#define FONT_NOT_FOUND -2
struct fontset_info
{
/* Name of the fontset. */
char *name;
/* Size of the fontset. This is the same as the size of ASCII font
of this fontset. */
int size;
/* Height of the tallest font in the fontset. */
int height;
/* Table of font name for each character set. */
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 + 1];
};
/* This data type is used for the fontset_data field of struct frame. */
struct fontset_data
{
/* A table of pointers to all the fontsets. */
struct fontset_info **fontset_table;
/* The current capacity of fontset_table. */
int fontset_table_size;
/* The number of fontsets actually stored in fontset_table.
fontset_table[n] is used and valid iff 0 <= n < n_fontsets.
0 <= n_fontsets <= fontset_table_size. */
int n_fontsets;
};
/* Forward declaration for prototypes. */ /* Forward declaration for prototypes. */
struct frame; struct frame;
...@@ -211,46 +176,41 @@ extern void (*find_ccl_program_func) P_ ((struct font_info *)); ...@@ -211,46 +176,41 @@ extern void (*find_ccl_program_func) P_ ((struct font_info *));
/* Check if any window system is used now. */ /* Check if any window system is used now. */
extern void (*check_window_system_func) P_ ((void)); extern void (*check_window_system_func) P_ ((void));
extern struct fontset_data *alloc_fontset_data P_ ((void)); struct face;
extern void free_fontset_data P_ ((struct fontset_data *));
extern struct font_info *fs_load_font P_ ((struct frame *, struct font_info *, extern void fs_free_face_fontset P_ ((FRAME_PTR, struct face *));
int, char *, int)); extern Lisp_Object fontset_font_pattern P_ ((FRAME_PTR, int, int));
extern int fs_query_fontset P_ ((struct frame *, char *)); extern int face_suitable_for_char_p P_ ((struct face *, int));
extern int fs_register_fontset P_ ((struct frame *, Lisp_Object)); extern int face_for_char P_ ((FRAME_PTR, struct face *, int));
extern int make_fontset_for_ascii_face P_ ((FRAME_PTR, int));
extern struct font_info *fs_load_font P_ ((struct frame *, int, char *, int,
struct face *));
extern int fs_query_fontset P_ ((Lisp_Object, int));
EXFUN (Fquery_fontset, 2); EXFUN (Fquery_fontset, 2);
extern Lisp_Object list_fontsets P_ ((struct frame *, Lisp_Object, int)); extern Lisp_Object list_fontsets P_ ((struct frame *, Lisp_Object, int));
extern Lisp_Object Vglobal_fontset_alist;
struct frame;
int fs_query_fontset P_ ((struct frame *f, char *name));
extern Lisp_Object Qfontset; extern Lisp_Object Qfontset;
extern Lisp_Object Vuse_default_ascent; extern Lisp_Object Vuse_default_ascent;
extern Lisp_Object Vignore_relative_composition; extern Lisp_Object Vignore_relative_composition;
extern Lisp_Object Valternate_fontname_alist; extern Lisp_Object Valternate_fontname_alist;
extern Lisp_Object Vfontset_alias_alist;
extern Lisp_Object Vhighlight_wrong_size_font; extern Lisp_Object Vhighlight_wrong_size_font;
extern Lisp_Object Vclip_large_size_font; extern Lisp_Object Vclip_large_size_font;
extern Lisp_Object Vvertical_centering_font_regexp; extern Lisp_Object Vvertical_centering_font_regexp;
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))
extern Lisp_Object Vfontset_alias_alist; /* Load a font named FONTNAME for displaying character C. All fonts
extern Lisp_Object Vglobal_fontset_alist; 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, c, fontname, fontset) \
fs_load_font (f, c, fontname, fontset, NULL)
#define FS_LOAD_FACE_FONT(f, c, fontname, face) \
fs_load_font (f, c, fontname, -1, face)
/* Return an immutable id for font_info FONT_INFO on frame F. The /* Return an immutable id for font_info FONT_INFO on frame F. The
reason for this macro is hat one cannot hold pointers to font_info reason for this macro is hat one cannot hold pointers to font_info
...@@ -268,4 +228,8 @@ extern Lisp_Object Vglobal_fontset_alist; ...@@ -268,4 +228,8 @@ extern Lisp_Object Vglobal_fontset_alist;
? (FRAME_X_DISPLAY_INFO ((F))->font_table + (ID)) \ ? (FRAME_X_DISPLAY_INFO ((F))->font_table + (ID)) \
: 0) : 0)
extern Lisp_Object fontset_name P_ ((int));
extern Lisp_Object fontset_ascii P_ ((int));
extern int fontset_height P_ ((int));
#endif /* _FONTSET_H */ #endif /* _FONTSET_H */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment