(root)/
freetype-2.13.2/
src/
sfnt/
ttcmap.h
       1  /****************************************************************************
       2   *
       3   * ttcmap.h
       4   *
       5   *   TrueType character mapping table (cmap) support (specification).
       6   *
       7   * Copyright (C) 2002-2023 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 <freetype/internal/tttypes.h>
      24  #include <freetype/internal/ftvalid.h>
      25  #include <freetype/internal/services/svttcmap.h>
      26  
      27  FT_BEGIN_HEADER
      28  
      29  
      30  #define TT_CMAP_FLAG_UNSORTED     1
      31  #define TT_CMAP_FLAG_OVERLAPPING  2
      32  
      33    typedef struct  TT_CMapRec_
      34    {
      35      FT_CMapRec  cmap;
      36      FT_Byte*    data;           /* pointer to in-memory cmap table */
      37      FT_Int      flags;          /* for format 4 only               */
      38  
      39    } TT_CMapRec, *TT_CMap;
      40  
      41    typedef const struct TT_CMap_ClassRec_*  TT_CMap_Class;
      42  
      43  
      44    typedef FT_Error
      45    (*TT_CMap_ValidateFunc)( FT_Byte*      data,
      46                             FT_Validator  valid );
      47  
      48    typedef struct  TT_CMap_ClassRec_
      49    {
      50      FT_CMap_ClassRec      clazz;
      51      FT_UInt               format;
      52      TT_CMap_ValidateFunc  validate;
      53      TT_CMap_Info_GetFunc  get_cmap_info;
      54  
      55    } TT_CMap_ClassRec;
      56  
      57  
      58  #define FT_DEFINE_TT_CMAP( class_,             \
      59                             size_,              \
      60                             init_,              \
      61                             done_,              \
      62                             char_index_,        \
      63                             char_next_,         \
      64                             char_var_index_,    \
      65                             char_var_default_,  \
      66                             variant_list_,      \
      67                             charvariant_list_,  \
      68                             variantchar_list_,  \
      69                             format_,            \
      70                             validate_,          \
      71                             get_cmap_info_ )    \
      72    FT_CALLBACK_TABLE_DEF                        \
      73    const TT_CMap_ClassRec  class_ =             \
      74    {                                            \
      75      { size_,                                   \
      76        init_,                                   \
      77        done_,                                   \
      78        char_index_,                             \
      79        char_next_,                              \
      80        char_var_index_,                         \
      81        char_var_default_,                       \
      82        variant_list_,                           \
      83        charvariant_list_,                       \
      84        variantchar_list_                        \
      85      },                                         \
      86                                                 \
      87      format_,                                   \
      88      validate_,                                 \
      89      get_cmap_info_                             \
      90    };
      91  
      92  
      93  #undef  TTCMAPCITEM
      94  #define TTCMAPCITEM( a )  FT_CALLBACK_TABLE  const TT_CMap_ClassRec  a;
      95  #include "ttcmapc.h"
      96  
      97  
      98    typedef struct  TT_ValidatorRec_
      99    {
     100      FT_ValidatorRec  validator;
     101      FT_UInt          num_glyphs;
     102  
     103    } TT_ValidatorRec, *TT_Validator;
     104  
     105  
     106  #define TT_VALIDATOR( x )          ( (TT_Validator)( x ) )
     107  #define TT_VALID_GLYPH_COUNT( x )  TT_VALIDATOR( x )->num_glyphs
     108  
     109  
     110    FT_CALLBACK_TABLE const TT_CMap_ClassRec  tt_cmap_unicode_class_rec;
     111  
     112    FT_LOCAL( FT_Error )
     113    tt_face_build_cmaps( TT_Face  face );
     114  
     115    /* used in tt-cmaps service */
     116    FT_LOCAL( FT_Error )
     117    tt_get_cmap_info( FT_CharMap    charmap,
     118                      TT_CMapInfo  *cmap_info );
     119  
     120  
     121  FT_END_HEADER
     122  
     123  #endif /* TTCMAP_H_ */
     124  
     125  
     126  /* END */