xref: /reactos/win32ss/gdi/ntgdi/font.h (revision 1734f297)
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