1 #pragma once 2 3 4 typedef struct _FONT_ENTRY 5 { 6 LIST_ENTRY ListEntry; 7 FONTGDI *Font; 8 UNICODE_STRING FaceName; 9 UNICODE_STRING StyleName; 10 BYTE NotEnum; 11 } FONT_ENTRY, *PFONT_ENTRY; 12 13 typedef struct _FONT_ENTRY_MEM 14 { 15 LIST_ENTRY ListEntry; 16 FONT_ENTRY *Entry; 17 } FONT_ENTRY_MEM, *PFONT_ENTRY_MEM; 18 19 typedef struct _FONT_ENTRY_COLL_MEM 20 { 21 LIST_ENTRY ListEntry; 22 HANDLE Handle; 23 FONT_ENTRY_MEM *Entry; 24 } FONT_ENTRY_COLL_MEM, *PFONT_ENTRY_COLL_MEM; 25 26 #include <pshpack1.h> /* We don't like padding for these structures for hashing */ 27 28 typedef struct _FONT_ASPECT 29 { 30 _ANONYMOUS_UNION union { 31 WORD EmuBoldItalic; 32 struct { 33 BYTE Bold; 34 BYTE Italic; 35 } Emu; 36 } DUMMYUNIONNAME; 37 WORD RenderMode; 38 } FONT_ASPECT, *PFONT_ASPECT; 39 40 typedef struct _FONT_CACHE_HASHED 41 { 42 INT GlyphIndex; 43 FT_Face Face; 44 LONG lfHeight; 45 LONG lfWidth; 46 _ANONYMOUS_UNION union { 47 DWORD AspectValue; 48 FONT_ASPECT Aspect; 49 } DUMMYUNIONNAME; 50 FT_Matrix matTransform; 51 } FONT_CACHE_HASHED, *PFONT_CACHE_HASHED; 52 53 #include <poppack.h> 54 55 typedef struct _FONT_CACHE_ENTRY 56 { 57 LIST_ENTRY ListEntry; 58 FT_BitmapGlyph BitmapGlyph; 59 DWORD dwHash; 60 FONT_CACHE_HASHED Hashed; 61 } FONT_CACHE_ENTRY, *PFONT_CACHE_ENTRY; 62 63 C_ASSERT(FIELD_OFFSET(FONT_CACHE_ENTRY, Hashed) % sizeof(DWORD) == 0); /* for hashing */ 64 C_ASSERT(sizeof(FONT_CACHE_HASHED) % sizeof(DWORD) == 0); /* for hashing */ 65 66 /* 67 * FONTSUBST_... --- constants for font substitutes 68 */ 69 #define FONTSUBST_FROM 0 70 #define FONTSUBST_TO 1 71 #define FONTSUBST_FROM_AND_TO 2 72 73 /* 74 * FONTSUBST_ENTRY --- font substitute entry 75 */ 76 typedef struct FONTSUBST_ENTRY 77 { 78 LIST_ENTRY ListEntry; 79 UNICODE_STRING FontNames[FONTSUBST_FROM_AND_TO]; 80 BYTE CharSets[FONTSUBST_FROM_AND_TO]; 81 } FONTSUBST_ENTRY, *PFONTSUBST_ENTRY; 82 83 84 typedef struct GDI_LOAD_FONT 85 { 86 PUNICODE_STRING pFileName; 87 PSHARED_MEM Memory; 88 DWORD Characteristics; 89 UNICODE_STRING RegValueName; 90 BOOL IsTrueType; 91 BYTE CharSet; 92 PFONT_ENTRY_MEM PrivateEntry; 93 } GDI_LOAD_FONT, *PGDI_LOAD_FONT; 94 95