Home | History | Annotate | Download | only in winfonts
      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