1152 |
XChar2b *, |
XChar2b *, |
1153 |
int *)); |
int *)); |
1154 |
static struct face *x_get_char_face_and_encoding P_ ((struct frame *, int, |
static struct face *x_get_char_face_and_encoding P_ ((struct frame *, int, |
1155 |
int, XChar2b *, int)); |
int, XChar2b *, int, |
1156 |
|
int)); |
1157 |
static XCharStruct *x_per_char_metric P_ ((XFontStruct *, XChar2b *)); |
static XCharStruct *x_per_char_metric P_ ((XFontStruct *, XChar2b *)); |
1158 |
static void x_encode_char P_ ((int, XChar2b *, struct font_info *)); |
static void x_encode_char P_ ((int, XChar2b *, struct font_info *)); |
1159 |
static void x_append_glyph P_ ((struct it *)); |
static void x_append_glyph P_ ((struct it *)); |
1294 |
|
|
1295 |
/* Get face and two-byte form of character C in face FACE_ID on frame |
/* Get face and two-byte form of character C in face FACE_ID on frame |
1296 |
F. The encoding of C is returned in *CHAR2B. MULTIBYTE_P non-zero |
F. The encoding of C is returned in *CHAR2B. MULTIBYTE_P non-zero |
1297 |
means we want to display multibyte text. Value is a pointer to a |
means we want to display multibyte text. DISPLAY_P non-zero means |
1298 |
realized face that is ready for display. */ |
make sure that X resources for the face returned are allocated. |
1299 |
|
Value is a pointer to a realized face that is ready for display if |
1300 |
|
DISPLAY_P is non-zero. */ |
1301 |
|
|
1302 |
static INLINE struct face * |
static INLINE struct face * |
1303 |
x_get_char_face_and_encoding (f, c, face_id, char2b, multibyte_p) |
x_get_char_face_and_encoding (f, c, face_id, char2b, multibyte_p, display_p) |
1304 |
struct frame *f; |
struct frame *f; |
1305 |
int c, face_id; |
int c, face_id; |
1306 |
XChar2b *char2b; |
XChar2b *char2b; |
1307 |
int multibyte_p; |
int multibyte_p, display_p; |
1308 |
{ |
{ |
1309 |
struct face *face = FACE_FROM_ID (f, face_id); |
struct face *face = FACE_FROM_ID (f, face_id); |
1310 |
|
|
1346 |
} |
} |
1347 |
|
|
1348 |
/* Make sure X resources of the face are allocated. */ |
/* Make sure X resources of the face are allocated. */ |
1349 |
xassert (face != NULL); |
if (display_p) |
1350 |
PREPARE_FACE_FOR_DISPLAY (f, face); |
{ |
1351 |
|
xassert (face != NULL); |
1352 |
|
PREPARE_FACE_FOR_DISPLAY (f, face); |
1353 |
|
} |
1354 |
|
|
1355 |
return face; |
return face; |
1356 |
} |
} |
1861 |
/* Get font to use. Encode IT->char_to_display. */ |
/* Get font to use. Encode IT->char_to_display. */ |
1862 |
x_get_char_face_and_encoding (it->f, it->char_to_display, |
x_get_char_face_and_encoding (it->f, it->char_to_display, |
1863 |
it->face_id, &char2b, |
it->face_id, &char2b, |
1864 |
it->multibyte_p); |
it->multibyte_p, 0); |
1865 |
font = face->font; |
font = face->font; |
1866 |
|
|
1867 |
/* When no suitable font found, use the default font. */ |
/* When no suitable font found, use the default font. */ |
2093 |
it->face_id = FACE_FOR_CHAR (it->f, face, it->char_to_display); |
it->face_id = FACE_FOR_CHAR (it->f, face, it->char_to_display); |
2094 |
face = FACE_FROM_ID (it->f, it->face_id); |
face = FACE_FROM_ID (it->f, it->face_id); |
2095 |
x_get_char_face_and_encoding (it->f, it->char_to_display, |
x_get_char_face_and_encoding (it->f, it->char_to_display, |
2096 |
it->face_id, &char2b, it->multibyte_p); |
it->face_id, &char2b, it->multibyte_p, 0); |
2097 |
font = face->font; |
font = face->font; |
2098 |
|
|
2099 |
/* When no suitable font found, use the default font. */ |
/* When no suitable font found, use the default font. */ |
2181 |
|
|
2182 |
face = FACE_FROM_ID (it->f, face_id); |
face = FACE_FROM_ID (it->f, face_id); |
2183 |
x_get_char_face_and_encoding (it->f, ch, face->id, &char2b, |
x_get_char_face_and_encoding (it->f, ch, face->id, &char2b, |
2184 |
it->multibyte_p); |
it->multibyte_p, 0); |
2185 |
font = face->font; |
font = face->font; |
2186 |
if (font == NULL) |
if (font == NULL) |
2187 |
{ |
{ |
4979 |
int this_face_id = FACE_FOR_CHAR (XFRAME (w->frame), base_face, c); \ |
int this_face_id = FACE_FOR_CHAR (XFRAME (w->frame), base_face, c); \ |
4980 |
faces[n] = FACE_FROM_ID (XFRAME (w->frame), this_face_id); \ |
faces[n] = FACE_FROM_ID (XFRAME (w->frame), this_face_id); \ |
4981 |
x_get_char_face_and_encoding (XFRAME (w->frame), c, \ |
x_get_char_face_and_encoding (XFRAME (w->frame), c, \ |
4982 |
this_face_id, char2b + n, 1); \ |
this_face_id, char2b + n, 1, 1); \ |
4983 |
} \ |
} \ |
4984 |
\ |
\ |
4985 |
/* Make glyph_strings for each glyph sequence that is drawable by \ |
/* Make glyph_strings for each glyph sequence that is drawable by \ |