Spade

Mini Shell

Directory:~$ /proc/self/root/usr/include/freetype2/freetype/
Upload File

[Home] [System Details] [Kill Me]
Current File:~$ //proc/self/root/usr/include/freetype2/freetype/ftsnames.h

/***************************************************************************/
/*                                                                        
*/
/*  ftsnames.h                                                            
*/
/*                                                                        
*/
/*    Simple interface to access SFNT `name' tables (which are used   
    */
/*    to hold font names, copyright info, notices, etc.) (specification). 
*/
/*                                                                        
*/
/*    This is _not_ used to retrieve glyph names!                         
*/
/*                                                                        
*/
/*  Copyright 1996-2017 by                                                
*/
/*  David Turner, Robert Wilhelm, and Werner Lemberg.                     
*/
/*                                                                        
*/
/*  This file is part of the FreeType project, and may only be used,      
*/
/*  modified, and distributed under the terms of the FreeType project     
*/
/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute    
*/
/*  this file you indicate that you have read the license and             
*/
/*  understand and accept it fully.                                       
*/
/*                                                                        
*/
/***************************************************************************/


#ifndef FTSNAMES_H_
#define FTSNAMES_H_


#include <ft2build.h>
#include FT_FREETYPE_H

#ifdef FREETYPE_H
#error "freetype.h of FreeType 1 has been loaded!"
#error "Please fix the directory search order for header files"
#error "so that freetype.h of FreeType 2 is found first."
#endif


FT_BEGIN_HEADER


 
/*************************************************************************/
  /*                                                                      
*/
  /* <Section>                                                       
     */
  /*    sfnt_names                                                        
*/
  /*                                                                      
*/
  /* <Title>                                                         
     */
  /*    SFNT Names                                                        
*/
  /*                                                                      
*/
  /* <Abstract>                                                      
     */
  /*    Access the names embedded in TrueType and OpenType files.         
*/
  /*                                                                      
*/
  /* <Description>                                                   
     */
  /*    The TrueType and OpenType specifications allow the inclusion of   
*/
  /*    a special names table (`name') in font files.  This table
contains */
  /*    textual (and internationalized) information regarding the font,   
*/
  /*    like family name, copyright, version, etc.                        
*/
  /*                                                                      
*/
  /*    The definitions below are used to access them if available.       
*/
  /*                                                                      
*/
  /*    Note that this has nothing to do with glyph names!                
*/
  /*                                                                      
*/
 
/*************************************************************************/


 
/*************************************************************************/
  /*                                                                      
*/
  /* <Struct>                                                        
     */
  /*    FT_SfntName                                                       
*/
  /*                                                                      
*/
  /* <Description>                                                   
     */
  /*    A structure used to model an SFNT `name' table entry.         
    */
  /*                                                                      
*/
  /* <Fields>                                                        
     */
  /*    platform_id :: The platform ID for `string'.                  
    */
  /*                   See @TT_PLATFORM_XXX for possible values.          
*/
  /*                                                                      
*/
  /*    encoding_id :: The encoding ID for `string'.                  
    */
  /*                   See @TT_APPLE_ID_XXX, @TT_MAC_ID_XXX,              
*/
  /*                   @TT_ISO_ID_XXX, @TT_MS_ID_XXX, and @TT_ADOBE_ID_XXX
*/
  /*                   for possible values.                               
*/
  /*                                                                      
*/
  /*    language_id :: The language ID for `string'.                  
    */
  /*                   See @TT_MAC_LANGID_XXX and @TT_MS_LANGID_XXX for   
*/
  /*                   possible values.                                   
*/
  /*                                                                      
*/
  /*                   Registered OpenType values for `language_id'
are    */
  /*                   always smaller than 0x8000; values equal or larger 
*/
  /*                   than 0x8000 usually indicate a language tag string 
*/
  /*                   (introduced in OpenType version 1.6).  Use function
*/
  /*                   @FT_Get_Sfnt_LangTag with `language_id' as its 
    */
  /*                   argument to retrieve the associated language tag.  
*/
  /*                                                                      
*/
  /*    name_id     :: An identifier for `string'.                    
    */
  /*                   See @TT_NAME_ID_XXX for possible values.           
*/
  /*                                                                      
*/
  /*    string      :: The `name' string.  Note that its format
differs    */
  /*                   depending on the (platform,encoding) pair, being   
*/
  /*                   either a string of bytes (without a terminating    
*/
  /*                   NULL byte) or containing UTF-16BE entities.        
*/
  /*                                                                      
*/
  /*    string_len  :: The length of `string' in bytes.               
    */
  /*                                                                      
*/
  /* <Note>                                                          
     */
  /*    Please refer to the TrueType or OpenType specification for more   
*/
  /*    details.                                                          
*/
  /*                                                                      
*/
  typedef struct  FT_SfntName_
  {
    FT_UShort  platform_id;
    FT_UShort  encoding_id;
    FT_UShort  language_id;
    FT_UShort  name_id;

    FT_Byte*   string;      /* this string is *not* null-terminated! */
    FT_UInt    string_len;  /* in bytes                              */

  } FT_SfntName;


 
