OLD | NEW |
| (Empty) |
1 /***************************************************************************/ | |
2 /* */ | |
3 /* svpscmap.h */ | |
4 /* */ | |
5 /* The FreeType PostScript charmap service (specification). */ | |
6 /* */ | |
7 /* Copyright 2003, 2006, 2009, 2012 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 #include FT_INTERNAL_OBJECTS_H | |
23 | |
24 | |
25 FT_BEGIN_HEADER | |
26 | |
27 | |
28 #define FT_SERVICE_ID_POSTSCRIPT_CMAPS "postscript-cmaps" | |
29 | |
30 | |
31 /* | |
32 * Adobe glyph name to unicode value. | |
33 */ | |
34 typedef FT_UInt32 | |
35 (*PS_Unicode_ValueFunc)( const char* glyph_name ); | |
36 | |
37 /* | |
38 * Macintosh name id to glyph name. NULL if invalid index. | |
39 */ | |
40 typedef const char* | |
41 (*PS_Macintosh_NameFunc)( FT_UInt name_index ); | |
42 | |
43 /* | |
44 * Adobe standard string ID to glyph name. NULL if invalid index. | |
45 */ | |
46 typedef const char* | |
47 (*PS_Adobe_Std_StringsFunc)( FT_UInt string_index ); | |
48 | |
49 | |
50 /* | |
51 * Simple unicode -> glyph index charmap built from font glyph names | |
52 * table. | |
53 */ | |
54 typedef struct PS_UniMap_ | |
55 { | |
56 FT_UInt32 unicode; /* bit 31 set: is glyph variant */ | |
57 FT_UInt glyph_index; | |
58 | |
59 } PS_UniMap; | |
60 | |
61 | |
62 typedef struct PS_UnicodesRec_* PS_Unicodes; | |
63 | |
64 typedef struct PS_UnicodesRec_ | |
65 { | |
66 FT_CMapRec cmap; | |
67 FT_UInt num_maps; | |
68 PS_UniMap* maps; | |
69 | |
70 } PS_UnicodesRec; | |
71 | |
72 | |
73 /* | |
74 * A function which returns a glyph name for a given index. Returns | |
75 * NULL if invalid index. | |
76 */ | |
77 typedef const char* | |
78 (*PS_GetGlyphNameFunc)( FT_Pointer data, | |
79 FT_UInt string_index ); | |
80 | |
81 /* | |
82 * A function used to release the glyph name returned by | |
83 * PS_GetGlyphNameFunc, when needed | |
84 */ | |
85 typedef void | |
86 (*PS_FreeGlyphNameFunc)( FT_Pointer data, | |
87 const char* name ); | |
88 | |
89 typedef FT_Error | |
90 (*PS_Unicodes_InitFunc)( FT_Memory memory, | |
91 PS_Unicodes unicodes, | |
92 FT_UInt num_glyphs, | |
93 PS_GetGlyphNameFunc get_glyph_name, | |
94 PS_FreeGlyphNameFunc free_glyph_name, | |
95 FT_Pointer glyph_data ); | |
96 | |
97 typedef FT_UInt | |
98 (*PS_Unicodes_CharIndexFunc)( PS_Unicodes unicodes, | |
99 FT_UInt32 unicode ); | |
100 | |
101 typedef FT_UInt32 | |
102 (*PS_Unicodes_CharNextFunc)( PS_Unicodes unicodes, | |
103 FT_UInt32 *unicode ); | |
104 | |
105 | |
106 FT_DEFINE_SERVICE( PsCMaps ) | |
107 { | |
108 PS_Unicode_ValueFunc unicode_value; | |
109 | |
110 PS_Unicodes_InitFunc unicodes_init; | |
111 PS_Unicodes_CharIndexFunc unicodes_char_index; | |
112 PS_Unicodes_CharNextFunc unicodes_char_next; | |
113 | |
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; | |
118 }; | |
119 | |
120 | |
121 #ifndef FT_CONFIG_OPTION_PIC | |
122 | |
123 #define FT_DEFINE_SERVICE_PSCMAPSREC( class_, \ | |
124 unicode_value_, \ | |
125 unicodes_init_, \ | |
126 unicodes_char_index_, \ | |
127 unicodes_char_next_, \ | |
128 macintosh_name_, \ | |
129 adobe_std_strings_, \ | |
130 adobe_std_encoding_, \ | |
131 adobe_expert_encoding_ ) \ | |
132 static const FT_Service_PsCMapsRec class_ = \ | |
133 { \ | |
134 unicode_value_, unicodes_init_, \ | |
135 unicodes_char_index_, unicodes_char_next_, macintosh_name_, \ | |
136 adobe_std_strings_, adobe_std_encoding_, adobe_expert_encoding_ \ | |
137 }; | |
138 | |
139 #else /* FT_CONFIG_OPTION_PIC */ | |
140 | |
141 #define FT_DEFINE_SERVICE_PSCMAPSREC( class_, \ | |
142 unicode_value_, \ | |
143 unicodes_init_, \ | |
144 unicodes_char_index_, \ | |
145 unicodes_char_next_, \ | |
146 macintosh_name_, \ | |
147 adobe_std_strings_, \ | |
148 adobe_std_encoding_, \ | |
149 adobe_expert_encoding_ ) \ | |
150 void \ | |
151 FT_Init_Class_ ## class_( FT_Library library, \ | |
152 FT_Service_PsCMapsRec* clazz ) \ | |
153 { \ | |
154 FT_UNUSED( library ); \ | |
155 \ | |
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_; \ | |
164 } | |
165 | |
166 #endif /* FT_CONFIG_OPTION_PIC */ | |
167 | |
168 /* */ | |
169 | |
170 | |
171 FT_END_HEADER | |
172 | |
173 | |
174 #endif /* __SVPSCMAP_H__ */ | |
175 | |
176 | |
177 /* END */ | |
OLD | NEW |