Home | History | Annotate | Download | only in freetype
      1 /***************************************************************************/
      2 /*                                                                         */
      3 /*  ftbdf.h                                                                */
      4 /*                                                                         */
      5 /*    FreeType API for accessing BDF-specific strings (specification).     */
      6 /*                                                                         */
      7 /*  Copyright 2002, 2003, 2004, 2006, 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 __FTBDF_H__
     20 #define __FTBDF_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   /*    bdf_fonts                                                          */
     39   /*                                                                       */
     40   /* <Title>                                                               */
     41   /*    BDF and PCF Files                                                  */
     42   /*                                                                       */
     43   /* <Abstract>                                                            */
     44   /*    BDF and PCF specific API.                                          */
     45   /*                                                                       */
     46   /* <Description>                                                         */
     47   /*    This section contains the declaration of functions specific to BDF */
     48   /*    and PCF fonts.                                                     */
     49   /*                                                                       */
     50   /*************************************************************************/
     51 
     52 
     53   /**********************************************************************
     54    *
     55    * @enum:
     56    *    FT_PropertyType
     57    *
     58    * @description:
     59    *    A list of BDF property types.
     60    *
     61    * @values:
     62    *    BDF_PROPERTY_TYPE_NONE ::
     63    *      Value~0 is used to indicate a missing property.
     64    *
     65    *    BDF_PROPERTY_TYPE_ATOM ::
     66    *      Property is a string atom.
     67    *
     68    *    BDF_PROPERTY_TYPE_INTEGER ::
     69    *      Property is a 32-bit signed integer.
     70    *
     71    *    BDF_PROPERTY_TYPE_CARDINAL ::
     72    *      Property is a 32-bit unsigned integer.
     73    */
     74   typedef enum  BDF_PropertyType_
     75   {
     76     BDF_PROPERTY_TYPE_NONE     = 0,
     77     BDF_PROPERTY_TYPE_ATOM     = 1,
     78     BDF_PROPERTY_TYPE_INTEGER  = 2,
     79     BDF_PROPERTY_TYPE_CARDINAL = 3
     80 
     81   } BDF_PropertyType;
     82 
     83 
     84   /**********************************************************************
     85    *
     86    * @type:
     87    *    BDF_Property
     88    *
     89    * @description:
     90    *    A handle to a @BDF_PropertyRec structure to model a given
     91    *    BDF/PCF property.
     92    */
     93   typedef struct BDF_PropertyRec_*  BDF_Property;
     94 
     95 
     96  /**********************************************************************
     97   *
     98   * @struct:
     99   *    BDF_PropertyRec
    100   *
    101   * @description:
    102   *    This structure models a given BDF/PCF property.
    103   *
    104   * @fields:
    105   *    type ::
    106   *      The property type.
    107   *
    108   *    u.atom ::
    109   *      The atom string, if type is @BDF_PROPERTY_TYPE_ATOM.
    110   *
    111   *    u.integer ::
    112   *      A signed integer, if type is @BDF_PROPERTY_TYPE_INTEGER.
    113   *
    114   *    u.cardinal ::
    115   *      An unsigned integer, if type is @BDF_PROPERTY_TYPE_CARDINAL.
    116   */
    117   typedef struct  BDF_PropertyRec_
    118   {
    119     BDF_PropertyType  type;
    120     union {
    121       const char*     atom;
    122       FT_Int32        integer;
    123       FT_UInt32       cardinal;
    124 
    125     } u;
    126 
    127   } BDF_PropertyRec;
    128 
    129 
    130  /**********************************************************************
    131   *
    132   * @function:
    133   *    FT_Get_BDF_Charset_ID
    134   *
    135   * @description:
    136   *    Retrieve a BDF font character set identity, according to
    137   *    the BDF specification.
    138   *
    139   * @input:
    140   *    face ::
    141   *       A handle to the input face.
    142   *
    143   * @output:
    144   *    acharset_encoding ::
    145   *       Charset encoding, as a C~string, owned by the face.
    146   *
    147   *    acharset_registry ::
    148   *       Charset registry, as a C~string, owned by the face.
    149   *
    150   * @return:
    151   *   FreeType error code.  0~means success.
    152   *
    153   * @note:
    154   *   This function only works with BDF faces, returning an error otherwise.
    155   */
    156   FT_EXPORT( FT_Error )
    157   FT_Get_BDF_Charset_ID( FT_Face       face,
    158                          const char*  *acharset_encoding,
    159                          const char*  *acharset_registry );
    160 
    161 
    162  /**********************************************************************
    163   *
    164   * @function:
    165   *    FT_Get_BDF_Property
    166   *
    167   * @description:
    168   *    Retrieve a BDF property from a BDF or PCF font file.
    169   *
    170   * @input:
    171   *    face :: A handle to the input face.
    172   *
    173   *    name :: The property name.
    174   *
    175   * @output:
    176   *    aproperty :: The property.
    177   *
    178   * @return:
    179   *   FreeType error code.  0~means success.
    180   *
    181   * @note:
    182   *   This function works with BDF _and_ PCF fonts.  It returns an error
    183   *   otherwise.  It also returns an error if the property is not in the
    184   *   font.
    185   *
    186   *   A `property' is a either key-value pair within the STARTPROPERTIES
    187   *   ... ENDPROPERTIES block of a BDF font or a key-value pair from the
    188   *   `info->props' array within a `FontRec' structure of a PCF font.
    189   *
    190   *   Integer properties are always stored as `signed' within PCF fonts;
    191   *   consequently, @BDF_PROPERTY_TYPE_CARDINAL is a possible return value
    192   *   for BDF fonts only.
    193   *
    194   *   In case of error, `aproperty->type' is always set to
    195   *   @BDF_PROPERTY_TYPE_NONE.
    196   */
    197   FT_EXPORT( FT_Error )
    198   FT_Get_BDF_Property( FT_Face           face,
    199                        const char*       prop_name,
    200                        BDF_PropertyRec  *aproperty );
    201 
    202  /* */
    203 
    204 FT_END_HEADER
    205 
    206 #endif /* __FTBDF_H__ */
    207 
    208 
    209 /* END */
    210