From 96ce83d08183068ee1a41bc257584e801560a978 Mon Sep 17 00:00:00 2001 From: Huw Davies Date: Thu, 25 May 2006 10:44:47 +0100 Subject: [PATCH] gdi32: The font cache needs to discriminate whether the device can cope with bitmap fonts or not. --- dlls/gdi/freetype.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/dlls/gdi/freetype.c b/dlls/gdi/freetype.c index 8317eb15993..3136244dd5c 100644 --- a/dlls/gdi/freetype.c +++ b/dlls/gdi/freetype.c @@ -234,6 +234,7 @@ typedef struct { DWORD hash; LOGFONTW lf; FMAT2 matrix; + BOOL can_use_bitmap; } FONT_DESC; typedef struct tagHFONTLIST { @@ -2124,6 +2125,7 @@ static BOOL fontcmp(GdiFont font, FONT_DESC *fd) if(font->font_desc.hash != fd->hash) return TRUE; if(memcmp(&font->font_desc.matrix, &fd->matrix, sizeof(fd->matrix))) return TRUE; if(memcmp(&font->font_desc.lf, &fd->lf, offsetof(LOGFONTW, lfFaceName))) return TRUE; + if(!font->font_desc.can_use_bitmap != !fd->can_use_bitmap) return TRUE; return strcmpiW(font->font_desc.lf.lfFaceName, fd->lf.lfFaceName); } @@ -2147,6 +2149,7 @@ static void calc_hash(FONT_DESC *pfd) hash ^= two_chars; if(!*pwc) break; } + hash ^= !pfd->can_use_bitmap; pfd->hash = hash; return; } @@ -2160,6 +2163,7 @@ static GdiFont find_in_cache(HFONT hfont, LOGFONTW *plf, XFORM *pxf, BOOL can_us memcpy(&fd.lf, plf, sizeof(LOGFONTW)); memcpy(&fd.matrix, pxf, sizeof(FMAT2)); + fd.can_use_bitmap = can_use_bitmap; calc_hash(&fd); /* try the in-use list */ @@ -2286,6 +2290,7 @@ GdiFont WineEngCreateFontInstance(DC *dc, HFONT hfont) memcpy(&ret->font_desc.matrix, &dc->xformWorld2Vport, sizeof(FMAT2)); memcpy(&ret->font_desc.lf, &lf, sizeof(LOGFONTW)); + ret->font_desc.can_use_bitmap = can_use_bitmap; calc_hash(&ret->font_desc); hflist = HeapAlloc(GetProcessHeap(), 0, sizeof(*hflist)); hflist->hfont = hfont;