1 /***************************************************************************/ 2 /* */ 3 /* winfnt.h */ 4 /* */ 5 /* FreeType font driver for Windows FNT/FON files */ 6 /* */ 7 /* Copyright 1996-2018 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