1 /**************************************************************************** 2 * 3 * ttcmap.h 4 * 5 * TrueType character mapping table (cmap) support (specification). 6 * 7 * Copyright (C) 2002-2020 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 */ 127