1 /***************************************************************************/
2 /*                                                                         */
3 /*  winfnt.h                                                               */
4 /*                                                                         */
5 /*    FreeType font driver for Windows FNT/FON files                       */
6 /*                                                                         */
7 /*  Copyright 1996-2001, 2002, 2003, 2004, 2007 by                         */
8 /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
9 /*  Copyright 2007 Dmitry Timoshkov for Codeweavers                        */
10 /*                                                                         */
11 /*  This file is part of the FreeType project, and may only be used,       */
12 /*  modified, and distributed under the terms of the FreeType project      */
13 /*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
14 /*  this file you indicate that you have read the license and              */
15 /*  understand and accept it fully.                                        */
16 /*                                                                         */
17 /***************************************************************************/
18 
19 
20 #ifndef __WINFNT_H__
21 #define __WINFNT_H__
22 
23 
24 #include <ft2build.h>
25 #include FT_WINFONTS_H
26 #include FT_INTERNAL_DRIVER_H
27 
28 
29 FT_BEGIN_HEADER
30 
31 #ifdef FT_CONFIG_OPTION_PIC
32 #error "this module does not support PIC yet"
33 #endif
34 
35   typedef struct  WinMZ_HeaderRec_
36   {
37     FT_UShort  magic;
38     /* skipped content */
39     FT_UShort  lfanew;
40 
41   } WinMZ_HeaderRec;
42 
43 
44   typedef struct  WinNE_HeaderRec_
45   {
46     FT_UShort  magic;
47     /* skipped content */
48     FT_UShort  resource_tab_offset;
49     FT_UShort  rname_tab_offset;
50 
51   } WinNE_HeaderRec;
52 
53 
54   typedef struct  WinPE32_HeaderRec_
55   {
56     FT_ULong   magic;
57     FT_UShort  machine;
58     FT_UShort  number_of_sections;
59     /* skipped content */
60     FT_UShort  size_of_optional_header;
61     /* skipped content */
62     FT_UShort  magic32;
63     /* skipped content */
64     FT_ULong   rsrc_virtual_address;
65     FT_ULong   rsrc_size;
66     /* skipped content */
67 
68   } WinPE32_HeaderRec;
69 
70 
71   typedef struct  WinPE32_SectionRec_
72   {
73     FT_Byte   name[8];
74     /* skipped content */
75     FT_ULong  virtual_address;
76     FT_ULong  size_of_raw_data;
77     FT_ULong  pointer_to_raw_data;
78     /* skipped content */
79 
80   } WinPE32_SectionRec;
81 
82 
83   typedef struct  WinPE_RsrcDirRec_
84   {
85     FT_ULong   characteristics;
86     FT_ULong   time_date_stamp;
87     FT_UShort  major_version;
88     FT_UShort  minor_version;
89     FT_UShort  number_of_named_entries;
90     FT_UShort  number_of_id_entries;
91 
92   } WinPE_RsrcDirRec;
93 
94 
95   typedef struct  WinPE_RsrcDirEntryRec_
96   {
97     FT_ULong  name;
98     FT_ULong  offset;
99 
100   } WinPE_RsrcDirEntryRec;
101 
102 
103   typedef struct  WinPE_RsrcDataEntryRec_
104   {
105     FT_ULong  offset_to_data;
106     FT_ULong  size;
107     FT_ULong  code_page;
108     FT_ULong  reserved;
109 
110   } WinPE_RsrcDataEntryRec;
111 
112 
113   typedef struct  WinNameInfoRec_
114   {
115     FT_UShort  offset;
116     FT_UShort  length;
117     FT_UShort  flags;
118     FT_UShort  id;
119     FT_UShort  handle;
120     FT_UShort  usage;
121 
122   } WinNameInfoRec;
123 
124 
125   typedef struct  WinResourceInfoRec_
126   {
127     FT_UShort  type_id;
128     FT_UShort  count;
129 
130   } WinResourceInfoRec;
131 
132 
133 #define WINFNT_MZ_MAGIC  0x5A4D
134 #define WINFNT_NE_MAGIC  0x454E
135 #define WINFNT_PE_MAGIC  0x4550
136 
137 
138   typedef struct  FNT_FontRec_
139   {
140     FT_ULong             offset;
141 
142     FT_WinFNT_HeaderRec  header;
143 
144     FT_Byte*             fnt_frame;
145     FT_ULong             fnt_size;
146     FT_String*           family_name;
147 
148   } FNT_FontRec, *FNT_Font;
149 
150 
151   typedef struct  FNT_FaceRec_
152   {
153     FT_FaceRec     root;
154     FNT_Font       font;
155 
156     FT_CharMap     charmap_handle;
157     FT_CharMapRec  charmap;  /* a single charmap per face */
158 
159   } FNT_FaceRec, *FNT_Face;
160 
161 
162   FT_EXPORT_VAR( const FT_Driver_ClassRec )  winfnt_driver_class;
163 
164 
165 FT_END_HEADER
166 
167 
168 #endif /* __WINFNT_H__ */
169 
170 
171 /* END */
172