[NTGDI][FREETYPE] Add special structure for hashing (#4916)

Add FONT_CACHE_HASHED structure and use it.
CORE-11848
This commit is contained in:
Katayama Hirofumi MZ 2022-11-29 19:41:09 +09:00 committed by GitHub
parent 062a8f20a9
commit 4d0d22aee2
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 77 additions and 79 deletions

View file

@ -25,42 +25,42 @@ typedef struct _FONT_ENTRY_COLL_MEM
#include <pshpack1.h> /* We don't like padding for these structures for hashing */
typedef struct _EMULATION_BOLD_ITALIC
{
BYTE Bold;
BYTE Italic;
} EMULATION_BOLD_ITALIC, *PEMULATION_BOLD_ITALIC;
typedef struct _FONT_ASPECT
{
_ANONYMOUS_UNION union {
EMULATION_BOLD_ITALIC Emu;
WORD EmuBoldItalic;
struct {
BYTE Bold;
BYTE Italic;
} Emu;
} DUMMYUNIONNAME;
WORD RenderMode;
} FONT_ASPECT, *PFONT_ASPECT;
typedef struct _FONT_CACHE_HASHED
{
INT GlyphIndex;
FT_Face Face;
LONG lfHeight;
_ANONYMOUS_UNION union {
DWORD AspectValue;
FONT_ASPECT Aspect;
} DUMMYUNIONNAME;
FT_Matrix matTransform;
} FONT_CACHE_HASHED, *PFONT_CACHE_HASHED;
#include <poppack.h>
typedef struct _FONT_CACHE_ENTRY
{
LIST_ENTRY ListEntry;
FT_BitmapGlyph BitmapGlyph;
DWORD dwHash;
/* The following members are hashed */
INT GlyphIndex;
FT_Face Face;
LONG lfHeight;
_ANONYMOUS_UNION union {
FONT_ASPECT Aspect;
DWORD AspectValue;
} DUMMYUNIONNAME;
FT_Matrix matTransform;
FONT_CACHE_HASHED Hashed;
} FONT_CACHE_ENTRY, *PFONT_CACHE_ENTRY;
#include <poppack.h>
C_ASSERT(FIELD_OFFSET(FONT_CACHE_ENTRY, GlyphIndex) % sizeof(DWORD) == 0); /* for hashing */
C_ASSERT(sizeof(FONT_CACHE_ENTRY) % sizeof(DWORD) == 0); /* for hashing */
C_ASSERT(FIELD_OFFSET(FONT_CACHE_ENTRY, Hashed) % sizeof(DWORD) == 0); /* for hashing */
C_ASSERT(sizeof(FONT_CACHE_HASHED) % sizeof(DWORD) == 0); /* for hashing */
/*
* FONTSUBST_... --- constants for font substitutes