/*************************************************************************/
  /*                                                                      
*/
  /* <Function>                                                      
     */
  /*    FT_Get_Sfnt_Name_Count                                            
*/
  /*                                                                      
*/
  /* <Description>                                                   
     */
  /*    Retrieve the number of name strings in the SFNT `name' table. 
    */
  /*                                                                      
*/
  /* <Input>                                                         
     */
  /*    face :: A handle to the source face.                              
*/
  /*                                                                      
*/
  /* <Return>                                                        
     */
  /*    The number of strings in the `name' table.                    
    */
  /*                                                                      
*/
  FT_EXPORT( FT_UInt )
  FT_Get_Sfnt_Name_Count( FT_Face  face );


 
/*************************************************************************/
  /*                                                                      
*/
  /* <Function>                                                      
     */
  /*    FT_Get_Sfnt_Name                                                  
*/
  /*                                                                      
*/
  /* <Description>                                                   
     */
  /*    Retrieve a string of the SFNT `name' table for a given index. 
    */
  /*                                                                      
*/
  /* <Input>                                                         
     */
  /*    face  :: A handle to the source face.                             
*/
  /*                                                                      
*/
  /*    idx   :: The index of the `name' string.                      
    */
  /*                                                                      
*/
  /* <Output>                                                        
     */
  /*    aname :: The indexed @FT_SfntName structure.                      
*/
  /*                                                                      
*/
  /* <Return>                                                        
     */
  /*    FreeType error code.  0~means success.                            
*/
  /*                                                                      
*/
  /* <Note>                                                          
     */
  /*    The `string' array returned in the `aname' structure is
not        */
  /*    null-terminated.  Note that you don't have to deallocate
`string'  */
  /*    by yourself; FreeType takes care of it if you call @FT_Done_Face. 
*/
  /*                                                                      
*/
  /*    Use @FT_Get_Sfnt_Name_Count to get the total number of available  
*/
  /*    `name' table entries, then do a loop until you get the right  
    */
  /*    platform, encoding, and name ID.                                  
*/
  /*                                                                      
*/
  /*    `name' table format~1 entries can use language tags also, see 
    */
  /*    @FT_Get_Sfnt_LangTag.                                             
*/
  /*                                                                      
*/
  FT_EXPORT( FT_Error )
  FT_Get_Sfnt_Name( FT_Face       face,
                    FT_UInt       idx,
                    FT_SfntName  *aname );


 
/*************************************************************************/
  /*                                                                      
*/
  /* <Struct>                                                        
     */
  /*    FT_SfntLangTag                                                    
*/
  /*                                                                      
*/
  /* <Description>                                                   
     */
  /*    A structure to model a language tag entry from an SFNT `name' 
    */
  /*    table.                                                            
*/
  /*                                                                      
*/
  /* <Fields>                                                        
     */
  /*    string      :: The language tag string, encoded in UTF-16BE       
*/
  /*                   (without trailing NULL bytes).                     
*/
  /*                                                                      
*/
  /*    string_len  :: The length of `string' in *bytes*.             
    */
  /*                                                                      
*/
  /* <Note>                                                          
     */
  /*    Please refer to the TrueType or OpenType specification for more   
*/
  /*    details.                                                          
*/
  /*                                                                      
*/
  typedef struct  FT_SfntLangTag_
  {
    FT_Byte*  string;      /* this string is *not* null-terminated! */
    FT_UInt   string_len;  /* in bytes                              */

  } FT_SfntLangTag;


 
