160f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson/***************************************************************************/
260f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson/*                                                                         */
360f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson/*  cfftypes.h                                                             */
460f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson/*                                                                         */
560f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson/*    Basic OpenType/CFF type definitions and interface (specification     */
660f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson/*    only).                                                               */
760f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson/*                                                                         */
860f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson/*  Copyright 1996-2003, 2006-2008, 2010-2011, 2013 by                     */
960f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
1060f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson/*                                                                         */
1160f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson/*  This file is part of the FreeType project, and may only be used,       */
1260f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson/*  modified, and distributed under the terms of the FreeType project      */
1360f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
1460f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson/*  this file you indicate that you have read the license and              */
1560f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson/*  understand and accept it fully.                                        */
1660f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson/*                                                                         */
1760f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson/***************************************************************************/
18a27a886892fe3ec5edbc63c0b58e0a988623011aRoboErik
19a27a886892fe3ec5edbc63c0b58e0a988623011aRoboErik
2098c8add7f42469d797bf77e145e5fd091e5539dfIsaac Katzenelson#ifndef __CFFTYPES_H__
2160f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson#define __CFFTYPES_H__
2260f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson
2360f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson
2460f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson#include "../../include/ft2build.h"
2560f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson#include "../../include/freetype/freetype.h"
2660f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson#include "../../include/freetype/t1tables.h"
270ef732f240516f9f8b8add982f82244e01ec509bIsaac Katzenelson#include "../../include/freetype/internal/ftserv.h"
284afba187f8990ae2b3afaf8fcdb6039f231f4914James Kung#include "../../include/freetype/internal/services/svpscmap.h"
2960f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson#include "../../include/freetype/internal/pshints.h"
3060f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson
314afba187f8990ae2b3afaf8fcdb6039f231f4914James Kung
324afba187f8990ae2b3afaf8fcdb6039f231f4914James KungFT_BEGIN_HEADER
336bcafcf4f28c2d1053547694bd60b3dd9c7fbaa1Isaac Katzenelson
3460f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson
3547f6cc6909665e4f6f8d85f29bfd588688463c66Isaac Katzenelson  /*************************************************************************/
3647f6cc6909665e4f6f8d85f29bfd588688463c66Isaac Katzenelson  /*                                                                       */
3794a1f1a1020f0e06df42ffe6edc315106cb45ecdSam Blitzstein  /* <Struct>                                                              */
3894a1f1a1020f0e06df42ffe6edc315106cb45ecdSam Blitzstein  /*    CFF_IndexRec                                                       */
3994a1f1a1020f0e06df42ffe6edc315106cb45ecdSam Blitzstein  /*                                                                       */
4047f6cc6909665e4f6f8d85f29bfd588688463c66Isaac Katzenelson  /* <Description>                                                         */
4160f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson  /*    A structure used to model a CFF Index table.                       */
4260f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson  /*                                                                       */
4360f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson  /* <Fields>                                                              */
4460f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson  /*    stream      :: The source input stream.                            */
4560f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson  /*                                                                       */
4660f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson  /*    start       :: The position of the first index byte in the         */
4760f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson  /*                   input stream.                                       */
4860f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson  /*                                                                       */
4960f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson  /*    count       :: The number of elements in the index.                */
5060f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson  /*                                                                       */
514afba187f8990ae2b3afaf8fcdb6039f231f4914James Kung  /*    off_size    :: The size in bytes of object offsets in index.       */
524afba187f8990ae2b3afaf8fcdb6039f231f4914James Kung  /*                                                                       */
534afba187f8990ae2b3afaf8fcdb6039f231f4914James Kung  /*    data_offset :: The position of first data byte in the index's      */
544afba187f8990ae2b3afaf8fcdb6039f231f4914James Kung  /*                   bytes.                                              */
554afba187f8990ae2b3afaf8fcdb6039f231f4914James Kung  /*                                                                       */
564afba187f8990ae2b3afaf8fcdb6039f231f4914James Kung  /*    data_size   :: The size of the data table in this index.           */
574afba187f8990ae2b3afaf8fcdb6039f231f4914James Kung  /*                                                                       */
584afba187f8990ae2b3afaf8fcdb6039f231f4914James Kung  /*    offsets     :: A table of element offsets in the index.  Must be   */
594afba187f8990ae2b3afaf8fcdb6039f231f4914James Kung  /*                   loaded explicitly.                                  */
604afba187f8990ae2b3afaf8fcdb6039f231f4914James Kung  /*                                                                       */
614afba187f8990ae2b3afaf8fcdb6039f231f4914James Kung  /*    bytes       :: If the index is loaded in memory, its bytes.        */
624afba187f8990ae2b3afaf8fcdb6039f231f4914James Kung  /*                                                                       */
634afba187f8990ae2b3afaf8fcdb6039f231f4914James Kung  typedef struct  CFF_IndexRec_
644afba187f8990ae2b3afaf8fcdb6039f231f4914James Kung  {
654afba187f8990ae2b3afaf8fcdb6039f231f4914James Kung    FT_Stream  stream;
664afba187f8990ae2b3afaf8fcdb6039f231f4914James Kung    FT_ULong   start;
674afba187f8990ae2b3afaf8fcdb6039f231f4914James Kung    FT_UInt    count;
6860f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson    FT_Byte    off_size;
6960f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson    FT_ULong   data_offset;
7060f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson    FT_ULong   data_size;
7160f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson
7260f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson    FT_ULong*  offsets;
7360f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson    FT_Byte*   bytes;
7460f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson
7547f6cc6909665e4f6f8d85f29bfd588688463c66Isaac Katzenelson  } CFF_IndexRec, *CFF_Index;
7660f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson
7794a1f1a1020f0e06df42ffe6edc315106cb45ecdSam Blitzstein
7860f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson  typedef struct  CFF_EncodingRec_
7960f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson  {
8060f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson    FT_UInt     format;
8160f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson    FT_ULong    offset;
8260f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson
8360f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson    FT_UInt     count;
8460f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson    FT_UShort   sids [256];  /* avoid dynamic allocations */
8594a1f1a1020f0e06df42ffe6edc315106cb45ecdSam Blitzstein    FT_UShort   codes[256];
8694a1f1a1020f0e06df42ffe6edc315106cb45ecdSam Blitzstein
8760f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson  } CFF_EncodingRec, *CFF_Encoding;
88a27a886892fe3ec5edbc63c0b58e0a988623011aRoboErik
89a27a886892fe3ec5edbc63c0b58e0a988623011aRoboErik
9098c8add7f42469d797bf77e145e5fd091e5539dfIsaac Katzenelson  typedef struct  CFF_CharsetRec_
916bcafcf4f28c2d1053547694bd60b3dd9c7fbaa1Isaac Katzenelson  {
9260f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson
9360f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson    FT_UInt     format;
9460f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson    FT_ULong    offset;
9547f6cc6909665e4f6f8d85f29bfd588688463c66Isaac Katzenelson
9647f6cc6909665e4f6f8d85f29bfd588688463c66Isaac Katzenelson    FT_UShort*  sids;
9747f6cc6909665e4f6f8d85f29bfd588688463c66Isaac Katzenelson    FT_UShort*  cids;       /* the inverse mapping of `sids'; only needed */
9847f6cc6909665e4f6f8d85f29bfd588688463c66Isaac Katzenelson                            /* for CID-keyed fonts                        */
9947f6cc6909665e4f6f8d85f29bfd588688463c66Isaac Katzenelson    FT_UInt     max_cid;
10047f6cc6909665e4f6f8d85f29bfd588688463c66Isaac Katzenelson    FT_UInt     num_glyphs;
10147f6cc6909665e4f6f8d85f29bfd588688463c66Isaac Katzenelson
10247f6cc6909665e4f6f8d85f29bfd588688463c66Isaac Katzenelson  } CFF_CharsetRec, *CFF_Charset;
10347f6cc6909665e4f6f8d85f29bfd588688463c66Isaac Katzenelson
10447f6cc6909665e4f6f8d85f29bfd588688463c66Isaac Katzenelson
10547f6cc6909665e4f6f8d85f29bfd588688463c66Isaac Katzenelson  typedef struct  CFF_FontRecDictRec_
10647f6cc6909665e4f6f8d85f29bfd588688463c66Isaac Katzenelson  {
10747f6cc6909665e4f6f8d85f29bfd588688463c66Isaac Katzenelson    FT_UInt    version;
10860f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson    FT_UInt    notice;
10947f6cc6909665e4f6f8d85f29bfd588688463c66Isaac Katzenelson    FT_UInt    copyright;
11047f6cc6909665e4f6f8d85f29bfd588688463c66Isaac Katzenelson    FT_UInt    full_name;
11147f6cc6909665e4f6f8d85f29bfd588688463c66Isaac Katzenelson    FT_UInt    family_name;
11247f6cc6909665e4f6f8d85f29bfd588688463c66Isaac Katzenelson    FT_UInt    weight;
11347f6cc6909665e4f6f8d85f29bfd588688463c66Isaac Katzenelson    FT_Bool    is_fixed_pitch;
11447f6cc6909665e4f6f8d85f29bfd588688463c66Isaac Katzenelson    FT_Fixed   italic_angle;
11547f6cc6909665e4f6f8d85f29bfd588688463c66Isaac Katzenelson    FT_Fixed   underline_position;
11647f6cc6909665e4f6f8d85f29bfd588688463c66Isaac Katzenelson    FT_Fixed   underline_thickness;
11760f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson    FT_Int     paint_type;
11860f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson    FT_Int     charstring_type;
11960f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson    FT_Matrix  font_matrix;
12060f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson    FT_Bool    has_font_matrix;
12147f6cc6909665e4f6f8d85f29bfd588688463c66Isaac Katzenelson    FT_ULong   units_per_em;  /* temporarily used as scaling value also */
12247f6cc6909665e4f6f8d85f29bfd588688463c66Isaac Katzenelson    FT_Vector  font_offset;
12347f6cc6909665e4f6f8d85f29bfd588688463c66Isaac Katzenelson    FT_ULong   unique_id;
12447f6cc6909665e4f6f8d85f29bfd588688463c66Isaac Katzenelson    FT_BBox    font_bbox;
12547f6cc6909665e4f6f8d85f29bfd588688463c66Isaac Katzenelson    FT_Pos     stroke_width;
12647f6cc6909665e4f6f8d85f29bfd588688463c66Isaac Katzenelson    FT_ULong   charset_offset;
1270ef732f240516f9f8b8add982f82244e01ec509bIsaac Katzenelson    FT_ULong   encoding_offset;
1280ef732f240516f9f8b8add982f82244e01ec509bIsaac Katzenelson    FT_ULong   charstrings_offset;
1290ef732f240516f9f8b8add982f82244e01ec509bIsaac Katzenelson    FT_ULong   private_offset;
1300ef732f240516f9f8b8add982f82244e01ec509bIsaac Katzenelson    FT_ULong   private_size;
1310ef732f240516f9f8b8add982f82244e01ec509bIsaac Katzenelson    FT_Long    synthetic_base;
132ea032a06284975291cfe747c90e57bdf413c3776Andrew Flynn    FT_UInt    embedded_postscript;
1336bcafcf4f28c2d1053547694bd60b3dd9c7fbaa1Isaac Katzenelson
134ea032a06284975291cfe747c90e57bdf413c3776Andrew Flynn    /* these should only be used for the top-level font dictionary */
135ea032a06284975291cfe747c90e57bdf413c3776Andrew Flynn    FT_UInt    cid_registry;
136ea032a06284975291cfe747c90e57bdf413c3776Andrew Flynn    FT_UInt    cid_ordering;
137ea032a06284975291cfe747c90e57bdf413c3776Andrew Flynn    FT_Long    cid_supplement;
138ea032a06284975291cfe747c90e57bdf413c3776Andrew Flynn
139ea032a06284975291cfe747c90e57bdf413c3776Andrew Flynn    FT_Long    cid_font_version;
140ea032a06284975291cfe747c90e57bdf413c3776Andrew Flynn    FT_Long    cid_font_revision;
141ea032a06284975291cfe747c90e57bdf413c3776Andrew Flynn    FT_Long    cid_font_type;
142ea032a06284975291cfe747c90e57bdf413c3776Andrew Flynn    FT_ULong   cid_count;
143ea032a06284975291cfe747c90e57bdf413c3776Andrew Flynn    FT_ULong   cid_uid_base;
144ea032a06284975291cfe747c90e57bdf413c3776Andrew Flynn    FT_ULong   cid_fd_array_offset;
14553aad911d4d901d19afba320cc626da2dab68025Isaac Katzenelson    FT_ULong   cid_fd_select_offset;
14653aad911d4d901d19afba320cc626da2dab68025Isaac Katzenelson    FT_UInt    cid_font_name;
14753aad911d4d901d19afba320cc626da2dab68025Isaac Katzenelson
14815b4dcc873336ceb35fa335410b467aed3a834eaRoboErik  } CFF_FontRecDictRec, *CFF_FontRecDict;
14953aad911d4d901d19afba320cc626da2dab68025Isaac Katzenelson
15053aad911d4d901d19afba320cc626da2dab68025Isaac Katzenelson
15160f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson  typedef struct  CFF_PrivateRec_
15260f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson  {
15360f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson    FT_Byte   num_blue_values;
15460f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson    FT_Byte   num_other_blues;
15560f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson    FT_Byte   num_family_blues;
15694a1f1a1020f0e06df42ffe6edc315106cb45ecdSam Blitzstein    FT_Byte   num_family_other_blues;
1577ef2981ab9ad32a6818b36cefbd39f070ba708edIsaac Katzenelson
15894a1f1a1020f0e06df42ffe6edc315106cb45ecdSam Blitzstein    FT_Pos    blue_values[14];
15994a1f1a1020f0e06df42ffe6edc315106cb45ecdSam Blitzstein    FT_Pos    other_blues[10];
16081d45a9c5f53a44aa2e2bfb22ba99e8e8d34dc00Michael Chan    FT_Pos    family_blues[14];
16160f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson    FT_Pos    family_other_blues[10];
16260f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson
16360f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson    FT_Fixed  blue_scale;
16460f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson    FT_Pos    blue_shift;
16560f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson    FT_Pos    blue_fuzz;
16660f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson    FT_Pos    standard_width;
16760f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson    FT_Pos    standard_height;
16860f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson
16960f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson    FT_Byte   num_snap_widths;
17060f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson    FT_Byte   num_snap_heights;
17160f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson    FT_Pos    snap_widths[13];
17260f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson    FT_Pos    snap_heights[13];
17360f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson    FT_Bool   force_bold;
17460f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson    FT_Fixed  force_bold_threshold;
17560f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson    FT_Int    lenIV;
17660f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson    FT_Int    language_group;
17760f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson    FT_Fixed  expansion_factor;
17860f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson    FT_Long   initial_random_seed;
17960f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson    FT_ULong  local_subrs_offset;
18060f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson    FT_Pos    default_width;
18160f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson    FT_Pos    nominal_width;
18260f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson
18360f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson  } CFF_PrivateRec, *CFF_Private;
18460f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson
1854afba187f8990ae2b3afaf8fcdb6039f231f4914James Kung
1864afba187f8990ae2b3afaf8fcdb6039f231f4914James Kung  typedef struct  CFF_FDSelectRec_
18760f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson  {
18860f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson    FT_Byte   format;
18960f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson    FT_UInt   range_count;
19060f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson
19160f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson    /* that's the table, taken from the file `as is' */
1924afba187f8990ae2b3afaf8fcdb6039f231f4914James Kung    FT_Byte*  data;
19360f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson    FT_UInt   data_size;
19460f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson
19560f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson    /* small cache for format 3 only */
19660f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson    FT_UInt   cache_first;
19760f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson    FT_UInt   cache_count;
19860f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson    FT_Byte   cache_fd;
19960f01c23282284e691fcd24918ea67087540f95dIsaac Katzenelson
200  } CFF_FDSelectRec, *CFF_FDSelect;
201
202
203  /* A SubFont packs a font dict and a private dict together.  They are */
204  /* needed to support CID-keyed CFF fonts.                             */
205  typedef struct  CFF_SubFontRec_
206  {
207    CFF_FontRecDictRec  font_dict;
208    CFF_PrivateRec      private_dict;
209
210    CFF_IndexRec        local_subrs_index;
211    FT_Byte**           local_subrs; /* array of pointers into Local Subrs INDEX data */
212
213  } CFF_SubFontRec, *CFF_SubFont;
214
215
216#define CFF_MAX_CID_FONTS  256
217
218
219  typedef struct  CFF_FontRec_
220  {
221    FT_Stream        stream;
222    FT_Memory        memory;
223    FT_UInt          num_faces;
224    FT_UInt          num_glyphs;
225
226    FT_Byte          version_major;
227    FT_Byte          version_minor;
228    FT_Byte          header_size;
229    FT_Byte          absolute_offsize;
230
231
232    CFF_IndexRec     name_index;
233    CFF_IndexRec     top_dict_index;
234    CFF_IndexRec     global_subrs_index;
235
236    CFF_EncodingRec  encoding;
237    CFF_CharsetRec   charset;
238
239    CFF_IndexRec     charstrings_index;
240    CFF_IndexRec     font_dict_index;
241    CFF_IndexRec     private_index;
242    CFF_IndexRec     local_subrs_index;
243
244    FT_String*       font_name;
245
246    /* array of pointers into Global Subrs INDEX data */
247    FT_Byte**        global_subrs;
248
249    /* array of pointers into String INDEX data stored at string_pool */
250    FT_UInt          num_strings;
251    FT_Byte**        strings;
252    FT_Byte*         string_pool;
253
254    CFF_SubFontRec   top_font;
255    FT_UInt          num_subfonts;
256    CFF_SubFont      subfonts[CFF_MAX_CID_FONTS];
257
258    CFF_FDSelectRec  fd_select;
259
260    /* interface to PostScript hinter */
261    PSHinter_Service  pshinter;
262
263    /* interface to Postscript Names service */
264    FT_Service_PsCMaps  psnames;
265
266    /* since version 2.3.0 */
267    PS_FontInfoRec*  font_info;   /* font info dictionary */
268
269    /* since version 2.3.6 */
270    FT_String*       registry;
271    FT_String*       ordering;
272
273    /* since version 2.4.12 */
274    FT_Generic       cf2_instance;
275
276  } CFF_FontRec, *CFF_Font;
277
278
279FT_END_HEADER
280
281#endif /* __CFFTYPES_H__ */
282
283
284/* END */
285