# HG changeset patch # User Jason Rumney # Date 1196797531 0 # Node ID bbdb7226d848594249effe22a744295d97efaf5e # Parent 392369adecec477bdb6da1fc1d02dcc888fff286 (add_font_entity_to_list): Compare only the beginning of full name. diff -r 392369adecec -r bbdb7226d848 src/w32font.c --- a/src/w32font.c Tue Dec 04 06:07:44 2007 +0000 +++ b/src/w32font.c Tue Dec 04 19:45:31 2007 +0000 @@ -117,12 +117,14 @@ /* Handles the problem that EnumFontFamiliesEx will not return all style variations if the font name is not specified. */ -static void list_all_matching_fonts P_ ((struct font_callback_data *match_data)); +static void list_all_matching_fonts P_ ((struct font_callback_data *match)); /* MingW headers only define this when _WIN32_WINNT >= 0x0500, but we target older versions. */ +#ifndef GGI_MARK_NONEXISTING_GLYPHS #define GGI_MARK_NONEXISTING_GLYPHS 1 +#endif static int memq_no_quit (elt, list) @@ -503,7 +505,14 @@ Draw glyphs between FROM and TO of S->char2b at (X Y) pixel position of frame F with S->FACE and S->GC. If WITH_BACKGROUND is nonzero, fill the background in advance. It is assured that - WITH_BACKGROUND is zero when (FROM > 0 || TO < S->nchars). */ + WITH_BACKGROUND is zero when (FROM > 0 || TO < S->nchars). + + TODO: Currently this assumes that the colors and fonts are already + set in the DC. This seems to be true now, but maybe only due to + the old font code setting it up. It may be safer to resolve faces + and fonts in here and set them explicitly +*/ + static int w32font_draw (s, from, to, x, y, with_background) struct glyph_string *s; @@ -972,9 +981,11 @@ && font_matches_spec (font_type, physical_font, match_data->orig_font_spec) /* Avoid Windows substitution so we can control substitution with - alternate-fontname-alist. */ - && !strnicmp (&logical_font->elfFullName, - &match_data->pattern.lfFaceName, LF_FACESIZE)) + alternate-fontname-alist. Full name may have Bold and/or Italic + appended, so only compare the beginning of the name. */ + && !strnicmp ((char *)&logical_font->elfFullName, + (char *)&match_data->pattern.lfFaceName, + min (strlen(&match_data->pattern.lfFaceName), LF_FACESIZE))) { Lisp_Object entity = w32_enumfont_pattern_entity (match_data->frame, logical_font,