David Turner | ab9cc27 | 2000-07-07 19:46:01 +0000 | [diff] [blame] | 1 | /***************************************************************************/ |
| 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 Lemberg | 415cc7c | 2000-07-08 22:52:21 +0000 | [diff] [blame] | 10 | /* 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 Turner | ab9cc27 | 2000-07-07 19:46:01 +0000 | [diff] [blame] | 12 | /* 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 Lemberg | 415cc7c | 2000-07-08 22:52:21 +0000 | [diff] [blame] | 18 | |
David Turner | ab9cc27 | 2000-07-07 19:46:01 +0000 | [diff] [blame] | 19 | #ifndef WINFNT_H |
| 20 | #define WINFNT_H |
| 21 | |
| 22 | #include <freetype/internal/ftdriver.h> |
| 23 | |
Werner Lemberg | 415cc7c | 2000-07-08 22:52:21 +0000 | [diff] [blame] | 24 | |
Werner Lemberg | c713d92 | 2000-08-01 13:17:04 +0000 | [diff] [blame^] | 25 | #ifdef __cplusplus |
| 26 | extern "C" { |
| 27 | #endif |
| 28 | |
| 29 | |
Werner Lemberg | 415cc7c | 2000-07-08 22:52:21 +0000 | [diff] [blame] | 30 | typedef struct WinMZ_Header_ |
David Turner | ab9cc27 | 2000-07-07 19:46:01 +0000 | [diff] [blame] | 31 | { |
| 32 | FT_UShort magic; |
| 33 | /* skipped content */ |
| 34 | FT_UShort lfanew; |
Werner Lemberg | b48a609 | 2000-07-09 19:15:30 +0000 | [diff] [blame] | 35 | |
David Turner | ab9cc27 | 2000-07-07 19:46:01 +0000 | [diff] [blame] | 36 | } WinMZ_Header; |
| 37 | |
| 38 | |
Werner Lemberg | 415cc7c | 2000-07-08 22:52:21 +0000 | [diff] [blame] | 39 | typedef struct WinNE_Header_ |
David Turner | ab9cc27 | 2000-07-07 19:46:01 +0000 | [diff] [blame] | 40 | { |
| 41 | FT_UShort magic; |
| 42 | /* skipped content */ |
| 43 | FT_UShort resource_tab_offset; |
| 44 | FT_UShort rname_tab_offset; |
Werner Lemberg | b48a609 | 2000-07-09 19:15:30 +0000 | [diff] [blame] | 45 | |
David Turner | ab9cc27 | 2000-07-07 19:46:01 +0000 | [diff] [blame] | 46 | } WinNE_Header; |
| 47 | |
| 48 | |
Werner Lemberg | 415cc7c | 2000-07-08 22:52:21 +0000 | [diff] [blame] | 49 | typedef struct WinNameInfo_ |
David Turner | ab9cc27 | 2000-07-07 19:46:01 +0000 | [diff] [blame] | 50 | { |
| 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 Lemberg | b48a609 | 2000-07-09 19:15:30 +0000 | [diff] [blame] | 57 | |
David Turner | ab9cc27 | 2000-07-07 19:46:01 +0000 | [diff] [blame] | 58 | } WinNameInfo; |
| 59 | |
| 60 | |
Werner Lemberg | 415cc7c | 2000-07-08 22:52:21 +0000 | [diff] [blame] | 61 | typedef struct WinResourceInfo_ |
David Turner | ab9cc27 | 2000-07-07 19:46:01 +0000 | [diff] [blame] | 62 | { |
| 63 | FT_UShort type_id; |
| 64 | FT_UShort count; |
Werner Lemberg | b48a609 | 2000-07-09 19:15:30 +0000 | [diff] [blame] | 65 | |
David Turner | ab9cc27 | 2000-07-07 19:46:01 +0000 | [diff] [blame] | 66 | } WinResourceInfo; |
| 67 | |
Werner Lemberg | 415cc7c | 2000-07-08 22:52:21 +0000 | [diff] [blame] | 68 | |
David Turner | ab9cc27 | 2000-07-07 19:46:01 +0000 | [diff] [blame] | 69 | #define WINFNT_MZ_MAGIC 0x5A4D |
| 70 | #define WINFNT_NE_MAGIC 0x454E |
| 71 | |
| 72 | |
Werner Lemberg | 415cc7c | 2000-07-08 22:52:21 +0000 | [diff] [blame] | 73 | typedef struct WinFNT_Header_ |
David Turner | ab9cc27 | 2000-07-07 19:46:01 +0000 | [diff] [blame] | 74 | { |
Werner Lemberg | 415cc7c | 2000-07-08 22:52:21 +0000 | [diff] [blame] | 75 | 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 Lemberg | b48a609 | 2000-07-09 19:15:30 +0000 | [diff] [blame] | 111 | |
David Turner | ab9cc27 | 2000-07-07 19:46:01 +0000 | [diff] [blame] | 112 | } WinFNT_Header; |
| 113 | |
| 114 | |
Werner Lemberg | 415cc7c | 2000-07-08 22:52:21 +0000 | [diff] [blame] | 115 | typedef struct FNT_Font_ |
David Turner | ab9cc27 | 2000-07-07 19:46:01 +0000 | [diff] [blame] | 116 | { |
| 117 | FT_ULong offset; |
| 118 | FT_Int size_shift; |
Werner Lemberg | b48a609 | 2000-07-09 19:15:30 +0000 | [diff] [blame] | 119 | |
David Turner | ab9cc27 | 2000-07-07 19:46:01 +0000 | [diff] [blame] | 120 | WinFNT_Header header; |
Werner Lemberg | b48a609 | 2000-07-09 19:15:30 +0000 | [diff] [blame] | 121 | |
David Turner | ab9cc27 | 2000-07-07 19:46:01 +0000 | [diff] [blame] | 122 | FT_Byte* fnt_frame; |
| 123 | FT_ULong fnt_size; |
Werner Lemberg | b48a609 | 2000-07-09 19:15:30 +0000 | [diff] [blame] | 124 | |
David Turner | ab9cc27 | 2000-07-07 19:46:01 +0000 | [diff] [blame] | 125 | } FNT_Font; |
| 126 | |
| 127 | |
Werner Lemberg | 415cc7c | 2000-07-08 22:52:21 +0000 | [diff] [blame] | 128 | typedef struct FNT_SizeRec_ |
David Turner | ab9cc27 | 2000-07-07 19:46:01 +0000 | [diff] [blame] | 129 | { |
Werner Lemberg | 415cc7c | 2000-07-08 22:52:21 +0000 | [diff] [blame] | 130 | FT_SizeRec root; |
| 131 | FNT_Font* font; |
Werner Lemberg | b48a609 | 2000-07-09 19:15:30 +0000 | [diff] [blame] | 132 | |
David Turner | ab9cc27 | 2000-07-07 19:46:01 +0000 | [diff] [blame] | 133 | } FNT_SizeRec, *FNT_Size; |
| 134 | |
| 135 | |
Werner Lemberg | 415cc7c | 2000-07-08 22:52:21 +0000 | [diff] [blame] | 136 | typedef struct FNT_FaceRec_ |
David Turner | ab9cc27 | 2000-07-07 19:46:01 +0000 | [diff] [blame] | 137 | { |
| 138 | FT_FaceRec root; |
Werner Lemberg | b48a609 | 2000-07-09 19:15:30 +0000 | [diff] [blame] | 139 | |
David Turner | ab9cc27 | 2000-07-07 19:46:01 +0000 | [diff] [blame] | 140 | FT_UInt num_fonts; |
| 141 | FNT_Font* fonts; |
| 142 | |
Werner Lemberg | b48a609 | 2000-07-09 19:15:30 +0000 | [diff] [blame] | 143 | FT_CharMap charmap_handle; |
David Turner | ab9cc27 | 2000-07-07 19:46:01 +0000 | [diff] [blame] | 144 | FT_CharMapRec charmap; /* a single charmap per face */ |
| 145 | |
| 146 | } FNT_FaceRec, *FNT_Face; |
| 147 | |
| 148 | |
Werner Lemberg | 415cc7c | 2000-07-08 22:52:21 +0000 | [diff] [blame] | 149 | FT_EXPORT_VAR( const FT_Driver_Class ) winfnt_driver_class; |
| 150 | |
David Turner | ab9cc27 | 2000-07-07 19:46:01 +0000 | [diff] [blame] | 151 | |
Werner Lemberg | c713d92 | 2000-08-01 13:17:04 +0000 | [diff] [blame^] | 152 | #ifdef __cplusplus |
| 153 | } |
| 154 | #endif |
| 155 | |
| 156 | |
David Turner | ab9cc27 | 2000-07-07 19:46:01 +0000 | [diff] [blame] | 157 | #endif /* WINFNT_H */ |
Werner Lemberg | 415cc7c | 2000-07-08 22:52:21 +0000 | [diff] [blame] | 158 | |
| 159 | |
| 160 | /* END */ |