00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef __SVPSCMAP_H__
00020 #define __SVPSCMAP_H__
00021
00022 #include FT_INTERNAL_OBJECTS_H
00023
00024
00025 FT_BEGIN_HEADER
00026
00027
00028 #define FT_SERVICE_ID_POSTSCRIPT_CMAPS "postscript-cmaps"
00029
00030
00031
00032
00033
00034 typedef FT_UInt32
00035 (*PS_Unicode_ValueFunc)( const char* glyph_name );
00036
00037
00038
00039
00040 typedef const char*
00041 (*PS_Macintosh_NameFunc)( FT_UInt name_index );
00042
00043
00044
00045
00046 typedef const char*
00047 (*PS_Adobe_Std_StringsFunc)( FT_UInt string_index );
00048
00049
00050
00051
00052
00053
00054 typedef struct PS_UniMap_
00055 {
00056 FT_UInt32 unicode;
00057 FT_UInt glyph_index;
00058
00059 } PS_UniMap;
00060
00061
00062 typedef struct PS_UnicodesRec_* PS_Unicodes;
00063
00064 typedef struct PS_UnicodesRec_
00065 {
00066 FT_CMapRec cmap;
00067 FT_UInt num_maps;
00068 PS_UniMap* maps;
00069
00070 } PS_UnicodesRec;
00071
00072
00073
00074
00075
00076
00077 typedef const char*
00078 (*PS_GetGlyphNameFunc)( FT_Pointer data,
00079 FT_UInt string_index );
00080
00081
00082
00083
00084
00085 typedef void
00086 (*PS_FreeGlyphNameFunc)( FT_Pointer data,
00087 const char* name );
00088
00089 typedef FT_Error
00090 (*PS_Unicodes_InitFunc)( FT_Memory memory,
00091 PS_Unicodes unicodes,
00092 FT_UInt num_glyphs,
00093 PS_GetGlyphNameFunc get_glyph_name,
00094 PS_FreeGlyphNameFunc free_glyph_name,
00095 FT_Pointer glyph_data );
00096
00097 typedef FT_UInt
00098 (*PS_Unicodes_CharIndexFunc)( PS_Unicodes unicodes,
00099 FT_UInt32 unicode );
00100
00101 typedef FT_UInt32
00102 (*PS_Unicodes_CharNextFunc)( PS_Unicodes unicodes,
00103 FT_UInt32 *unicode );
00104
00105
00106 FT_DEFINE_SERVICE( PsCMaps )
00107 {
00108 PS_Unicode_ValueFunc unicode_value;
00109
00110 PS_Unicodes_InitFunc unicodes_init;
00111 PS_Unicodes_CharIndexFunc unicodes_char_index;
00112 PS_Unicodes_CharNextFunc unicodes_char_next;
00113
00114 PS_Macintosh_NameFunc macintosh_name;
00115 PS_Adobe_Std_StringsFunc adobe_std_strings;
00116 const unsigned short* adobe_std_encoding;
00117 const unsigned short* adobe_expert_encoding;
00118 };
00119
00120
00121 #ifndef FT_CONFIG_OPTION_PIC
00122
00123 #define FT_DEFINE_SERVICE_PSCMAPSREC(class_, unicode_value_, unicodes_init_, \
00124 unicodes_char_index_, unicodes_char_next_, macintosh_name_, \
00125 adobe_std_strings_, adobe_std_encoding_, adobe_expert_encoding_) \
00126 static const FT_Service_PsCMapsRec class_ = \
00127 { \
00128 unicode_value_, unicodes_init_, \
00129 unicodes_char_index_, unicodes_char_next_, macintosh_name_, \
00130 adobe_std_strings_, adobe_std_encoding_, adobe_expert_encoding_ \
00131 };
00132
00133 #else
00134
00135 #define FT_DEFINE_SERVICE_PSCMAPSREC(class_, unicode_value_, unicodes_init_, \
00136 unicodes_char_index_, unicodes_char_next_, macintosh_name_, \
00137 adobe_std_strings_, adobe_std_encoding_, adobe_expert_encoding_) \
00138 void \
00139 FT_Init_Class_##class_( FT_Library library, \
00140 FT_Service_PsCMapsRec* clazz) \
00141 { \
00142 FT_UNUSED(library); \
00143 clazz->unicode_value = unicode_value_; \
00144 clazz->unicodes_init = unicodes_init_; \
00145 clazz->unicodes_char_index = unicodes_char_index_; \
00146 clazz->unicodes_char_next = unicodes_char_next_; \
00147 clazz->macintosh_name = macintosh_name_; \
00148 clazz->adobe_std_strings = adobe_std_strings_; \
00149 clazz->adobe_std_encoding = adobe_std_encoding_; \
00150 clazz->adobe_expert_encoding = adobe_expert_encoding_; \
00151 }
00152
00153 #endif
00154
00155
00156
00157
00158 FT_END_HEADER
00159
00160
00161 #endif
00162
00163
00164