Hash :
ac250b22
        
        Author :
  
        
        Date :
2007-01-13T14:01:36
        
      
Add FT_Get_PS_Font_Info interface to CFF driver. * src/cff/cfftypes.h: Include FT_TYPE1_TABLES_H. (CFF_FontRec): Add `font_info' field. * src/cff/cffload.c: Include FT_TYPE1_TABLES_H. (cff_font_done): Free font->font_info if necessary. * src/cff/cffdrvr.c (cff_ps_get_font_info): New function. (cff_service_ps_info): Register cff_ps_get_font_info.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270
/***************************************************************************/
/*                                                                         */
/*  cfftypes.h                                                             */
/*                                                                         */
/*    Basic OpenType/CFF type definitions and interface (specification     */
/*    only).                                                               */
/*                                                                         */
/*  Copyright 1996-2001, 2002, 2003, 2006, 2007 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 FT_FREETYPE_H
#include FT_TYPE1_TABLES_H
FT_BEGIN_HEADER
  /*************************************************************************/
  /*                                                                       */
  /* <Struct>                                                              */
  /*    CFF_IndexRec                                                       */
  /*                                                                       */
  /* <Description>                                                         */
  /*    A structure used to model a CFF Index table.                       */
  /*                                                                       */
  /* <Fields>                                                              */
  /*    stream      :: The source input stream.                            */
  /*                                                                       */
  /*    start       :: The position of the first index byte in the         */
  /*                   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.                                              */
  /*                                                                       */
  /*    data_size   :: The size of the data table in this index.           */
  /*                                                                       */
  /*    offsets     :: A table of element offsets in the index.  Must be   */
  /*                   loaded explicitly.                                  */
  /*                                                                       */
  /*    bytes       :: If the index is loaded in memory, its bytes.        */
  /*                                                                       */
  typedef struct  CFF_IndexRec_
  {
    FT_Stream  stream;
    FT_ULong   start;
    FT_UInt    count;
    FT_Byte    off_size;
    FT_ULong   data_offset;
    FT_ULong   data_size;
    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;
    FT_UShort*  cids;       /* the inverse mapping of `sids'; only needed */
                            /* for CID-keyed fonts                        */
    FT_UInt     max_cid;
    FT_UInt     num_glyphs;
  } 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_Fixed   underline_position;
    FT_Fixed   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;
    /* 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_ULong   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  32
  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;
    /* since version 2.3.0 */
    PS_FontInfoRec*  font_info;   /* font info dictionary */
  } CFF_FontRec, *CFF_Font;
FT_END_HEADER
#endif /* __CFFTYPES_H__ */
/* END */