gdi32: The font cache needs to discriminate whether the device can cope with bitmap fonts or not.
This commit is contained in:
parent
013d00f094
commit
96ce83d081
|
@ -234,6 +234,7 @@ typedef struct {
|
||||||
DWORD hash;
|
DWORD hash;
|
||||||
LOGFONTW lf;
|
LOGFONTW lf;
|
||||||
FMAT2 matrix;
|
FMAT2 matrix;
|
||||||
|
BOOL can_use_bitmap;
|
||||||
} FONT_DESC;
|
} FONT_DESC;
|
||||||
|
|
||||||
typedef struct tagHFONTLIST {
|
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(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.matrix, &fd->matrix, sizeof(fd->matrix))) return TRUE;
|
||||||
if(memcmp(&font->font_desc.lf, &fd->lf, offsetof(LOGFONTW, lfFaceName))) 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);
|
return strcmpiW(font->font_desc.lf.lfFaceName, fd->lf.lfFaceName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2147,6 +2149,7 @@ static void calc_hash(FONT_DESC *pfd)
|
||||||
hash ^= two_chars;
|
hash ^= two_chars;
|
||||||
if(!*pwc) break;
|
if(!*pwc) break;
|
||||||
}
|
}
|
||||||
|
hash ^= !pfd->can_use_bitmap;
|
||||||
pfd->hash = hash;
|
pfd->hash = hash;
|
||||||
return;
|
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.lf, plf, sizeof(LOGFONTW));
|
||||||
memcpy(&fd.matrix, pxf, sizeof(FMAT2));
|
memcpy(&fd.matrix, pxf, sizeof(FMAT2));
|
||||||
|
fd.can_use_bitmap = can_use_bitmap;
|
||||||
calc_hash(&fd);
|
calc_hash(&fd);
|
||||||
|
|
||||||
/* try the in-use list */
|
/* 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.matrix, &dc->xformWorld2Vport, sizeof(FMAT2));
|
||||||
memcpy(&ret->font_desc.lf, &lf, sizeof(LOGFONTW));
|
memcpy(&ret->font_desc.lf, &lf, sizeof(LOGFONTW));
|
||||||
|
ret->font_desc.can_use_bitmap = can_use_bitmap;
|
||||||
calc_hash(&ret->font_desc);
|
calc_hash(&ret->font_desc);
|
||||||
hflist = HeapAlloc(GetProcessHeap(), 0, sizeof(*hflist));
|
hflist = HeapAlloc(GetProcessHeap(), 0, sizeof(*hflist));
|
||||||
hflist->hfont = hfont;
|
hflist->hfont = hfont;
|
||||||
|
|
Loading…
Reference in New Issue