1 /**************************************************************************** 2 * 3 * svttcmap.h 4 * 5 * The FreeType TrueType/sfnt cmap extra information service. 6 * 7 * Copyright (C) 2003-2020 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 <freetype/internal/ftserv.h> 26 #include <freetype/tttables.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 encoding 52 * table), 2~(high-byte mapping through table), 4~(segment mapping to 53 * delta values), 6~(trimmed table mapping), 8~(mixed 16-bit and 32-bit 54 * coverage), 10~(trimmed array), 12~(segmented coverage), 13~(last 55 * resort font), and 14 (Unicode Variation Sequences). 56 */ 57 typedef struct TT_CMapInfo_ 58 { 59 FT_ULong language; 60 FT_Long format; 61 62 } TT_CMapInfo; 63 64 65 typedef FT_Error 66 (*TT_CMap_Info_GetFunc)( FT_CharMap charmap, 67 TT_CMapInfo *cmap_info ); 68 69 FT_DEFINE_SERVICE(TTCMaps)70 FT_DEFINE_SERVICE( TTCMaps ) 71 { 72 TT_CMap_Info_GetFunc get_cmap_info; 73 }; 74 75 76 #define FT_DEFINE_SERVICE_TTCMAPSREC( class_, get_cmap_info_ ) \ 77 static const FT_Service_TTCMapsRec class_ = \ 78 { \ 79 get_cmap_info_ \ 80 }; 81 82 /* */ 83 84 85 FT_END_HEADER 86 87 #endif /* SVTTCMAP_H_ */ 88 89 90 /* END */ 91