388 |
static void x_clear_cursor P_ ((struct window *)); |
static void x_clear_cursor P_ ((struct window *)); |
389 |
static void frame_highlight P_ ((struct frame *)); |
static void frame_highlight P_ ((struct frame *)); |
390 |
static void frame_unhighlight P_ ((struct frame *)); |
static void frame_unhighlight P_ ((struct frame *)); |
391 |
static void w32_new_focus_frame P_ ((struct w32_display_info *, |
static void x_new_focus_frame P_ ((struct w32_display_info *, |
392 |
struct frame *)); |
struct frame *)); |
393 |
static void w32_frame_rehighlight P_ ((struct frame *)); |
static void w32_frame_rehighlight P_ ((struct frame *)); |
394 |
static void x_frame_rehighlight P_ ((struct w32_display_info *)); |
static void x_frame_rehighlight P_ ((struct w32_display_info *)); |
395 |
static void x_draw_hollow_cursor P_ ((struct window *, struct glyph_row *)); |
static void x_draw_hollow_cursor P_ ((struct window *, struct glyph_row *)); |
1210 |
|
|
1211 |
if (retval) |
if (retval) |
1212 |
{ |
{ |
1213 |
|
/* Don't trust the ABC widths. For synthesized fonts they are |
1214 |
|
wrong, and so is the result of GetCharWidth()! */ |
1215 |
|
int real_width; |
1216 |
|
GetCharWidth (hdc, *char2b, *char2b, &real_width); |
1217 |
|
|
1218 |
pcm->width = char_widths.abcA + char_widths.abcB + char_widths.abcC; |
pcm->width = char_widths.abcA + char_widths.abcB + char_widths.abcC; |
1219 |
|
|
1220 |
|
/* As far as I can tell, this is the best way to determine what |
1221 |
|
ExtTextOut will do with the broken font. */ |
1222 |
|
if (pcm->width != real_width) |
1223 |
|
pcm->width = (pcm->width + real_width) / 2; |
1224 |
|
|
1225 |
pcm->lbearing = char_widths.abcA; |
pcm->lbearing = char_widths.abcA; |
1226 |
pcm->rbearing = pcm->width - char_widths.abcC; |
pcm->rbearing = char_widths.abcA + char_widths.abcB; |
1227 |
pcm->ascent = FONT_BASE (font); |
pcm->ascent = FONT_BASE (font); |
1228 |
pcm->descent = FONT_DESCENT (font); |
pcm->descent = FONT_DESCENT (font); |
1229 |
} |
} |