Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

  1. /***************************************************************************/
  2. /*                                                                         */
  3. /*  ttcmap.h                                                               */
  4. /*                                                                         */
  5. /*    TrueType character mapping table (cmap) support (specification).     */
  6. /*                                                                         */
  7. /*  Copyright 2002-2005, 2009, 2012 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 __TTCMAP_H__
  20. #define __TTCMAP_H__
  21.  
  22.  
  23. #include <ft2build.h>
  24. #include FT_INTERNAL_TRUETYPE_TYPES_H
  25. #include FT_INTERNAL_VALIDATE_H
  26. #include FT_SERVICE_TT_CMAP_H
  27.  
  28. FT_BEGIN_HEADER
  29.  
  30.  
  31. #define TT_CMAP_FLAG_UNSORTED     1
  32. #define TT_CMAP_FLAG_OVERLAPPING  2
  33.  
  34.   typedef struct  TT_CMapRec_
  35.   {
  36.     FT_CMapRec  cmap;
  37.     FT_Byte*    data;           /* pointer to in-memory cmap table */
  38.     FT_Int      flags;          /* for format 4 only               */
  39.  
  40.   } TT_CMapRec, *TT_CMap;
  41.  
  42.   typedef const struct TT_CMap_ClassRec_*  TT_CMap_Class;
  43.  
  44.  
  45.   typedef FT_Error
  46.   (*TT_CMap_ValidateFunc)( FT_Byte*      data,
  47.                            FT_Validator  valid );
  48.  
  49.   typedef struct  TT_CMap_ClassRec_
  50.   {
  51.     FT_CMap_ClassRec      clazz;
  52.     FT_UInt               format;
  53.     TT_CMap_ValidateFunc  validate;
  54.     TT_CMap_Info_GetFunc  get_cmap_info;
  55.  
  56.   } TT_CMap_ClassRec;
  57.  
  58.  
  59. #ifndef FT_CONFIG_OPTION_PIC
  60.  
  61. #define FT_DEFINE_TT_CMAP( class_,             \
  62.                            size_,              \
  63.                            init_,              \
  64.                            done_,              \
  65.                            char_index_,        \
  66.                            char_next_,         \
  67.                            char_var_index_,    \
  68.                            char_var_default_,  \
  69.                            variant_list_,      \
  70.                            charvariant_list_,  \
  71.                            variantchar_list_,  \
  72.                            format_,            \
  73.                            validate_,          \
  74.                            get_cmap_info_ )    \
  75.   FT_CALLBACK_TABLE_DEF                        \
  76.   const TT_CMap_ClassRec  class_ =             \
  77.   {                                            \
  78.     { size_,                                   \
  79.       init_,                                   \
  80.       done_,                                   \
  81.       char_index_,                             \
  82.       char_next_,                              \
  83.       char_var_index_,                         \
  84.       char_var_default_,                       \
  85.       variant_list_,                           \
  86.       charvariant_list_,                       \
  87.       variantchar_list_                        \
  88.     },                                         \
  89.                                                \
  90.     format_,                                   \
  91.     validate_,                                 \
  92.     get_cmap_info_                             \
  93.   };
  94.  
  95. #else /* FT_CONFIG_OPTION_PIC */
  96.  
  97. #define FT_DEFINE_TT_CMAP( class_,                      \
  98.                            size_,                       \
  99.                            init_,                       \
  100.                            done_,                       \
  101.                            char_index_,                 \
  102.                            char_next_,                  \
  103.                            char_var_index_,             \
  104.                            char_var_default_,           \
  105.                            variant_list_,               \
  106.                            charvariant_list_,           \
  107.                            variantchar_list_,           \
  108.                            format_,                     \
  109.                            validate_,                   \
  110.                            get_cmap_info_ )             \
  111.   void                                                  \
  112.   FT_Init_Class_ ## class_( TT_CMap_ClassRec*  clazz )  \
  113.   {                                                     \
  114.     clazz->clazz.size             = size_;              \
  115.     clazz->clazz.init             = init_;              \
  116.     clazz->clazz.done             = done_;              \
  117.     clazz->clazz.char_index       = char_index_;        \
  118.     clazz->clazz.char_next        = char_next_;         \
  119.     clazz->clazz.char_var_index   = char_var_index_;    \
  120.     clazz->clazz.char_var_default = char_var_default_;  \
  121.     clazz->clazz.variant_list     = variant_list_;      \
  122.     clazz->clazz.charvariant_list = charvariant_list_;  \
  123.     clazz->clazz.variantchar_list = variantchar_list_;  \
  124.     clazz->format                 = format_;            \
  125.     clazz->validate               = validate_;          \
  126.     clazz->get_cmap_info          = get_cmap_info_;     \
  127.   }
  128.  
  129. #endif /* FT_CONFIG_OPTION_PIC */
  130.  
  131.  
  132.   typedef struct  TT_ValidatorRec_
  133.   {
  134.     FT_ValidatorRec  validator;
  135.     FT_UInt          num_glyphs;
  136.  
  137.   } TT_ValidatorRec, *TT_Validator;
  138.  
  139.  
  140. #define TT_VALIDATOR( x )          ( (TT_Validator)( x ) )
  141. #define TT_VALID_GLYPH_COUNT( x )  TT_VALIDATOR( x )->num_glyphs
  142.  
  143.  
  144.   FT_LOCAL( FT_Error )
  145.   tt_face_build_cmaps( TT_Face  face );
  146.  
  147.   /* used in tt-cmaps service */
  148.   FT_LOCAL( FT_Error )
  149.   tt_get_cmap_info( FT_CharMap    charmap,
  150.                     TT_CMapInfo  *cmap_info );
  151.  
  152.  
  153. FT_END_HEADER
  154.  
  155. #endif /* __TTCMAP_H__ */
  156.  
  157.  
  158. /* END */
  159.