1 /***************************************************************************/ 2 /* */ 3 /* svttcmap.h */ 4 /* */ 5 /* The FreeType TrueType/sfnt cmap extra information service. */ 6 /* */ 7 /* Copyright 2003-2018 by */ 8 /* Masatake YAMATO, Redhat K.K., */ 9 /* David Turner, Robert Wilhelm, and Werner Lemberg. */ 10 /* */ 11 /* This file is part of the FreeType project, and may only be used, */ 12 /* modified, and distributed under the terms of the FreeType project */ 13 /* license, LICENSE.TXT. By continuing to use, modify, or distribute */ 14 /* this file you indicate that you have read the license and */ 15 /* understand and accept it fully. */ 16 /* */ 17 /***************************************************************************/ 18 19 /* Development of this service is support of 20 Information-technology Promotion Agency, Japan. */ 21 22 #ifndef SVTTCMAP_H_ 23 #define SVTTCMAP_H_ 24 25 #include FT_INTERNAL_SERVICE_H 26 #include FT_TRUETYPE_TABLES_H 27 28 29 FT_BEGIN_HEADER 30 31 32 #define FT_SERVICE_ID_TT_CMAP "tt-cmaps" 33 34 35 /*************************************************************************/ 36 /* */ 37 /* <Struct> */ 38 /* TT_CMapInfo */ 39 /* */ 40 /* <Description> */ 41 /* A structure used to store TrueType/sfnt specific cmap information */ 42 /* which is not covered by the generic @FT_CharMap structure. This */ 43 /* structure can be accessed with the @FT_Get_TT_CMap_Info function. */ 44 /* */ 45 /* <Fields> */ 46 /* language :: */ 47 /* The language ID used in Mac fonts. Definitions of values are in */ 48 /* `ttnameid.h'. */ 49 /* */ 50 /* format :: */ 51 /* The cmap format. OpenType 1.6 defines the formats 0 (byte */ 52 /* encoding table), 2~(high-byte mapping through table), 4~(segment */ 53 /* mapping to delta values), 6~(trimmed table mapping), 8~(mixed */ 54 /* 16-bit and 32-bit coverage), 10~(trimmed array), 12~(segmented */ 55 /* coverage), 13~(last resort font), and 14 (Unicode Variation */ 56 /* Sequences). */ 57 /* */ 58 typedef struct TT_CMapInfo_ 59 { 60 FT_ULong language; 61 FT_Long format; 62 63 } TT_CMapInfo; 64 65 66 typedef FT_Error 67 (*TT_CMap_Info_GetFunc)( FT_CharMap charmap, 68 TT_CMapInfo *cmap_info ); 69 70 FT_DEFINE_SERVICE(TTCMaps)71 FT_DEFINE_SERVICE( TTCMaps ) 72 { 73 TT_CMap_Info_GetFunc get_cmap_info; 74 }; 75 76 #ifndef FT_CONFIG_OPTION_PIC 77 78 #define FT_DEFINE_SERVICE_TTCMAPSREC( class_, get_cmap_info_ ) \ 79 static const FT_Service_TTCMapsRec class_ = \ 80 { \ 81 get_cmap_info_ \ 82 }; 83 84 #else /* FT_CONFIG_OPTION_PIC */ 85 86 #define FT_DEFINE_SERVICE_TTCMAPSREC( class_, get_cmap_info_ ) \ 87 void \ 88 FT_Init_Class_ ## class_( FT_Library library, \ 89 FT_Service_TTCMapsRec* clazz ) \ 90 { \ 91 FT_UNUSED( library ); \ 92 \ 93 clazz->get_cmap_info = get_cmap_info_; \ 94 } 95 96 #endif /* FT_CONFIG_OPTION_PIC */ 97 98 /* */ 99 100 101 FT_END_HEADER 102 103 #endif /* SVTTCMAP_H_ */ 104 105 106 /* END */ 107