www.pudn.com > freetype.rar > cfftypes.h


/***************************************************************************/ 
/*                                                                         */ 
/*  cfftypes.h                                                             */ 
/*                                                                         */ 
/*    Basic OpenType/CFF type definitions and interface (specification     */ 
/*    only).                                                               */ 
/*                                                                         */ 
/*  Copyright 1996-2001, 2002 by                                           */ 
/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */ 
/*                                                                         */ 
/*  This file is part of the FreeType project, and may only be used,       */ 
/*  modified, and distributed under the terms of the FreeType project      */ 
/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */ 
/*  this file you indicate that you have read the license and              */ 
/*  understand and accept it fully.                                        */ 
/*                                                                         */ 
/***************************************************************************/ 
 
 
#ifndef __CFFTYPES_H__ 
#define __CFFTYPES_H__ 
 
 
#include "ft2build.h" 
#include "freetype/freetype.h" 
 
 
FT_BEGIN_HEADER 
 
 
  /*************************************************************************/ 
  /*                                                                       */ 
  /*                                                               */ 
  /*    CFF_IndexRec                                                       */ 
  /*                                                                       */ 
  /*                                                          */ 
  /*    A structure used to model a CFF Index table.                       */ 
  /*                                                                       */ 
  /*                                                               */ 
  /*    stream      :: The source input stream.                            */ 
  /*                                                                       */ 
  /*    count       :: The number of elements in the index.                */ 
  /*                                                                       */ 
  /*    off_size    :: The size in bytes of object offsets in index.       */ 
  /*                                                                       */ 
  /*    data_offset :: The position of first data byte in the index's      */ 
  /*                   bytes.                                              */ 
  /*                                                                       */ 
  /*    offsets     :: A table of element offsets in the index.            */ 
  /*                                                                       */ 
  /*    bytes       :: If the index is loaded in memory, its bytes.        */ 
  /*                                                                       */ 
  typedef struct  CFF_IndexRec_ 
  { 
    FT_Stream  stream; 
    FT_UInt    count; 
    FT_Byte    off_size; 
    FT_ULong   data_offset; 
 
    FT_ULong*  offsets; 
    FT_Byte*   bytes; 
 
  } CFF_IndexRec, *CFF_Index; 
 
 
  typedef struct  CFF_EncodingRec_ 
  { 
    FT_UInt     format; 
    FT_ULong    offset; 
 
    FT_UInt     count; 
    FT_UShort   sids [256];  /* avoid dynamic allocations */ 
    FT_UShort   codes[256]; 
 
  } CFF_EncodingRec, *CFF_Encoding; 
 
 
  typedef struct  CFF_CharsetRec_ 
  { 
 
    FT_UInt     format; 
    FT_ULong    offset; 
 
    FT_UShort*  sids; 
 
  } CFF_CharsetRec, *CFF_Charset; 
 
 
  typedef struct  CFF_FontRecDictRec_ 
  { 
    FT_UInt    version; 
    FT_UInt    notice; 
    FT_UInt    copyright; 
    FT_UInt    full_name; 
    FT_UInt    family_name; 
    FT_UInt    weight; 
    FT_Bool    is_fixed_pitch; 
    FT_Fixed   italic_angle; 
    FT_Pos     underline_position; 
    FT_Pos     underline_thickness; 
    FT_Int     paint_type; 
    FT_Int     charstring_type; 
    FT_Matrix  font_matrix; 
    FT_UShort  units_per_em; 
    FT_Vector  font_offset; 
    FT_ULong   unique_id; 
    FT_BBox    font_bbox; 
    FT_Pos     stroke_width; 
    FT_ULong   charset_offset; 
    FT_ULong   encoding_offset; 
    FT_ULong   charstrings_offset; 
    FT_ULong   private_offset; 
    FT_ULong   private_size; 
    FT_Long    synthetic_base; 
    FT_UInt    embedded_postscript; 
    FT_UInt    base_font_name; 
    FT_UInt    postscript; 
 
    /* these should only be used for the top-level font dictionary */ 
    FT_UInt    cid_registry; 
    FT_UInt    cid_ordering; 
    FT_ULong   cid_supplement; 
 
    FT_Long    cid_font_version; 
    FT_Long    cid_font_revision; 
    FT_Long    cid_font_type; 
    FT_Long    cid_count; 
    FT_ULong   cid_uid_base; 
    FT_ULong   cid_fd_array_offset; 
    FT_ULong   cid_fd_select_offset; 
    FT_UInt    cid_font_name; 
 
  } CFF_FontRecDictRec, *CFF_FontRecDict; 
 
 
  typedef struct  CFF_PrivateRec_ 
  { 
    FT_Byte   num_blue_values; 
    FT_Byte   num_other_blues; 
    FT_Byte   num_family_blues; 
    FT_Byte   num_family_other_blues; 
 
    FT_Pos    blue_values[14]; 
    FT_Pos    other_blues[10]; 
    FT_Pos    family_blues[14]; 
    FT_Pos    family_other_blues[10]; 
 
    FT_Fixed  blue_scale; 
    FT_Pos    blue_shift; 
    FT_Pos    blue_fuzz; 
    FT_Pos    standard_width; 
    FT_Pos    standard_height; 
 
    FT_Byte   num_snap_widths; 
    FT_Byte   num_snap_heights; 
    FT_Pos    snap_widths[13]; 
    FT_Pos    snap_heights[13]; 
    FT_Bool   force_bold; 
    FT_Fixed  force_bold_threshold; 
    FT_Int    lenIV; 
    FT_Int    language_group; 
    FT_Fixed  expansion_factor; 
    FT_Long   initial_random_seed; 
    FT_ULong  local_subrs_offset; 
    FT_Pos    default_width; 
    FT_Pos    nominal_width; 
 
  } CFF_PrivateRec, *CFF_Private; 
 
 
  typedef struct  CFF_FDSelectRec_ 
  { 
    FT_Byte   format; 
    FT_UInt   range_count; 
 
    /* that's the table, taken from the file `as is' */ 
    FT_Byte*  data; 
    FT_UInt   data_size; 
 
    /* small cache for format 3 only */ 
    FT_UInt   cache_first; 
    FT_UInt   cache_count; 
    FT_Byte   cache_fd; 
 
  } CFF_FDSelectRec, *CFF_FDSelect; 
 
 
  /* A SubFont packs a font dict and a private dict together.  They are */ 
  /* needed to support CID-keyed CFF fonts.                             */ 
  typedef struct  CFF_SubFontRec_ 
  { 
    CFF_FontRecDictRec  font_dict; 
    CFF_PrivateRec      private_dict; 
 
    CFF_IndexRec        local_subrs_index; 
    FT_UInt             num_local_subrs; 
    FT_Byte**           local_subrs; 
 
  } CFF_SubFontRec, *CFF_SubFont; 
 
 
  /* maximum number of sub-fonts in a CID-keyed file */ 
