Mercurial > emacs
changeset 91258:5e8f33ad8f63
*** empty log message ***
author | Jason Rumney <jasonr@gnu.org> |
---|---|
date | Wed, 19 Dec 2007 22:22:55 +0000 |
parents | 699989dc6a69 |
children | 51863d34f0f1 |
files | src/w32font.c |
diffstat | 1 files changed, 17 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/w32font.c Wed Dec 19 22:22:43 2007 +0000 +++ b/src/w32font.c Wed Dec 19 22:22:55 2007 +0000 @@ -203,6 +203,8 @@ if (w32_font == NULL) return NULL; + safe_debug_print (font_entity); + if (!w32font_open_internal (f, font_entity, pixel_size, w32_font)) { xfree (w32_font); @@ -293,7 +295,14 @@ WORD *wcode = alloca(nglyphs * sizeof (WORD)); SIZE size; +#if 0 + /* Frames can come and go, and their fonts outlive them. This is + particularly troublesome with tooltip frames, and causes crashes. */ f = ((struct w32font_info *)font)->owning_frame; +#else + f = selected_frame; +#endif + dc = get_frame_dc (f); old_font = SelectObject (dc, ((W32FontStruct *)(font->font.font))->hfont); @@ -601,6 +610,10 @@ bzero (&match_data.pattern, sizeof (LOGFONT)); fill_in_logfont (f, &match_data.pattern, font_spec); + /* If weight was not specified, try to get a normal weight font. */ + if (!match_data.pattern.lfWeight) + match_data.pattern.lfWeight = FW_NORMAL; + match_data.opentype_only = opentype_only; if (opentype_only) match_data.pattern.lfOutPrecision = OUT_OUTLINE_PRECIS; @@ -637,6 +650,10 @@ bzero (&logfont, sizeof (logfont)); fill_in_logfont (f, &logfont, font_entity); + /* If weight was not specified, try to get a normal weight font. */ + if (!logfont.lfWeight) + logfont.lfWeight = FW_NORMAL; + size = XINT (AREF (font_entity, FONT_SIZE_INDEX)); if (!size) size = pixel_size;