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