Mercurial > emacs
changeset 28221:6622698b83d6
(struct glyph): New member glyph_not_available_p.
Use 22 bits for face_id.
(enum lface_attribute_index): Add LFACE_FONT_INDEX.
(struct face): Delete member registry, new member ascii_face.
(FACE_SUITABLE_FOR_CHAR_P): Renamed from
FACE_SUITABLE_FOR_CHARSET_P. Caller changed.
(FACE_FOR_CHAR): Renamed from FACE_FOR_CHARSET. Caller changed.
(struct it): Delete member charset, new member
glyph_not_available_p.
author | Kenichi Handa <handa@m17n.org> |
---|---|
date | Tue, 21 Mar 2000 00:36:45 +0000 |
parents | 27014604bbd3 |
children | 33f6a8ee4733 |
files | src/dispextern.h |
diffstat | 1 files changed, 29 insertions(+), 33 deletions(-) [+] |
line wrap: on
line diff
--- a/src/dispextern.h Tue Mar 21 00:36:12 2000 +0000 +++ b/src/dispextern.h Tue Mar 21 00:36:45 2000 +0000 @@ -269,8 +269,12 @@ padding. */ unsigned padding_p : 1; + /* 1 means the actual glyph is not available in the current + system. */ + unsigned glyph_not_available_p : 1; + /* Face of the glyph. */ - unsigned face_id : 23; + unsigned face_id : 22; /* A union of sub-structures for different glyph types. */ union @@ -1089,6 +1093,7 @@ LFACE_OVERLINE_INDEX, LFACE_STRIKE_THROUGH_INDEX, LFACE_BOX_INDEX, + LFACE_FONT_INDEX, LFACE_VECTOR_SIZE }; @@ -1166,9 +1171,6 @@ must not be freed. */ char *font_name; - /* The X font registry and encoding of font_name. */ - Lisp_Object registry; - /* Font info ID for this face's font. An ID is stored here because pointers to font_info structures may change. The reason is that they are pointers into a font table vector that is itself @@ -1249,6 +1251,10 @@ /* Next and previous face in hash collision list of face cache. */ struct face *next, *prev; + + /* If this face is for ASCII characters, this points this face + itself. Otherwise, this points a face for ASCII characters. */ + struct face *ascii_face; }; @@ -1324,29 +1330,21 @@ ? FRAME_FACE_CACHE (F)->faces_by_id[ID] \ : NULL) -/* Non-zero if FACE is suitable for displaying characters of CHARSET. - CHARSET < 0 means unibyte text. */ - -#define FACE_SUITABLE_FOR_CHARSET_P(FACE, CHARSET) \ - (((CHARSET) < 0 \ - ? (EQ ((FACE)->registry, Vface_default_registry) \ - || !NILP (Fequal ((FACE)->registry, Vface_default_registry))) \ - : ((FACE)->charset == (CHARSET) \ - || ((FACE)->charset == CHARSET_ASCII \ - && (CHARSET) == charset_latin_iso8859_1 \ - && face_suitable_for_iso8859_1_p ((FACE))) \ - || ((FACE)->charset == charset_latin_iso8859_1 \ - && (CHARSET) == CHARSET_ASCII)))) - +/* Non-zero if FACE is suitable for displaying character CHAR. */ + +#define FACE_SUITABLE_FOR_CHAR_P(FACE, CHAR) \ + (SINGLE_BYTE_CHAR_P (CHAR) \ + ? (FACE) == (FACE)->ascii_face \ + : face_suitable_for_char_p ((FACE), (CHAR))) + /* Return the id of the realized face on frame F that is like the face - with id ID but is suitable for displaying characters of CHARSET. - This macro is only meaningful for CHARSET >= 0, i.e. multibyte - text. */ + with id ID but is suitable for displaying character CHAR. + This macro is only meaningful for multibyte character CHAR. */ -#define FACE_FOR_CHARSET(F, ID, CHARSET) \ - (FACE_SUITABLE_FOR_CHARSET_P (FACE_FROM_ID ((F), (ID)), (CHARSET)) \ - ? (ID) \ - : lookup_face ((F), FACE_FROM_ID ((F), (ID))->lface, (CHARSET))) +#define FACE_FOR_CHAR(F, FACE, CHAR) \ + (SINGLE_BYTE_CHAR_P (CHAR) \ + ? (FACE)->ascii_face->id \ + : face_for_char ((F), (FACE), (CHAR))) /* The default registry and encoding to use. */ @@ -1601,6 +1599,10 @@ /* 1 means overlay strings at end_charpos have been processed. */ unsigned overlay_strings_at_end_processed_p : 1; + /* 1 means the actual glyph is not available in the current + system. */ + unsigned glyph_not_available_p : 1; + /* The ID of the default face to use. One of DEFAULT_FACE_ID, MODE_LINE_FACE_ID, or TOOL_BAR_FACE_ID, depending on what we are displaying. */ @@ -1624,10 +1626,6 @@ is set after x_produce_glyphs has been called. */ int char_to_display; - /* Charset for which face_id was computed. This is the charset - of char_to_display after x_produce_glyphs has been called. */ - int charset; - /* If what == IT_IMAGE, the id of the image to display. */ int image_id; @@ -2118,7 +2116,6 @@ void update_face_from_frame_parameter P_ ((struct frame *, Lisp_Object, Lisp_Object)); -char *x_charset_registry P_ ((int)); Lisp_Object tty_color_name P_ ((struct frame *, int)); void clear_face_cache P_ ((int)); unsigned long load_color P_ ((struct frame *, struct face *, Lisp_Object, @@ -2127,10 +2124,8 @@ int frame_update_line_height P_ ((struct frame *)); int ascii_face_of_lisp_face P_ ((struct frame *, int)); void prepare_face_for_display P_ ((struct frame *, struct face *)); -int face_suitable_for_iso8859_1_p P_ ((struct face *)); int xstricmp P_ ((unsigned char *, unsigned char *)); -int lookup_face P_ ((struct frame *, Lisp_Object *, int)); -int face_suitable_for_charset_p P_ ((struct face *, int)); +int lookup_face P_ ((struct frame *, Lisp_Object *, int, struct face *)); int lookup_named_face P_ ((struct frame *, Lisp_Object, int)); int smaller_face P_ ((struct frame *, int, int)); int face_with_height P_ ((struct frame *, int, int)); @@ -2145,6 +2140,7 @@ int compute_char_face P_ ((struct frame *, int, Lisp_Object)); void free_all_realized_faces P_ ((Lisp_Object)); extern Lisp_Object Qforeground_color, Qbackground_color; +void free_realized_multibyte_face P_ ((struct frame *, int)); /* Defined in xfns.c */