#define CFF_MAX_CID_FONTS  16 
 
 
  typedef struct  CFF_FontRec_ 
  { 
    FT_Stream        stream; 
    FT_Memory        memory; 
    FT_UInt          num_faces; 
    FT_UInt          num_glyphs; 
 
    FT_Byte          version_major; 
    FT_Byte          version_minor; 
    FT_Byte          header_size; 
    FT_Byte          absolute_offsize; 
 
 
    CFF_IndexRec     name_index; 
    CFF_IndexRec     top_dict_index; 
    CFF_IndexRec     string_index; 
    CFF_IndexRec     global_subrs_index; 
 
    CFF_EncodingRec  encoding; 
    CFF_CharsetRec   charset; 
 
    CFF_IndexRec     charstrings_index; 
    CFF_IndexRec     font_dict_index; 
    CFF_IndexRec     private_index; 
    CFF_IndexRec     local_subrs_index; 
 
    FT_String*       font_name; 
    FT_UInt          num_global_subrs; 
    FT_Byte**        global_subrs; 
 
    CFF_SubFontRec   top_font; 
    FT_UInt          num_subfonts; 
    CFF_SubFont      subfonts[CFF_MAX_CID_FONTS]; 
 
    CFF_FDSelectRec  fd_select; 
 
    /* interface to PostScript hinter */ 
    void*            pshinter; 
 
    /* interface to Postscript Names service */ 
    void*            psnames; 
 
  } CFF_FontRec, *CFF_Font; 
 
 
FT_END_HEADER 
 
#endif /* __CFFTYPES_H__ */ 
 
 
/* END */