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


/***************************************************************************/ 
/*                                                                         */ 
/*  pshints.h                                                              */ 
/*                                                                         */ 
/*    Interface to Postscript-specific (Type 1 and Type 2) hints           */ 
/*    recorders (specification only).  These are used to support native    */ 
/*    T1/T2 hints in the "type1", "cid" and "cff" font drivers.            */ 
/*                                                                         */ 
/*  Copyright 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 __PSHINTS_H__ 
#define __PSHINTS_H__ 
 
 
#include "ft2build.h" 
#include "freetype/freetype.h" 
#include "freetype/t1tables.h" 
 
 
FT_BEGIN_HEADER 
 
 
  /*************************************************************************/ 
  /*************************************************************************/ 
  /*****                                                               *****/ 
  /*****               INTERNAL REPRESENTATION OF GLOBALS              *****/ 
  /*****                                                               *****/ 
  /*************************************************************************/ 
  /*************************************************************************/ 
 
  typedef struct PSH_GlobalsRec_*  PSH_Globals; 
 
  typedef FT_Error 
  (*PSH_Globals_NewFunc)( FT_Memory     memory, 
                          T1_Private*   private_dict, 
                          PSH_Globals*  aglobals ); 
 
  typedef FT_Error 
  (*PSH_Globals_SetScaleFunc)( PSH_Globals  globals, 
                               FT_Fixed     x_scale, 
                               FT_Fixed     y_scale, 
                               FT_Fixed     x_delta, 
                               FT_Fixed     y_delta ); 
 
  typedef void 
  (*PSH_Globals_DestroyFunc)( PSH_Globals  globals ); 
 
 
  typedef struct  PSH_Globals_FuncsRec_ 
  { 
    PSH_Globals_NewFunc       create; 
    PSH_Globals_SetScaleFunc  set_scale; 
    PSH_Globals_DestroyFunc   destroy; 
 
  } PSH_Globals_FuncsRec, *PSH_Globals_Funcs; 
 
 
  /*************************************************************************/ 
  /*************************************************************************/ 
  /*****                                                               *****/ 
  /*****                  PUBLIC TYPE 1 HINTS RECORDER                 *****/ 
  /*****                                                               *****/ 
  /*************************************************************************/ 
  /*************************************************************************/ 
 
  /*************************************************************************/ 
  /*                                                                       */ 
  /* @type:                                                                */ 
  /*    T1_Hints                                                           */ 
  /*                                                                       */ 
  /* @description:                                                         */ 
  /*    This is a handle to an opaque structure used to record glyph hints */ 
  /*    from a Type 1 character glyph character string.                    */ 
  /*                                                                       */ 
  /*    The methods used to operate on this object are defined by the      */ 
  /*    @T1_Hints_FuncsRec structure.  Recording glyph hints is normally   */ 
  /*    achieved through the following scheme:                             */ 
  /*                                                                       */ 
  /*    - Open a new hint recording session by calling the "open" method.  */ 
  /*      This will dmrewind the recorder and prepare it for new input.      */ 
  /*                                                                       */ 
  /*    - For each hint found in the glyph charstring, call the            */ 
  /*      corresponding method ("stem", "stem3", or "reset").  Note that   */ 
  /*      these functions do not return an error code.                     */ 
  /*                                                                       */ 
  /*    - Close the recording session by calling the "close" method.  It   */ 
  /*      will return an error code if the hints were invalid or something */ 
  /*      strange happened (e.g. memory shortage).                         */ 
  /*                                                                       */ 
  /*    The hints accumulated in the object can later be used by the       */ 
  /*    PostScript hinter.                                                 */ 
  /*                                                                       */ 
  typedef struct T1_HintsRec_*  T1_Hints; 
 
 
  /*************************************************************************/ 
  /*                                                                       */ 
  /* @type:                                                                */ 
  /*    T1_Hints_Funcs                                                     */ 
  /*                                                                       */ 
  /* @description:                                                         */ 
  /*    A pointer to the @T1_Hints_FuncsRec structure that defines the     */ 
  /*    API of a given @T1_Hints object.                                   */ 
  /*                                                                       */ 
  typedef const struct T1_Hints_FuncsRec_*  T1_Hints_Funcs; 
 
 
  /*************************************************************************/ 
  /*                                                                       */ 
  /* @functype:                                                            */ 
  /*    T1_Hints_OpenFunc                                                  */ 
  /*                                                                       */ 
  /* @description:                                                         */ 
  /*    A method of the @T1_Hints class used to prepare it for a new       */ 
  /*    Type 1 hints recording session.                                    */ 
  /*                                                                       */ 
  /* @input:                                                               */ 
  /*    hints :: A handle to the Type 1 hints recorder.                    */ 
  /*                                                                       */ 
  /* @note:                                                                */ 
  /*    You should always call the @T1_Hints_CloseFunc method in order to  */ 
  /*    close an opened recording session.                                 */ 
  /*                                                                       */ 
  typedef void 
  (*T1_Hints_OpenFunc)( T1_Hints  hints ); 
 
 
  /*************************************************************************/ 
  /*                                                                       */ 
  /* @functype:                                                            */ 
  /*    T1_Hints_SetStemFunc                                               */ 
  /*                                                                       */ 
  /* @description:                                                         */ 
  /*    A method of the @T1_Hints class used to record a new horizontal or */ 
  /*    vertical stem.  This corresponds to the Type 1 "hstem" and "vstem" */ 
  /*    operators.                                                         */ 
  /*                                                                       */ 
  /* @input:                                                               */ 
  /*    hints     :: A handle to the Type 1 hints recorder.                */ 
  /*                                                                       */ 
  /*    dimension :: 0 for horizontal stems (hstem), 1 for vertical ones   */ 
  /*                 (vstem).                                              */ 
  /*                                                                       */ 
  /*    coords    :: Array of 2 integers, used as (position,length) stem   */ 
  /*                 descriptor.                                           */ 
  /*                                                                       */ 
  /* @note:                                                                */ 
  /*    Use vertical coordinates (y) for horizontal stems (dim=0).  Use    */ 
  /*    horizontal coordinates (x) for vertical stems (dim=1).             */ 
  /*                                                                       */ 
  /*    "coords[0]" is the absolute stem position (lowest coordinate);     */ 
  /*    "coords[1]" is the length.                                         */ 
  /*                                                                       */ 
  /*    The length can be negative, in which case it must be either -20 or */ 
  /*    -21.  It will be interpreted as a "ghost" stem, according to       */ 
  /*    Type 1 specification.                                              */ 
  /*                                                                       */ 
  /*    If the length is -21 (corresponding to a bottom ghost stem), then  */ 
  /*    the real stem position is "coords[0]+coords[1]".                   */ 
  /*                                                                       */ 
  typedef void 
  (*T1_Hints_SetStemFunc)( T1_Hints  hints, 
                           FT_UInt   dimension, 
                           FT_Long*  coords ); 
 
 
  /*************************************************************************/ 
  /*                                                                       */ 
  /* @functype:                                                            */ 
  /*    T1_Hints_SetStem3Func                                              */ 
  /*                                                                       */ 
  /* @description:                                                         */ 
  /*    A method of the @T1_Hints class used to record three               */ 
  /*    counter-controlled horizontal or vertical stems at once.           */ 
  /*                                                                       */ 
  /* @input:                                                               */ 
  /*    hints     :: A handle to the Type 1 hints recorder.                */ 
  /*                                                                       */ 
  /*    dimension :: 0 for horizontal stems, 1 for vertical ones.          */ 
  /*                                                                       */ 
  /*    coords    :: An array of 6 integers, holding 3 (position,length)   */ 
  /*                 pairs for the counter-controlled stems.               */ 
  /*                                                                       */ 
  /* @note:                                                                */ 
  /*    Use vertical coordinates (y) for horizontal stems (dim=0).  Use    */ 
  /*    horizontal coordinates (x) for vertical stems (dim=1).             */ 
  /*                                                                       */ 
  /*    The lengths cannot be negative (ghost stems are never              */ 
  /*    counter-controlled).                                               */ 
  /*                                                                       */ 
  typedef void 
  (*T1_Hints_SetStem3Func)( T1_Hints  hints, 
                            FT_UInt   dimension, 
                            FT_Long*  coords ); 
 
 
  /*************************************************************************/ 
  /*                                                                       */ 
  /* @functype:                                                            */ 
  /*    T1_Hints_ResetFunc                                                 */ 
  /*                                                                       */ 
  /* @description:                                                         */ 
  /*    A method of the @T1_Hints class used to reset the stems hints in a */ 
  /*    recording session.                                                 */ 
  /*                                                                       */ 
  /* @input:                                                               */ 
  /*    hints     :: A handle to the Type 1 hints recorder.                */ 
  /*                                                                       */ 
  /*    end_point :: The index of the last point in the input glyph in     */ 
  /*                 which the previously defined hints apply.             */ 
  /*                                                                       */ 
  typedef void 
  (*T1_Hints_ResetFunc)( T1_Hints  hints, 
                         FT_UInt   end_point ); 
 
 
  /*************************************************************************/ 
  /*                                                                       */ 
  /* @functype:                                                            */ 
  /*    T1_Hints_CloseFunc                                                 */ 
  /*                                                                       */ 
  /* @description:                                                         */ 
  /*    A method of the @T1_Hints class used to close a hint recording     */ 
  /*    session.                                                           */ 
  /*                                                                       */ 
  /* @input:                                                               */ 
  /*    hints     :: A handle to the Type 1 hints recorder.                */ 
  /*                                                                       */ 
  /*    end_point :: The index of the last point in the input glyph.       */ 
  /*                                                                       */ 
  /* @return:                                                              */ 
  /*    FreeType error code.  0 means success.                             */ 
  /*                                                                       */ 
  /* @note:                                                                */ 
  /*    The error code will be set to indicate that an error occured       */ 
  /*    during the recording session.                                      */ 
  /*                                                                       */ 
  typedef FT_Error 
  (*T1_Hints_CloseFunc)( T1_Hints  hints, 
                         FT_UInt   end_point ); 
 
 
  /*************************************************************************/ 
  /*                                                                       */ 
  /* @functype:                                                            */ 
  /*    T1_Hints_ApplyFunc                                                 */ 
  /*                                                                       */ 
  /* @description:                                                         */ 
  /*    A method of the @T1_Hints class used to apply hints to the         */ 
  /*    corresponding glyph outline.  Must be called once all hints have   */ 
  /*    been recorded.                                                     */ 
  /*                                                                       */ 
  /* @input:                                                               */ 
  /*   hints      :: A handle to the Type 1 hints recorder.                */ 
  /*                                                                       */ 
  /*   outline    :: A pointer to the target outline descriptor.           */ 
  /*                                                                       */ 
  /*   globals    :: The hinter globals for this font.                     */ 
  /*                                                                       */ 
  /*   hint_flags :: Hinter bit flags.                                     */ 
  /*                                                                       */ 
  /* @return:                                                              */ 
  /*   FreeType error code.  0 means success.                              */ 
  /*                                                                       */ 
  /* @note:                                                                */ 
  /*    On input, all points within the outline are in font coordinates.   */ 
  /*    On output, they are in 1/64th of pixels.                           */ 
  /*                                                                       */ 
  /*    The scaling transformation is taken from the "globals" object      */ 
  /*    which must correspond to the same font as the glyph.               */ 
  /*                                                                       */ 
  typedef FT_Error 
  (*T1_Hints_ApplyFunc)( T1_Hints        hints, 
                         FT_Outline*     outline, 
                         PSH_Globals     globals, 
                         FT_Render_Mode  hint_mode ); 
 
 
  /*************************************************************************/ 
  /*                                                                       */ 
  /* @struct:                                                              */ 
  /*    T1_Hints_FuncsRec                                                  */ 
  /*                                                                       */ 
  /* @description:                                                         */ 
  /*    The structure used to provide the API to @T1_Hints objects.        */ 
  /*                                                                       */ 
  /* @fields:                                                              */ 
  /*    hints :: A handle to the T1 Hints recorder.                        */ 
  /*                                                                       */ 
  /*    open  :: The function to open a recording session.                 */ 
  /*                                                                       */ 
  /*    close :: The function to close a recording session.                */ 
  /*                                                                       */ 
  /*    stem  :: The function to set a simple stem.                        */ 
  /*                                                                       */ 
  /*    stem3 :: The function to set counter-controlled stems.             */ 
  /*                                                                       */ 
  /*    reset :: The function to reset stem hints.                         */ 
  /*                                                                       */ 
  /*    apply :: The function to apply the hints to the corresponding      */ 
  /*             glyph outline.                                            */ 
  /*                                                                       */ 
  typedef struct  T1_Hints_FuncsRec_ 
  { 
    T1_Hints               hints; 
    T1_Hints_OpenFunc      open; 
    T1_Hints_CloseFunc     close; 
    T1_Hints_SetStemFunc   stem; 
    T1_Hints_SetStem3Func  stem3; 
    T1_Hints_ResetFunc     reset; 
    T1_Hints_ApplyFunc     apply; 
 
  } T1_Hints_FuncsRec; 
 
 
  /*************************************************************************/ 
  /*************************************************************************/ 
  /*****                                                               *****/ 
  /*****                  PUBLIC TYPE 2 HINTS RECORDER                 *****/ 
  /*****                                                               *****/ 
  /*************************************************************************/ 
  /*************************************************************************/ 
 
  /*************************************************************************/ 
  /*                                                                       */ 
  /* @type:                                                                */ 
  /*    T2_Hints                                                           */ 
  /*                                                                       */ 
  /* @description:                                                         */ 
  /*    This is a handle to an opaque structure used to record glyph hints */ 
  /*    from a Type 2 character glyph character string.                    */ 
  /*                                                                       */ 
  /*    The methods used to operate on this object are defined by the      */ 
  /*    @T2_Hints_FuncsRec structure.  Recording glyph hints is normally   */ 
  /*    achieved through the following scheme:                             */ 
  /*                                                                       */ 
  /*    - Open a new hint recording session by calling the "open" method.  */ 
  /*      This will dmrewind the recorder and prepare it for new input.      */ 
  /*                                                                       */ 
  /*    - For each hint found in the glyph charstring, call the            */ 
  /*      corresponding method ("stems", "hintmask", "counters").  Note    */ 
  /*      that these functions do not return an error code.                */ 
  /*                                                                       */ 
  /*    - Close the recording session by calling the "close" method.  It   */ 
  /*      will return an error code if the hints were invalid or something */ 
  /*      strange happened (e.g. memory shortage).                         */ 
  /*                                                                       */ 
  /*    The hints accumulated in the object can later be used by the       */ 
  /*    Postscript hinter.                                                 */ 
  /*                                                                       */ 
  typedef struct T2_HintsRec_*  T2_Hints; 
 
 
  /*************************************************************************/ 
  /*                                                                       */ 
  /* @type:                                                                */ 
  /*    T2_Hints_Funcs                                                     */ 
  /*                                                                       */ 
  /* @description:                                                         */ 
  /*    A pointer to the @T2_Hints_FuncsRec structure that defines the API */ 
  /*    of a given @T2_Hints object.                                       */ 
  /*                                                                       */ 
  typedef const struct T2_Hints_FuncsRec_*  T2_Hints_Funcs; 
 
 
  /*************************************************************************/ 
  /*                                                                       */ 
  /* @functype:                                                            */ 
  /*    T2_Hints_OpenFunc                                                  */ 
  /*                                                                       */ 
  /* @description:                                                         */ 
  /*    A method of the @T2_Hints class used to prepare it for a new       */ 
  /*    Type 2 hints recording session.                                    */ 
  /*                                                                       */ 
  /* @input:                                                               */ 
  /*    hints :: A handle to the Type 2 hints recorder.                    */ 
  /*                                                                       */ 
  /* @note:                                                                */ 
  /*    You should always call the @T2_Hints_CloseFunc method in order to  */ 
  /*    close an opened recording session.                                 */ 
  /*                                                                       */ 
  typedef void 
  (*T2_Hints_OpenFunc)( T2_Hints  hints ); 
 
 
  /*************************************************************************/ 
  /*                                                                       */ 
  /* @functype:                                                            */ 
  /*    T2_Hints_StemsFunc                                                 */ 
  /*                                                                       */ 
  /* @description:                                                         */ 
  /*    A method of the @T2_Hints class used to set the table of stems in  */ 
  /*    either the vertical or horizontal dimension.  Equivalent to the    */ 
  /*    "hstem", "vstem", "hstemhm", and "vstemhm" Type 2 operators.       */ 
  /*                                                                       */ 
  /* @input:                                                               */ 
  /*    hints     :: A handle to the Type 2 hints recorder.                */ 
  /*                                                                       */ 
  /*    dimension :: 0 for horizontal stems (hstem), 1 for vertical ones   */ 
  /*                 (vstem).                                              */ 
  /*                                                                       */ 
  /*    count     :: The number of stems.                                  */ 
  /*                                                                       */ 
  /*    coords    :: An array of "count" (position,length) pairs.          */ 
  /*                                                                       */ 
  /* @note:                                                                */ 
  /*    Use vertical coordinates (y) for horizontal stems (dim=0).  Use    */ 
  /*    horizontal coordinates (x) for vertical stems (dim=1).             */ 
  /*                                                                       */ 
  /*    There are "2*count" elements in the "coords" aray.  Each even      */ 
  /*    element is an absolute position in font units, each odd element is */ 
  /*    a length in font units.                                            */ 
  /*                                                                       */ 
  /*    A length can be negative, in which case it must be either -20 or   */ 
  /*    -21.  It will be interpreted as a "ghost" stem, according to the   */ 
  /*    Type 1 specification.                                              */ 
  /*                                                                       */ 
  typedef void 
  (*T2_Hints_StemsFunc)( T2_Hints   hints, 
                         FT_UInt    dimension, 
                         FT_UInt    count, 
                         FT_Fixed*  coordinates ); 
 
 
  /*************************************************************************/ 
  /*                                                                       */ 
  /* @functype:                                                            */ 
  /*    T2_Hints_MaskFunc                                                  */ 
  /*                                                                       */ 
  /* @description:                                                         */ 
  /*    A method of the @T2_Hints class used to set a given hintmask       */ 
  /*    (this corresponds to the "hintmask" Type 2 operator).              */ 
  /*                                                                       */ 
  /* @input:                                                               */ 
  /*    hints     :: A handle to the Type 2 hints recorder.                */ 
  /*                                                                       */ 
  /*    end_point :: The glyph index of the last point to which the        */ 
  /*                 previously defined/activated hints apply.             */ 
  /*                                                                       */ 
  /*    bit_count :: The number of bits in the hint mask.                  */ 
  /*                                                                       */ 
  /*    bytes     :: An array of bytes modelling the hint mask.            */ 
  /*                                                                       */ 
  /* @note:                                                                */ 
  /*    If the hintmask starts the charstring (before any glyph point      */ 
  /*    definition), the value of "end_point" should be 0.                 */ 
  /*                                                                       */ 
  /*    "bit_count" is the number of meaningful bits in the "bytes" array; */ 
  /*    it must be equal to the total number of hints defined so far       */ 
  /*    (i.e. horizontal+verticals).                                       */ 
  /*                                                                       */ 
  /*    The "bytes" array can come directly from the Type 2 charstring and */ 
  /*    respects the same format.                                          */ 
  /*                                                                       */ 
  typedef void 
  (*T2_Hints_MaskFunc)( T2_Hints        hints, 
                        FT_UInt         end_point, 
                        FT_UInt         bit_count, 
                        const FT_Byte*  bytes ); 
 
 
  /*************************************************************************/ 
  /*                                                                       */ 
  /* @functype:                                                            */ 
  /*    T2_Hints_CounterFunc                                               */ 
  /*                                                                       */ 
  /* @description:                                                         */ 
  /*    A method of the @T2_Hints class used to set a given counter mask   */ 
  /*    (this corresponds to the "hintmask" Type 2 operator).              */ 
  /*                                                                       */ 
  /* @input:                                                               */ 
  /*    hints     :: A handle to the Type 2 hints recorder.                */ 
  /*                                                                       */ 
  /*    end_point :: A glyph index of the last point to which the          */ 
  /*                 previously defined/active hints apply.                */ 
  /*                                                                       */ 
  /*    bit_count :: The number of bits in the hint mask.                  */ 
  /*                                                                       */ 
  /*    bytes     :: An array of bytes modelling the hint mask.            */ 
  /*                                                                       */ 
  /* @note:                                                                */ 
  /*    If the hintmask starts the charstring (before any glyph point      */ 
  /*    definition), the value of "end_point" should be 0.                 */ 
  /*                                                                       */ 
  /*    "bit_count" is the number of meaningful bits in the "bytes" array; */ 
  /*    it must be equal to the total number of hints defined so far       */ 
  /*    (i.e. horizontal+verticals).                                       */ 
  /*                                                                       */ 
  /*    The "bytes" array can come directly from the Type 2 charstring and */ 
  /*    respects the same format.                                          */ 
  /*                                                                       */ 
  typedef void 
  (*T2_Hints_CounterFunc)( T2_Hints        hints, 
                           FT_UInt         bit_count, 
                           const FT_Byte*  bytes ); 
 
 
  /*************************************************************************/ 
  /*                                                                       */ 
  /* @functype:                                                            */ 
  /*    T2_Hints_CloseFunc                                                 */ 
  /*                                                                       */ 
  /* @description:                                                         */ 
  /*    A method of the @T2_Hints class used to close a hint recording     */ 
  /*    session.                                                           */ 
  /*                                                                       */ 
  /* @input:                                                               */ 
  /*    hints     :: A handle to the Type 2 hints recorder.                */ 
  /*                                                                       */ 
  /*    end_point :: The index of the last point in the input glyph.       */ 
  /*                                                                       */ 
  /* @return:                                                              */ 
  /*    FreeType error code.  0 means success.                             */ 
  /*                                                                       */ 
  /* @note:                                                                */ 
  /*    The error code will be set to indicate that an error occured       */ 
  /*    during the recording session.                                      */ 
  /*                                                                       */ 
  typedef FT_Error 
  (*T2_Hints_CloseFunc)( T2_Hints  hints, 
                         FT_UInt   end_point ); 
 
 
  /*************************************************************************/ 
  /*                                                                       */ 
  /* @functype:                                                            */ 
  /*    T2_Hints_ApplyFunc                                                 */ 
  /*                                                                       */ 
  /* @description:                                                         */ 
  /*    A method of the @T2_Hints class used to apply hints to the         */ 
  /*    corresponding glyph outline.  Must be called after the "close"     */ 
  /*    method.                                                            */ 
  /*                                                                       */ 
  /* @input:                                                               */ 
  /*    hints      :: A handle to the Type 2 hints recorder.               */ 
  /*                                                                       */ 
  /*    outline    :: A pointer to the target outline descriptor.          */ 
  /*                                                                       */ 
  /*    globals    :: The hinter globals for this font.                    */ 
  /*                                                                       */ 
  /*    hint_flags :: Hinter bit flags.                                    */ 
  /*                                                                       */ 
  /* @return:                                                              */ 
  /*   FreeType error code.  0 means success.                              */ 
  /*                                                                       */ 
  /* @note:                                                                */ 
  /*    On input, all points within the outline are in font coordinates.   */ 
  /*    On output, they are in 1/64th of pixels.                           */ 
  /*                                                                       */ 
  /*    The scaling transformation is taken from the "globals" object      */ 
  /*    which must correspond to the same font than the glyph.             */ 
  /*                                                                       */ 
  typedef FT_Error 
  (*T2_Hints_ApplyFunc)( T2_Hints        hints, 
                         FT_Outline*     outline, 
                         PSH_Globals     globals, 
                         FT_Render_Mode  hint_mode ); 
 
 
  /*************************************************************************/ 
  /*                                                                       */ 
  /* @struct:                                                              */ 
  /*    T2_Hints_FuncsRec                                                  */ 
  /*                                                                       */ 
  /* @description:                                                         */ 
  /*    The structure used to provide the API to @T2_Hints objects.        */ 
  /*                                                                       */ 
  /* @fields:                                                              */ 
  /*    hints    :: A handle to the T2 hints recorder object.              */ 
  /*                                                                       */ 
  /*    open     :: The function to open a recording session.              */ 
  /*                                                                       */ 
  /*    close    :: The function to close a recording session.             */ 
  /*                                                                       */ 
  /*    stems    :: The function to set the dimension's stems table.       */ 
  /*                                                                       */ 
  /*    hintmask :: The function to set hint masks.                        */ 
  /*                                                                       */ 
  /*    counter  :: The function to set counter masks.                     */ 
  /*                                                                       */ 
  /*    apply    :: The function to apply the hints on the corresponding   */ 
  /*                glyph outline.                                         */ 
  /*                                                                       */ 
  typedef struct  T2_Hints_FuncsRec_ 
  { 
    T2_Hints              hints; 
    T2_Hints_OpenFunc     open; 
    T2_Hints_CloseFunc    close; 
    T2_Hints_StemsFunc    stems; 
    T2_Hints_MaskFunc     hintmask; 
    T2_Hints_CounterFunc  counter; 
    T2_Hints_ApplyFunc    apply; 
 
  } T2_Hints_FuncsRec; 
 
 
  /* */ 
 
 
  typedef struct  PSHinter_Interface_ 
  { 
    PSH_Globals_Funcs  (*get_globals_funcs)( FT_Module  module ); 
    T1_Hints_Funcs     (*get_t1_funcs)     ( FT_Module  module ); 
    T2_Hints_Funcs     (*get_t2_funcs)     ( FT_Module  module ); 
 
  } PSHinter_Interface; 
 
  typedef PSHinter_Interface*  PSHinter_Service; 
 
 
FT_END_HEADER 
 
#endif /* __PSHINTS_H__ */ 
 
 
/* END */