1 /***************************************************************************/
5 /* The FreeType PostScript charmap service (specification). */
7 /* Copyright 2003, 2006, 2009, 2012 by */
8 /* David Turner, Robert Wilhelm, and Werner Lemberg. */
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. */
16 /***************************************************************************/
19 #ifndef __SVPSCMAP_H__
20 #define __SVPSCMAP_H__
22 #include FT_INTERNAL_OBJECTS_H
28 #define FT_SERVICE_ID_POSTSCRIPT_CMAPS "postscript-cmaps"
32 * Adobe glyph name to unicode value.
35 (*PS_Unicode_ValueFunc
)( const char* glyph_name
);
38 * Macintosh name id to glyph name. NULL if invalid index.
41 (*PS_Macintosh_NameFunc
)( FT_UInt name_index
);
44 * Adobe standard string ID to glyph name. NULL if invalid index.
47 (*PS_Adobe_Std_StringsFunc
)( FT_UInt string_index
);
51 * Simple unicode -> glyph index charmap built from font glyph names
54 typedef struct PS_UniMap_
56 FT_UInt32 unicode
; /* bit 31 set: is glyph variant */
62 typedef struct PS_UnicodesRec_
* PS_Unicodes
;
64 typedef struct PS_UnicodesRec_
74 * A function which returns a glyph name for a given index. Returns
75 * NULL if invalid index.
78 (*PS_GetGlyphNameFunc
)( FT_Pointer data
,
79 FT_UInt string_index
);
82 * A function used to release the glyph name returned by
83 * PS_GetGlyphNameFunc, when needed
86 (*PS_FreeGlyphNameFunc
)( FT_Pointer data
,
90 (*PS_Unicodes_InitFunc
)( FT_Memory memory
,
93 PS_GetGlyphNameFunc get_glyph_name
,
94 PS_FreeGlyphNameFunc free_glyph_name
,
95 FT_Pointer glyph_data
);
98 (*PS_Unicodes_CharIndexFunc
)( PS_Unicodes unicodes
,
102 (*PS_Unicodes_CharNextFunc
)( PS_Unicodes unicodes
,
103 FT_UInt32
*unicode
);
106 FT_DEFINE_SERVICE( PsCMaps
)
108 PS_Unicode_ValueFunc unicode_value
;
110 PS_Unicodes_InitFunc unicodes_init
;
111 PS_Unicodes_CharIndexFunc unicodes_char_index
;
112 PS_Unicodes_CharNextFunc unicodes_char_next
;
114 PS_Macintosh_NameFunc macintosh_name
;
115 PS_Adobe_Std_StringsFunc adobe_std_strings
;
116 const unsigned short* adobe_std_encoding
;
117 const unsigned short* adobe_expert_encoding
;
121 #ifndef FT_CONFIG_OPTION_PIC
123 #define FT_DEFINE_SERVICE_PSCMAPSREC( class_, \
126 unicodes_char_index_, \
127 unicodes_char_next_, \
129 adobe_std_strings_, \
130 adobe_std_encoding_, \
131 adobe_expert_encoding_ ) \
132 static const FT_Service_PsCMapsRec class_ = \
134 unicode_value_, unicodes_init_, \
135 unicodes_char_index_, unicodes_char_next_, macintosh_name_, \
136 adobe_std_strings_, adobe_std_encoding_, adobe_expert_encoding_ \
139 #else /* FT_CONFIG_OPTION_PIC */
141 #define FT_DEFINE_SERVICE_PSCMAPSREC( class_, \
144 unicodes_char_index_, \
145 unicodes_char_next_, \
147 adobe_std_strings_, \
148 adobe_std_encoding_, \
149 adobe_expert_encoding_ ) \
151 FT_Init_Class_ ## class_( FT_Library library, \
152 FT_Service_PsCMapsRec* clazz ) \
154 FT_UNUSED( library ); \
156 clazz->unicode_value = unicode_value_; \
157 clazz->unicodes_init = unicodes_init_; \
158 clazz->unicodes_char_index = unicodes_char_index_; \
159 clazz->unicodes_char_next = unicodes_char_next_; \
160 clazz->macintosh_name = macintosh_name_; \
161 clazz->adobe_std_strings = adobe_std_strings_; \
162 clazz->adobe_std_encoding = adobe_std_encoding_; \
163 clazz->adobe_expert_encoding = adobe_expert_encoding_; \
166 #endif /* FT_CONFIG_OPTION_PIC */
174 #endif /* __SVPSCMAP_H__ */