/*************************************************************************/
  /*                                                                      
*/
  /* <Function>                                                      
     */
  /*    FT_Get_Sfnt_LangTag                                               
*/
  /*                                                                      
*/
  /* <Description>                                                   
     */
  /*    Retrieve the language tag associated with a language ID of an SFNT
*/
  /*    `name' table entry.                                           
    */
  /*                                                                      
*/
  /* <Input>                                                         
     */
  /*    face     :: A handle to the source face.                          
*/
  /*                                                                      
*/
  /*    langID   :: The language ID, as returned by @FT_Get_Sfnt_Name.    
*/
  /*                This is always a value larger than 0x8000.            
*/
  /*                                                                      
*/
  /* <Output>                                                        
     */
  /*    alangTag :: The language tag associated with the `name' table 
    */
  /*                entry's language ID.                              
    */
  /*                                                                      
*/
  /* <Return>                                                        
     */
  /*    FreeType error code.  0~means success.                            
*/
  /*                                                                      
*/
  /* <Note>                                                          
     */
  /*    The `string' array returned in the `alangTag' structure
is not     */
  /*    null-terminated.  Note that you don't have to deallocate
`string'  */
  /*    by yourself; FreeType takes care of it if you call @FT_Done_Face. 
*/
  /*                                                                      
*/
  /*    Only `name' table format~1 supports language tags.  For
format~0   */
  /*    tables, this function always returns FT_Err_Invalid_Table.  For   
*/
  /*    invalid format~1 language ID values, FT_Err_Invalid_Argument is   
*/
  /*    returned.                                                         
*/
  /*                                                                      
*/
  FT_EXPORT( FT_Error )
  FT_Get_Sfnt_LangTag( FT_Face          face,
                       FT_UInt          langID,
                       FT_SfntLangTag  *alangTag );


 
/***************************************************************************
   *
   * @constant:
   *   FT_PARAM_TAG_IGNORE_TYPOGRAPHIC_FAMILY
   *
   * @description:
   *   A tag for @FT_Parameter to make @FT_Open_Face ignore typographic
   *   family names in the `name' table (introduced in OpenType
version
   *   1.4).  Use this for backward compatibility with legacy systems that
   *   have a four-faces-per-family restriction.
   *
   */
#define FT_PARAM_TAG_IGNORE_TYPOGRAPHIC_FAMILY \
          FT_MAKE_TAG( 'i', 'g', 'p',
'f' )


  /* this constant is deprecated */
#define FT_PARAM_TAG_IGNORE_PREFERRED_FAMILY \
          FT_PARAM_TAG_IGNORE_TYPOGRAPHIC_FAMILY


 
/***************************************************************************
   *
   * @constant:
   *   FT_PARAM_TAG_IGNORE_TYPOGRAPHIC_SUBFAMILY
   *
   * @description:
   *   A tag for @FT_Parameter to make @FT_Open_Face ignore typographic
   *   subfamily names in the `name' table (introduced in OpenType
version
   *   1.4).  Use this for backward compatibility with legacy systems that
   *   have a four-faces-per-family restriction.
   *
   */
#define FT_PARAM_TAG_IGNORE_TYPOGRAPHIC_SUBFAMILY \
          FT_MAKE_TAG( 'i', 'g', 'p',
's' )


  /* this constant is deprecated */
#define FT_PARAM_TAG_IGNORE_PREFERRED_SUBFAMILY \
          FT_PARAM_TAG_IGNORE_TYPOGRAPHIC_SUBFAMILY

  /* */


FT_END_HEADER

#endif /* FTSNAMES_H_ */


/* END */