blob: 0acc04e6a3ded2e2ab2da09dfd1d07b232427b09 [file] [log] [blame]
David Turnerab9cc272000-07-07 19:46:01 +00001/***************************************************************************/
2/* */
3/* winfnt.h */
4/* */
5/* FreeType font driver for Windows FNT/FON files */
6/* */
7/* Copyright 1996-2000 by */
8/* David Turner, Robert Wilhelm, and Werner Lemberg. */
9/* */
Werner Lemberg415cc7c2000-07-08 22:52:21 +000010/* This file is part of the FreeType project, and may only be used, */
11/* modified, and distributed under the terms of the FreeType project */
David Turnerab9cc272000-07-07 19:46:01 +000012/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
13/* this file you indicate that you have read the license and */
14/* understand and accept it fully. */
15/* */
16/***************************************************************************/
17
Werner Lemberg415cc7c2000-07-08 22:52:21 +000018
David Turnerab9cc272000-07-07 19:46:01 +000019#ifndef WINFNT_H
20#define WINFNT_H
21
22#include <freetype/internal/ftdriver.h>
23
Werner Lemberg415cc7c2000-07-08 22:52:21 +000024
Werner Lembergc713d922000-08-01 13:17:04 +000025#ifdef __cplusplus
26 extern "C" {
27#endif
28
29
Werner Lemberg415cc7c2000-07-08 22:52:21 +000030 typedef struct WinMZ_Header_
David Turnerab9cc272000-07-07 19:46:01 +000031 {
32 FT_UShort magic;
33 /* skipped content */
34 FT_UShort lfanew;
Werner Lembergb48a6092000-07-09 19:15:30 +000035
David Turnerab9cc272000-07-07 19:46:01 +000036 } WinMZ_Header;
37
38
Werner Lemberg415cc7c2000-07-08 22:52:21 +000039 typedef struct WinNE_Header_
David Turnerab9cc272000-07-07 19:46:01 +000040 {
41 FT_UShort magic;
42 /* skipped content */
43 FT_UShort resource_tab_offset;
44 FT_UShort rname_tab_offset;
Werner Lembergb48a6092000-07-09 19:15:30 +000045
David Turnerab9cc272000-07-07 19:46:01 +000046 } WinNE_Header;
47
48
Werner Lemberg415cc7c2000-07-08 22:52:21 +000049 typedef struct WinNameInfo_
David Turnerab9cc272000-07-07 19:46:01 +000050 {
51 FT_UShort offset;
52 FT_UShort length;
53 FT_UShort flags;
54 FT_UShort id;
55 FT_UShort handle;
56 FT_UShort usage;
Werner Lembergb48a6092000-07-09 19:15:30 +000057
David Turnerab9cc272000-07-07 19:46:01 +000058 } WinNameInfo;
59
60
Werner Lemberg415cc7c2000-07-08 22:52:21 +000061 typedef struct WinResourceInfo_
David Turnerab9cc272000-07-07 19:46:01 +000062 {
63 FT_UShort type_id;
64 FT_UShort count;
Werner Lembergb48a6092000-07-09 19:15:30 +000065
David Turnerab9cc272000-07-07 19:46:01 +000066 } WinResourceInfo;
67
Werner Lemberg415cc7c2000-07-08 22:52:21 +000068
David Turnerab9cc272000-07-07 19:46:01 +000069#define WINFNT_MZ_MAGIC 0x5A4D
70#define WINFNT_NE_MAGIC 0x454E
71
72
Werner Lemberg415cc7c2000-07-08 22:52:21 +000073 typedef struct WinFNT_Header_
David Turnerab9cc272000-07-07 19:46:01 +000074 {
Werner Lemberg415cc7c2000-07-08 22:52:21 +000075 FT_UShort version;
76 FT_ULong file_size;
77 FT_Byte copyright[60];
78 FT_UShort file_type;
79 FT_UShort nominal_point_size;
80 FT_UShort vertical_resolution;
81 FT_UShort horizontal_resolution;
82 FT_UShort ascent;
83 FT_UShort internal_leading;
84 FT_UShort external_leading;
85 FT_Byte italic;
86 FT_Byte underline;
87 FT_Byte strike_out;
88 FT_UShort weight;
89 FT_Byte charset;
90 FT_UShort pixel_width;
91 FT_UShort pixel_height;
92 FT_Byte pitch_and_family;
93 FT_UShort avg_width;
94 FT_UShort max_width;
95 FT_Byte first_char;
96 FT_Byte last_char;
97 FT_Byte default_char;
98 FT_Byte break_char;
99 FT_UShort bytes_per_row;
100 FT_ULong device_offset;
101 FT_ULong face_name_offset;
102 FT_ULong bits_pointer;
103 FT_ULong bits_offset;
104 FT_Byte reserved;
105 FT_ULong flags;
106 FT_UShort A_space;
107 FT_UShort B_space;
108 FT_UShort C_space;
109 FT_UShort color_table_offset;
110 FT_Byte reserved2[4];
Werner Lembergb48a6092000-07-09 19:15:30 +0000111
David Turnerab9cc272000-07-07 19:46:01 +0000112 } WinFNT_Header;
113
114
Werner Lemberg415cc7c2000-07-08 22:52:21 +0000115 typedef struct FNT_Font_
David Turnerab9cc272000-07-07 19:46:01 +0000116 {
117 FT_ULong offset;
118 FT_Int size_shift;
Werner Lembergb48a6092000-07-09 19:15:30 +0000119
David Turnerab9cc272000-07-07 19:46:01 +0000120 WinFNT_Header header;
Werner Lembergb48a6092000-07-09 19:15:30 +0000121
David Turnerab9cc272000-07-07 19:46:01 +0000122 FT_Byte* fnt_frame;
123 FT_ULong fnt_size;
Werner Lembergb48a6092000-07-09 19:15:30 +0000124
David Turnerab9cc272000-07-07 19:46:01 +0000125 } FNT_Font;
126
127
Werner Lemberg415cc7c2000-07-08 22:52:21 +0000128 typedef struct FNT_SizeRec_
David Turnerab9cc272000-07-07 19:46:01 +0000129 {
Werner Lemberg415cc7c2000-07-08 22:52:21 +0000130 FT_SizeRec root;
131 FNT_Font* font;
Werner Lembergb48a6092000-07-09 19:15:30 +0000132
David Turnerab9cc272000-07-07 19:46:01 +0000133 } FNT_SizeRec, *FNT_Size;
134
135
Werner Lemberg415cc7c2000-07-08 22:52:21 +0000136 typedef struct FNT_FaceRec_
David Turnerab9cc272000-07-07 19:46:01 +0000137 {
138 FT_FaceRec root;
Werner Lembergb48a6092000-07-09 19:15:30 +0000139
David Turnerab9cc272000-07-07 19:46:01 +0000140 FT_UInt num_fonts;
141 FNT_Font* fonts;
142
Werner Lembergb48a6092000-07-09 19:15:30 +0000143 FT_CharMap charmap_handle;
David Turnerab9cc272000-07-07 19:46:01 +0000144 FT_CharMapRec charmap; /* a single charmap per face */
145
146 } FNT_FaceRec, *FNT_Face;
147
148
Werner Lemberg415cc7c2000-07-08 22:52:21 +0000149 FT_EXPORT_VAR( const FT_Driver_Class ) winfnt_driver_class;
150
David Turnerab9cc272000-07-07 19:46:01 +0000151
Werner Lembergc713d922000-08-01 13:17:04 +0000152#ifdef __cplusplus
153 }
154#endif
155
156
David Turnerab9cc272000-07-07 19:46:01 +0000157#endif /* WINFNT_H */
Werner Lemberg415cc7c2000-07-08 22:52:21 +0000158
159
160/* END */