Home | History | Annotate | Download | only in sfnt
      1 /****************************************************************************
      2  *
      3  * ttcmap.h
      4  *
      5  *   TrueType character mapping table (cmap) support (specification).
      6  *
      7  * Copyright 2002-2018 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 #define FT_DEFINE_TT_CMAP( class_,             \
     60                            size_,              \
     61                            init_,              \
     62                            done_,              \
     63                            char_index_,        \
     64                            char_next_,         \
     65                            char_var_index_,    \
     66                            char_var_default_,  \
     67                            variant_list_,      \
     68                            charvariant_list_,  \
     69                            variantchar_list_,  \
     70                            format_,            \
     71                            validate_,          \
     72                            get_cmap_info_ )    \
     73   FT_CALLBACK_TABLE_DEF                        \
     74   const TT_CMap_ClassRec  class_ =             \
     75   {                                            \
     76     { size_,                                   \
     77       init_,                                   \
     78       done_,                                   \
     79       char_index_,                             \
     80       char_next_,                              \
     81       char_var_index_,                         \
     82       char_var_default_,                       \
     83       variant_list_,                           \
     84       charvariant_list_,                       \
     85       variantchar_list_                        \
     86     },                                         \
     87                                                \
     88     format_,                                   \
     89     validate_,                                 \
     90     get_cmap_info_                             \
     91   };
     92 
     93 
     94   typedef struct  TT_ValidatorRec_
     95   {
     96     FT_ValidatorRec  validator;
     97     FT_UInt          num_glyphs;
     98 
     99   } TT_ValidatorRec, *TT_Validator;
    100 
    101 
    102 #define TT_VALIDATOR( x )          ( (TT_Validator)( x ) )
    103 #define TT_VALID_GLYPH_COUNT( x )  TT_VALIDATOR( x )->num_glyphs
    104 
    105 
    106   FT_CALLBACK_TABLE const TT_CMap_ClassRec  tt_cmap_unicode_class_rec;
    107 
    108   FT_LOCAL( FT_Error )
    109   tt_face_build_cmaps( TT_Face  face );
    110 
    111   /* used in tt-cmaps service */
    112   FT_LOCAL( FT_Error )
    113   tt_get_cmap_info( FT_CharMap    charmap,
    114                     TT_CMapInfo  *cmap_info );
    115 
    116 
    117 FT_END_HEADER
    118 
    119 #endif /* TTCMAP_H_ */
    120 
    121 
    122 /* END */
    123