misc/libfreetype/include/freetype/ftbdf.h
branchwebgl
changeset 9521 8054d9d775fd
parent 9282 92af50454cf2
parent 9519 b8b5c82eb61b
child 9950 2759212a27de
equal deleted inserted replaced
9282:92af50454cf2 9521:8054d9d775fd
     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 */