Home | History | Annotate | Download | only in include
      1 /***************************************************************************/
      2 /*                                                                         */
      3 /*  ftpfr.h                                                                */
      4 /*                                                                         */
      5 /*    FreeType API for accessing PFR-specific data (specification only).   */
      6 /*                                                                         */
      7 /*  Copyright 2002, 2003, 2004, 2006, 2008, 2009 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 __FTPFR_H__
     20 #define __FTPFR_H__
     21 
     22 #include <ft2build.h>
     23 #include FT_FREETYPE_H
     24 
     25 #ifdef FREETYPE_H
     26 #error "freetype.h of FreeType 1 has been loaded!"
     27 #error "Please fix the directory search order for header files"
     28 #error "so that freetype.h of FreeType 2 is found first."
     29 #endif
     30 
     31 
     32 FT_BEGIN_HEADER
     33 
     34 
     35   /*************************************************************************/
     36   /*                                                                       */
     37   /* <Section>                                                             */
     38   /*    pfr_fonts                                                          */
     39   /*                                                                       */
     40   /* <Title>                                                               */
     41   /*    PFR Fonts                                                          */
     42   /*                                                                       */
     43   /* <Abstract>                                                            */
     44   /*    PFR/TrueDoc specific API.                                          */
     45   /*                                                                       */
     46   /* <Description>                                                         */
     47   /*    This section contains the declaration of PFR-specific functions.   */
     48   /*                                                                       */
     49   /*************************************************************************/
     50 
     51 
     52  /**********************************************************************
     53   *
     54   * @function:
     55   *    FT_Get_PFR_Metrics
     56   *
     57   * @description:
     58   *    Return the outline and metrics resolutions of a given PFR face.
     59   *
     60   * @input:
     61   *    face :: Handle to the input face.  It can be a non-PFR face.
     62   *
     63   * @output:
     64   *    aoutline_resolution ::
     65   *      Outline resolution.  This is equivalent to `face->units_per_EM'
     66   *      for non-PFR fonts.  Optional (parameter can be NULL).
     67   *
     68   *    ametrics_resolution ::
     69   *      Metrics resolution.  This is equivalent to `outline_resolution'
     70   *      for non-PFR fonts.  Optional (parameter can be NULL).
     71   *
     72   *    ametrics_x_scale ::
     73   *      A 16.16 fixed-point number used to scale distance expressed
     74   *      in metrics units to device sub-pixels.  This is equivalent to
     75   *      `face->size->x_scale', but for metrics only.  Optional (parameter
     76   *      can be NULL).
     77   *
     78   *    ametrics_y_scale ::
     79   *      Same as `ametrics_x_scale' but for the vertical direction.
     80   *      optional (parameter can be NULL).
     81   *
     82   * @return:
     83   *    FreeType error code.  0~means success.
     84   *
     85   * @note:
     86   *   If the input face is not a PFR, this function will return an error.
     87   *   However, in all cases, it will return valid values.
     88   */
     89   FT_EXPORT( FT_Error )
     90   FT_Get_PFR_Metrics( FT_Face    face,
     91                       FT_UInt   *aoutline_resolution,
     92                       FT_UInt   *ametrics_resolution,
     93                       FT_Fixed  *ametrics_x_scale,
     94                       FT_Fixed  *ametrics_y_scale );
     95 
     96 
     97  /**********************************************************************
     98   *
     99   * @function:
    100   *    FT_Get_PFR_Kerning
    101   *
    102   * @description:
    103   *    Return the kerning pair corresponding to two glyphs in a PFR face.
    104   *    The distance is expressed in metrics units, unlike the result of
    105   *    @FT_Get_Kerning.
    106   *
    107   * @input:
    108   *    face  :: A handle to the input face.
    109   *
    110   *    left  :: Index of the left glyph.
    111   *
    112   *    right :: Index of the right glyph.
    113   *
    114   * @output:
    115   *    avector :: A kerning vector.
    116   *
    117   * @return:
    118   *    FreeType error code.  0~means success.
    119   *
    120   * @note:
    121   *    This function always return distances in original PFR metrics
    122   *    units.  This is unlike @FT_Get_Kerning with the @FT_KERNING_UNSCALED
    123   *    mode, which always returns distances converted to outline units.
    124   *
    125   *    You can use the value of the `x_scale' and `y_scale' parameters
    126   *    returned by @FT_Get_PFR_Metrics to scale these to device sub-pixels.
    127   */
    128   FT_EXPORT( FT_Error )
    129   FT_Get_PFR_Kerning( FT_Face     face,
    130                       FT_UInt     left,
    131                       FT_UInt     right,
    132                       FT_Vector  *avector );
    133 
    134 
    135  /**********************************************************************
    136   *
    137   * @function:
    138   *    FT_Get_PFR_Advance
    139   *
    140   * @description:
    141   *    Return a given glyph advance, expressed in original metrics units,
    142   *    from a PFR font.
    143   *
    144   * @input:
    145   *    face   :: A handle to the input face.
    146   *
    147   *    gindex :: The glyph index.
    148   *
    149   * @output:
    150   *    aadvance :: The glyph advance in metrics units.
    151   *
    152   * @return:
    153   *    FreeType error code.  0~means success.
    154   *
    155   * @note:
    156   *    You can use the `x_scale' or `y_scale' results of @FT_Get_PFR_Metrics
    157   *    to convert the advance to device sub-pixels (i.e., 1/64th of pixels).
    158   */
    159   FT_EXPORT( FT_Error )
    160   FT_Get_PFR_Advance( FT_Face   face,
    161                       FT_UInt   gindex,
    162                       FT_Pos   *aadvance );
    163 
    164  /* */
    165 
    166 
    167 FT_END_HEADER
    168 
    169 #endif /* __FTPFR_H__ */
    170 
    171 
    172 /* END */
    173