Home | History | Annotate | Download | only in cff
      1 /***************************************************************************/
      2 /*                                                                         */
      3 /*  cffobjs.h                                                              */
      4 /*                                                                         */
      5 /*    OpenType objects manager (specification).                            */
      6 /*                                                                         */
      7 /*  Copyright 1996-2004, 2006-2008, 2013 by                                */
      8 /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
      9 /*                                                                         */
     10 /*  This file is part of the FreeType project, and may only be used,       */
     11 /*  modified, and distributed under the terms of the FreeType project      */
     12 /*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
     13 /*  this file you indicate that you have read the license and              */
     14 /*  understand and accept it fully.                                        */
     15 /*                                                                         */
     16 /***************************************************************************/
     17 
     18 
     19 #ifndef __CFFOBJS_H__
     20 #define __CFFOBJS_H__
     21 
     22 
     23 #include "../../include/ft2build.h"
     24 #include "../../include/freetype/internal/ftobjs.h"
     25 #include "cfftypes.h"
     26 #include "../../include/freetype/internal/tttypes.h"
     27 #include "../../include/freetype/internal/services/svpscmap.h"
     28 #include "../../include/freetype/internal/pshints.h"
     29 
     30 
     31 FT_BEGIN_HEADER
     32 
     33 
     34   /*************************************************************************/
     35   /*                                                                       */
     36   /* <Type>                                                                */
     37   /*    CFF_Driver                                                         */
     38   /*                                                                       */
     39   /* <Description>                                                         */
     40   /*    A handle to an OpenType driver object.                             */
     41   /*                                                                       */
     42   typedef struct CFF_DriverRec_*  CFF_Driver;
     43 
     44   typedef TT_Face  CFF_Face;
     45 
     46 
     47   /*************************************************************************/
     48   /*                                                                       */
     49   /* <Type>                                                                */
     50   /*    CFF_Size                                                           */
     51   /*                                                                       */
     52   /* <Description>                                                         */
     53   /*    A handle to an OpenType size object.                               */
     54   /*                                                                       */
     55   typedef struct  CFF_SizeRec_
     56   {
     57     FT_SizeRec  root;
     58     FT_ULong    strike_index;    /* 0xFFFFFFFF to indicate invalid */
     59 
     60   } CFF_SizeRec, *CFF_Size;
     61 
     62 
     63   /*************************************************************************/
     64   /*                                                                       */
     65   /* <Type>                                                                */
     66   /*    CFF_GlyphSlot                                                      */
     67   /*                                                                       */
     68   /* <Description>                                                         */
     69   /*    A handle to an OpenType glyph slot object.                         */
     70   /*                                                                       */
     71   typedef struct  CFF_GlyphSlotRec_
     72   {
     73     FT_GlyphSlotRec  root;
     74 
     75     FT_Bool          hint;
     76     FT_Bool          scaled;
     77 
     78     FT_Fixed         x_scale;
     79     FT_Fixed         y_scale;
     80 
     81   } CFF_GlyphSlotRec, *CFF_GlyphSlot;
     82 
     83 
     84   /*************************************************************************/
     85   /*                                                                       */
     86   /* <Type>                                                                */
     87   /*    CFF_Internal                                                       */
     88   /*                                                                       */
     89   /* <Description>                                                         */
     90   /*    The interface to the `internal' field of `FT_Size'.                */
     91   /*                                                                       */
     92   typedef struct  CFF_InternalRec_
     93   {
     94     PSH_Globals  topfont;
     95     PSH_Globals  subfonts[CFF_MAX_CID_FONTS];
     96 
     97   } CFF_InternalRec, *CFF_Internal;
     98 
     99 
    100   /*************************************************************************/
    101   /*                                                                       */
    102   /* Subglyph transformation record.                                       */
    103   /*                                                                       */
    104   typedef struct  CFF_Transform_
    105   {
    106     FT_Fixed    xx, xy;     /* transformation matrix coefficients */
    107     FT_Fixed    yx, yy;
    108     FT_F26Dot6  ox, oy;     /* offsets        */
    109 
    110   } CFF_Transform;
    111 
    112 
    113   /***********************************************************************/
    114   /*                                                                     */
    115   /* CFF driver class.                                                   */
    116   /*                                                                     */
    117   typedef struct  CFF_DriverRec_
    118   {
    119     FT_DriverRec  root;
    120 
    121     FT_UInt  hinting_engine;
    122     FT_Bool  no_stem_darkening;
    123 
    124   } CFF_DriverRec;
    125 
    126 
    127   FT_LOCAL( FT_Error )
    128   cff_size_init( FT_Size  size );           /* CFF_Size */
    129 
    130   FT_LOCAL( void )
    131   cff_size_done( FT_Size  size );           /* CFF_Size */
    132 
    133   FT_LOCAL( FT_Error )
    134   cff_size_request( FT_Size          size,
    135                     FT_Size_Request  req );
    136 
    137 #ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS
    138 
    139   FT_LOCAL( FT_Error )
    140   cff_size_select( FT_Size   size,
    141                    FT_ULong  strike_index );
    142 
    143 #endif
    144 
    145   FT_LOCAL( void )
    146   cff_slot_done( FT_GlyphSlot  slot );
    147 
    148   FT_LOCAL( FT_Error )
    149   cff_slot_init( FT_GlyphSlot  slot );
    150 
    151 
    152   /*************************************************************************/
    153   /*                                                                       */
    154   /* Face functions                                                        */
    155   /*                                                                       */
    156   FT_LOCAL( FT_Error )
    157   cff_face_init( FT_Stream      stream,
    158                  FT_Face        face,           /* CFF_Face */
    159                  FT_Int         face_index,
    160                  FT_Int         num_params,
    161                  FT_Parameter*  params );
    162 
    163   FT_LOCAL( void )
    164   cff_face_done( FT_Face  face );               /* CFF_Face */
    165 
    166 
    167   /*************************************************************************/
    168   /*                                                                       */
    169   /* Driver functions                                                      */
    170   /*                                                                       */
    171   FT_LOCAL( FT_Error )
    172   cff_driver_init( FT_Module  module );         /* CFF_Driver */
    173 
    174   FT_LOCAL( void )
    175   cff_driver_done( FT_Module  module );         /* CFF_Driver */
    176 
    177 
    178 FT_END_HEADER
    179 
    180 #endif /* __CFFOBJS_H__ */
    181 
    182 
    183 /* END */
    184