xref: /reactos/win32ss/gdi/ntgdi/font.h (revision 57702ed4)
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 */
27 
28 typedef struct _EMULATION_BOLD_ITALIC
29 {
30     BYTE Bold;
31     BYTE Italic;
32 } EMULATION_BOLD_ITALIC, *PEMULATION_BOLD_ITALIC;
33 
34 typedef struct _FONT_ASPECT
35 {
36     _ANONYMOUS_UNION union {
37         EMULATION_BOLD_ITALIC Emu;
38         WORD EmuBoldItalic;
39     } DUMMYUNIONNAME;
40     WORD RenderMode;
41 } FONT_ASPECT, *PFONT_ASPECT;
42 
43 typedef struct _FONT_CACHE_ENTRY
44 {
45     LIST_ENTRY ListEntry;
46     FT_BitmapGlyph BitmapGlyph;
47     DWORD dwHash;
48 
49     /* The following members are hashed */
50     INT GlyphIndex;
51     FT_Face Face;
52     LONG lfHeight;
53     _ANONYMOUS_UNION union {
54         FONT_ASPECT Aspect;
55         DWORD AspectValue;
56     } DUMMYUNIONNAME;
57     FT_Matrix matTransform;
58 } FONT_CACHE_ENTRY, *PFONT_CACHE_ENTRY;
59 
60 #include <poppack.h>
61 
62 C_ASSERT(offsetof(FONT_CACHE_ENTRY, GlyphIndex) % sizeof(DWORD) == 0);
63 C_ASSERT(sizeof(FONT_CACHE_ENTRY) % sizeof(DWORD) == 0);
64 
65 /*
66  * FONTSUBST_... --- constants for font substitutes
67  */
68 #define FONTSUBST_FROM          0
69 #define FONTSUBST_TO            1
70 #define FONTSUBST_FROM_AND_TO   2
71 
72 /*
73  * FONTSUBST_ENTRY --- font substitute entry
74  */
75 typedef struct FONTSUBST_ENTRY
76 {
77     LIST_ENTRY      ListEntry;
78     UNICODE_STRING  FontNames[FONTSUBST_FROM_AND_TO];
79     BYTE            CharSets[FONTSUBST_FROM_AND_TO];
80 } FONTSUBST_ENTRY, *PFONTSUBST_ENTRY;
81 
82 
83 typedef struct GDI_LOAD_FONT
84 {
85     PUNICODE_STRING     pFileName;
86     PSHARED_MEM         Memory;
87     DWORD               Characteristics;
88     UNICODE_STRING      RegValueName;
89     BOOL                IsTrueType;
90     BYTE                CharSet;
91     PFONT_ENTRY_MEM     PrivateEntry;
92 } GDI_LOAD_FONT, *PGDI_LOAD_FONT;
93 
94