Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. /***************************************************************************/
  2. /*                                                                          */
  3. /*  ftsnames.h                                                             */
  4. /*                                                                         */
  5. /*    Simple interface to access SFNT name tables (which are used          */
  6. /*    to hold font names, copyright info, notices, etc.) (specification).  */
  7. /*                                                                         */
  8. /*    This is _not_ used to retrieve glyph names!                          */
  9. /*                                                                         */
  10. /*  Copyright 1996-2001, 2002, 2003, 2006, 2009, 2010 by                   */
  11. /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
  12. /*                                                                         */
  13. /*  This file is part of the FreeType project, and may only be used,       */
  14. /*  modified, and distributed under the terms of the FreeType project      */
  15. /*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
  16. /*  this file you indicate that you have read the license and              */
  17. /*  understand and accept it fully.                                        */
  18. /*                                                                         */
  19. /***************************************************************************/
  20.  
  21.  
  22. #ifndef __FT_SFNT_NAMES_H__
  23. #define __FT_SFNT_NAMES_H__
  24.  
  25.  
  26. #include <ft2build.h>
  27. #include FT_FREETYPE_H
  28.  
  29. #ifdef FREETYPE_H
  30. #error "freetype.h of FreeType 1 has been loaded!"
  31. #error "Please fix the directory search order for header files"
  32. #error "so that freetype.h of FreeType 2 is found first."
  33. #endif
  34.  
  35.  
  36. FT_BEGIN_HEADER
  37.  
  38.  
  39.   /*************************************************************************/
  40.   /*                                                                       */
  41.   /* <Section>                                                             */
  42.   /*    sfnt_names                                                         */
  43.   /*                                                                       */
  44.   /* <Title>                                                               */
  45.   /*    SFNT Names                                                         */
  46.   /*                                                                       */
  47.   /* <Abstract>                                                            */
  48.   /*    Access the names embedded in TrueType and OpenType files.          */
  49.   /*                                                                       */
  50.   /* <Description>                                                         */
  51.   /*    The TrueType and OpenType specifications allow the inclusion of    */
  52.   /*    a special `names table' in font files.  This table contains        */
  53.   /*    textual (and internationalized) information regarding the font,    */
  54.   /*    like family name, copyright, version, etc.                         */
  55.   /*                                                                       */
  56.   /*    The definitions below are used to access them if available.        */
  57.   /*                                                                       */
  58.   /*    Note that this has nothing to do with glyph names!                 */
  59.   /*                                                                       */
  60.   /*************************************************************************/
  61.  
  62.  
  63.   /*************************************************************************/
  64.   /*                                                                       */
  65.   /* <Struct>                                                              */
  66.   /*    FT_SfntName                                                        */
  67.   /*                                                                       */
  68.   /* <Description>                                                         */
  69.   /*    A structure used to model an SFNT `name' table entry.              */
  70.   /*                                                                       */
  71.   /* <Fields>                                                              */
  72.   /*    platform_id :: The platform ID for `string'.                       */
  73.   /*                                                                       */
  74.   /*    encoding_id :: The encoding ID for `string'.                       */
  75.   /*                                                                       */
  76.   /*    language_id :: The language ID for `string'.                       */
  77.   /*                                                                       */
  78.   /*    name_id     :: An identifier for `string'.                         */
  79.   /*                                                                       */
  80.   /*    string      :: The `name' string.  Note that its format differs    */
  81.   /*                   depending on the (platform,encoding) pair.  It can  */
  82.   /*                   be a Pascal String, a UTF-16 one, etc.              */
  83.   /*                                                                       */
  84.   /*                   Generally speaking, the string is not               */
  85.   /*                   zero-terminated.  Please refer to the TrueType      */
  86.   /*                   specification for details.                          */
  87.   /*                                                                       */
  88.   /*    string_len  :: The length of `string' in bytes.                    */
  89.   /*                                                                       */
  90.   /* <Note>                                                                */
  91.   /*    Possible values for `platform_id', `encoding_id', `language_id',   */
  92.   /*    and `name_id' are given in the file `ttnameid.h'.  For details     */
  93.   /*    please refer to the TrueType or OpenType specification.            */
  94.   /*                                                                       */
  95.   /*    See also @TT_PLATFORM_XXX, @TT_APPLE_ID_XXX, @TT_MAC_ID_XXX,       */
  96.   /*    @TT_ISO_ID_XXX, and @TT_MS_ID_XXX.                                 */
  97.   /*                                                                       */
  98.   typedef struct  FT_SfntName_
  99.   {
  100.     FT_UShort  platform_id;
  101.     FT_UShort  encoding_id;
  102.     FT_UShort  language_id;
  103.     FT_UShort  name_id;
  104.  
  105.     FT_Byte*   string;      /* this string is *not* null-terminated! */
  106.     FT_UInt    string_len;  /* in bytes */
  107.  
  108.   } FT_SfntName;
  109.  
  110.  
  111.   /*************************************************************************/
  112.   /*                                                                       */
  113.   /* <Function>                                                            */
  114.   /*    FT_Get_Sfnt_Name_Count                                             */
  115.   /*                                                                       */
  116.   /* <Description>                                                         */
  117.   /*    Retrieve the number of name strings in the SFNT `name' table.      */
  118.   /*                                                                       */
  119.   /* <Input>                                                               */
  120.   /*    face :: A handle to the source face.                               */
  121.   /*                                                                       */
  122.   /* <Return>                                                              */
  123.   /*    The number of strings in the `name' table.                         */
  124.   /*                                                                       */
  125.   FT_EXPORT( FT_UInt )
  126.   FT_Get_Sfnt_Name_Count( FT_Face  face );
  127.  
  128.  
  129.   /*************************************************************************/
  130.   /*                                                                       */
  131.   /* <Function>                                                            */
  132.   /*    FT_Get_Sfnt_Name                                                   */
  133.   /*                                                                       */
  134.   /* <Description>                                                         */
  135.   /*    Retrieve a string of the SFNT `name' table for a given index.      */
  136.   /*                                                                       */
  137.   /* <Input>                                                               */
  138.   /*    face  :: A handle to the source face.                              */
  139.   /*                                                                       */
  140.   /*    idx   :: The index of the `name' string.                           */
  141.   /*                                                                       */
  142.   /* <Output>                                                              */
  143.   /*    aname :: The indexed @FT_SfntName structure.                       */
  144.   /*                                                                       */
  145.   /* <Return>                                                              */
  146.   /*    FreeType error code.  0~means success.                             */
  147.   /*                                                                       */
  148.   /* <Note>                                                                */
  149.   /*    The `string' array returned in the `aname' structure is not        */
  150.   /*    null-terminated.  The application should deallocate it if it is no */
  151.   /*    longer in use.                                                     */
  152.   /*                                                                       */
  153.   /*    Use @FT_Get_Sfnt_Name_Count to get the total number of available   */
  154.   /*    `name' table entries, then do a loop until you get the right       */
  155.   /*    platform, encoding, and name ID.                                   */
  156.   /*                                                                       */
  157.   FT_EXPORT( FT_Error )
  158.   FT_Get_Sfnt_Name( FT_Face       face,
  159.                     FT_UInt       idx,
  160.                     FT_SfntName  *aname );
  161.  
  162.  
  163.   /***************************************************************************
  164.    *
  165.    * @constant:
  166.    *   FT_PARAM_TAG_IGNORE_PREFERRED_FAMILY
  167.    *
  168.    * @description:
  169.    *   A constant used as the tag of @FT_Parameter structures to make
  170.    *   FT_Open_Face() ignore preferred family subfamily names in `name'
  171.    *   table since OpenType version 1.4.  For backwards compatibility with
  172.    *   legacy systems which has 4-face-per-family restriction.
  173.    *
  174.    */
  175. #define FT_PARAM_TAG_IGNORE_PREFERRED_FAMILY  FT_MAKE_TAG( 'i', 'g', 'p', 'f' )
  176.  
  177.  
  178.   /***************************************************************************
  179.    *
  180.    * @constant:
  181.    *   FT_PARAM_TAG_IGNORE_PREFERRED_SUBFAMILY
  182.    *
  183.    * @description:
  184.    *   A constant used as the tag of @FT_Parameter structures to make
  185.    *   FT_Open_Face() ignore preferred subfamily names in `name' table since
  186.    *   OpenType version 1.4.  For backwards compatibility with legacy
  187.    *   systems which has 4-face-per-family restriction.
  188.    *
  189.    */
  190. #define FT_PARAM_TAG_IGNORE_PREFERRED_SUBFAMILY  FT_MAKE_TAG( 'i', 'g', 'p', 's' )
  191.  
  192.   /* */
  193.  
  194.  
  195. FT_END_HEADER
  196.  
  197. #endif /* __FT_SFNT_NAMES_H__ */
  198.  
  199.  
  200. /* END */
  201.