1 /***************************************************************************/ 2 /* */ 3 /* svpscmap.h */ 4 /* */ 5 /* The FreeType PostScript charmap service (specification). */ 6 /* */ 7 /* Copyright 2003 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 __SVPSCMAP_H__ 20 #define __SVPSCMAP_H__ 21 22 23 FT_BEGIN_HEADER 24 25 26 #define FT_SERVICE_ID_POSTSCRIPT_CMAPS "postscript-cmaps" 27 28 29 /* 30 * Adobe glyph name to unicode value 31 */ 32 typedef FT_UInt32 33 (*PS_Unicode_ValueFunc)( const char* glyph_name ); 34 35 /* 36 * Unicode value to Adobe glyph name index. 0xFFFF if not found. 37 */ 38 typedef FT_UInt 39 (*PS_Unicode_Index_Func)( FT_UInt num_glyphs, 40 const char** glyph_names, 41 FT_ULong unicode ); 42 43 /* 44 * Macintosh name id to glyph name. NULL if invalid index. 45 */ 46 typedef const char* 47 (*PS_Macintosh_Name_Func)( FT_UInt name_index ); 48 49 /* 50 * Adobe standard string ID to glyph name. NULL if invalid index. 51 */ 52 typedef const char* 53 (*PS_Adobe_Std_Strings_Func)( FT_UInt string_index ); 54 55 /* 56 * Simple unicode -> glyph index charmap built from font glyph names 57 * table. 58 */ 59 typedef struct PS_UniMap_ 60 { 61 FT_UInt unicode; 62 FT_UInt glyph_index; 63 64 } PS_UniMap; 65 66 67 typedef struct PS_Unicodes_ 68 { 69 FT_UInt num_maps; 70 PS_UniMap* maps; 71 72 } PS_Unicodes; 73 74 75 typedef FT_Error 76 (*PS_Unicodes_InitFunc)( FT_Memory memory, 77 FT_UInt num_glyphs, 78 const char** glyph_names, 79 PS_Unicodes* unicodes ); 80 81 typedef FT_UInt 82 (*PS_Unicodes_CharIndexFunc)( PS_Unicodes* unicodes, 83 FT_UInt unicode ); 84 85 typedef FT_ULong 86 (*PS_Unicodes_CharNextFunc)( PS_Unicodes* unicodes, 87 FT_ULong unicode ); 88 89 FT_DEFINE_SERVICE(PsCMaps)90 FT_DEFINE_SERVICE( PsCMaps ) 91 { 92 PS_Unicode_ValueFunc unicode_value; 93 94 PS_Unicodes_InitFunc unicodes_init; 95 PS_Unicodes_CharIndexFunc unicodes_char_index; 96 PS_Unicodes_CharNextFunc unicodes_char_next; 97 98 PS_Macintosh_Name_Func macintosh_name; 99 PS_Adobe_Std_Strings_Func adobe_std_strings; 100 const unsigned short* adobe_std_encoding; 101 const unsigned short* adobe_expert_encoding; 102 }; 103 104 /* */ 105 106 107 FT_END_HEADER 108 109 110 #endif /* __SVPSCMAP_H__ */ 111 112 113 /* END */ 114