modules/freetype2/include/ftbdf.h

Thu, 22 Jan 2015 13:21:57 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Thu, 22 Jan 2015 13:21:57 +0100
branch
TOR_BUG_9701
changeset 15
b8a032363ba2
permissions
-rw-r--r--

Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6

     1 /***************************************************************************/
     2 /*                                                                         */
     3 /*  ftbdf.h                                                                */
     4 /*                                                                         */
     5 /*    FreeType API for accessing BDF-specific strings (specification).     */
     6 /*                                                                         */
     7 /*  Copyright 2002-2004, 2006, 2009, 2014 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 /***************************************************************************/
    19 #ifndef __FTBDF_H__
    20 #define __FTBDF_H__
    22 #include <ft2build.h>
    23 #include FT_FREETYPE_H
    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
    32 FT_BEGIN_HEADER
    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   /*************************************************************************/
    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
    81   } BDF_PropertyType;
    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;
    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.  May be
   110   *      NULL, indicating an empty string.
   111   *
   112   *    u.integer ::
   113   *      A signed integer, if type is @BDF_PROPERTY_TYPE_INTEGER.
   114   *
   115   *    u.cardinal ::
   116   *      An unsigned integer, if type is @BDF_PROPERTY_TYPE_CARDINAL.
   117   */
   118   typedef struct  BDF_PropertyRec_
   119   {
   120     BDF_PropertyType  type;
   121     union {
   122       const char*     atom;
   123       FT_Int32        integer;
   124       FT_UInt32       cardinal;
   126     } u;
   128   } BDF_PropertyRec;
   131  /**********************************************************************
   132   *
   133   * @function:
   134   *    FT_Get_BDF_Charset_ID
   135   *
   136   * @description:
   137   *    Retrieve a BDF font character set identity, according to
   138   *    the BDF specification.
   139   *
   140   * @input:
   141   *    face ::
   142   *       A handle to the input face.
   143   *
   144   * @output:
   145   *    acharset_encoding ::
   146   *       Charset encoding, as a C~string, owned by the face.
   147   *
   148   *    acharset_registry ::
   149   *       Charset registry, as a C~string, owned by the face.
   150   *
   151   * @return:
   152   *   FreeType error code.  0~means success.
   153   *
   154   * @note:
   155   *   This function only works with BDF faces, returning an error otherwise.
   156   */
   157   FT_EXPORT( FT_Error )
   158   FT_Get_BDF_Charset_ID( FT_Face       face,
   159                          const char*  *acharset_encoding,
   160                          const char*  *acharset_registry );
   163  /**********************************************************************
   164   *
   165   * @function:
   166   *    FT_Get_BDF_Property
   167   *
   168   * @description:
   169   *    Retrieve a BDF property from a BDF or PCF font file.
   170   *
   171   * @input:
   172   *    face :: A handle to the input face.
   173   *
   174   *    name :: The property name.
   175   *
   176   * @output:
   177   *    aproperty :: The property.
   178   *
   179   * @return:
   180   *   FreeType error code.  0~means success.
   181   *
   182   * @note:
   183   *   This function works with BDF _and_ PCF fonts.  It returns an error
   184   *   otherwise.  It also returns an error if the property is not in the
   185   *   font.
   186   *
   187   *   A `property' is a either key-value pair within the STARTPROPERTIES
   188   *   ... ENDPROPERTIES block of a BDF font or a key-value pair from the
   189   *   `info->props' array within a `FontRec' structure of a PCF font.
   190   *
   191   *   Integer properties are always stored as `signed' within PCF fonts;
   192   *   consequently, @BDF_PROPERTY_TYPE_CARDINAL is a possible return value
   193   *   for BDF fonts only.
   194   *
   195   *   In case of error, `aproperty->type' is always set to
   196   *   @BDF_PROPERTY_TYPE_NONE.
   197   */
   198   FT_EXPORT( FT_Error )
   199   FT_Get_BDF_Property( FT_Face           face,
   200                        const char*       prop_name,
   201                        BDF_PropertyRec  *aproperty );
   203  /* */
   205 FT_END_HEADER
   207 #endif /* __FTBDF_H__ */
   210 /* END */

mercurial