1 /**************************************************************************** 2 * 3 * winfnt.h 4 * 5 * FreeType font driver for Windows FNT/FON files 6 * 7 * Copyright (C) 1996-2020 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 <freetype/ftwinfnt.h> 25 #include <freetype/internal/ftdrv.h> 26 27 28 FT_BEGIN_HEADER 29 30 31 typedef struct WinMZ_HeaderRec_ 32 { 33 FT_UShort magic; 34 /* skipped content */ 35 FT_UShort lfanew; 36 37 } WinMZ_HeaderRec; 38 39 40 typedef struct WinNE_HeaderRec_ 41 { 42 FT_UShort magic; 43 /* skipped content */ 44 FT_UShort resource_tab_offset; 45 FT_UShort rname_tab_offset; 46 47 } WinNE_HeaderRec; 48 49 50 typedef struct WinPE32_HeaderRec_ 51 { 52 FT_ULong magic; 53 FT_UShort machine; 54 FT_UShort number_of_sections; 55 /* skipped content */ 56 FT_UShort size_of_optional_header; 57 /* skipped content */ 58 FT_UShort magic32; 59 /* skipped content */ 60 FT_ULong rsrc_virtual_address; 61 FT_ULong rsrc_size; 62 /* skipped content */ 63 64 } WinPE32_HeaderRec; 65 66 67 typedef struct WinPE32_SectionRec_ 68 { 69 FT_Byte name[8]; 70 /* skipped content */ 71 FT_ULong virtual_address; 72 FT_ULong size_of_raw_data; 73 FT_ULong pointer_to_raw_data; 74 /* skipped content */ 75 76 } WinPE32_SectionRec; 77 78 79 typedef struct WinPE_RsrcDirRec_ 80 { 81 FT_ULong characteristics; 82 FT_ULong time_date_stamp; 83 FT_UShort major_version; 84 FT_UShort minor_version; 85 FT_UShort number_of_named_entries; 86 FT_UShort number_of_id_entries; 87 88 } WinPE_RsrcDirRec; 89 90 91 typedef struct WinPE_RsrcDirEntryRec_ 92 { 93 FT_ULong name; 94 FT_ULong offset; 95 96 } WinPE_RsrcDirEntryRec; 97 98 99 typedef struct WinPE_RsrcDataEntryRec_ 100 { 101 FT_ULong offset_to_data; 102 FT_ULong size; 103 FT_ULong code_page; 104 FT_ULong reserved; 105 106 } WinPE_RsrcDataEntryRec; 107 108 109 typedef struct WinNameInfoRec_ 110 { 111 FT_UShort offset; 112 FT_UShort length; 113 FT_UShort flags; 114 FT_UShort id; 115 FT_UShort handle; 116 FT_UShort usage; 117 118 } WinNameInfoRec; 119 120 121 typedef struct WinResourceInfoRec_ 122 { 123 FT_UShort type_id; 124 FT_UShort count; 125 126 } WinResourceInfoRec; 127 128 129 #define WINFNT_MZ_MAGIC 0x5A4D 130 #define WINFNT_NE_MAGIC 0x454E 131 #define WINFNT_PE_MAGIC 0x4550 132 133 134 typedef struct FNT_FontRec_ 135 { 136 FT_ULong offset; 137 138 FT_WinFNT_HeaderRec header; 139 140 FT_Byte* fnt_frame; 141 FT_ULong fnt_size; 142 FT_String* family_name; 143 144 } FNT_FontRec, *FNT_Font; 145 146 147 typedef struct FNT_FaceRec_ 148 { 149 FT_FaceRec root; 150 FNT_Font font; 151 152 } FNT_FaceRec, *FNT_Face; 153 154 155 FT_EXPORT_VAR( const FT_Driver_ClassRec ) winfnt_driver_class; 156 157 158 FT_END_HEADER 159 160 161 #endif /* WINFNT_H_ */ 162 163 164 /* END */ 165