jpayne@69
|
1 /*
|
jpayne@69
|
2 * Copyright © 2009 Red Hat, Inc.
|
jpayne@69
|
3 * Copyright © 2011 Codethink Limited
|
jpayne@69
|
4 * Copyright © 2011,2012 Google, Inc.
|
jpayne@69
|
5 *
|
jpayne@69
|
6 * This is part of HarfBuzz, a text shaping library.
|
jpayne@69
|
7 *
|
jpayne@69
|
8 * Permission is hereby granted, without written agreement and without
|
jpayne@69
|
9 * license or royalty fees, to use, copy, modify, and distribute this
|
jpayne@69
|
10 * software and its documentation for any purpose, provided that the
|
jpayne@69
|
11 * above copyright notice and the following two paragraphs appear in
|
jpayne@69
|
12 * all copies of this software.
|
jpayne@69
|
13 *
|
jpayne@69
|
14 * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
|
jpayne@69
|
15 * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
|
jpayne@69
|
16 * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
|
jpayne@69
|
17 * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
|
jpayne@69
|
18 * DAMAGE.
|
jpayne@69
|
19 *
|
jpayne@69
|
20 * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
|
jpayne@69
|
21 * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
jpayne@69
|
22 * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
|
jpayne@69
|
23 * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
|
jpayne@69
|
24 * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
|
jpayne@69
|
25 *
|
jpayne@69
|
26 * Red Hat Author(s): Behdad Esfahbod
|
jpayne@69
|
27 * Codethink Author(s): Ryan Lortie
|
jpayne@69
|
28 * Google Author(s): Behdad Esfahbod
|
jpayne@69
|
29 */
|
jpayne@69
|
30
|
jpayne@69
|
31 #ifndef HB_H_IN
|
jpayne@69
|
32 #error "Include <hb.h> instead."
|
jpayne@69
|
33 #endif
|
jpayne@69
|
34
|
jpayne@69
|
35 #ifndef HB_UNICODE_H
|
jpayne@69
|
36 #define HB_UNICODE_H
|
jpayne@69
|
37
|
jpayne@69
|
38 #include "hb-common.h"
|
jpayne@69
|
39
|
jpayne@69
|
40 HB_BEGIN_DECLS
|
jpayne@69
|
41
|
jpayne@69
|
42
|
jpayne@69
|
43 /**
|
jpayne@69
|
44 * HB_UNICODE_MAX
|
jpayne@69
|
45 *
|
jpayne@69
|
46 * Since: 1.9.0
|
jpayne@69
|
47 **/
|
jpayne@69
|
48 #define HB_UNICODE_MAX 0x10FFFFu
|
jpayne@69
|
49
|
jpayne@69
|
50
|
jpayne@69
|
51 /* hb_unicode_general_category_t */
|
jpayne@69
|
52
|
jpayne@69
|
53 /* Unicode Character Database property: General_Category (gc) */
|
jpayne@69
|
54 typedef enum
|
jpayne@69
|
55 {
|
jpayne@69
|
56 HB_UNICODE_GENERAL_CATEGORY_CONTROL, /* Cc */
|
jpayne@69
|
57 HB_UNICODE_GENERAL_CATEGORY_FORMAT, /* Cf */
|
jpayne@69
|
58 HB_UNICODE_GENERAL_CATEGORY_UNASSIGNED, /* Cn */
|
jpayne@69
|
59 HB_UNICODE_GENERAL_CATEGORY_PRIVATE_USE, /* Co */
|
jpayne@69
|
60 HB_UNICODE_GENERAL_CATEGORY_SURROGATE, /* Cs */
|
jpayne@69
|
61 HB_UNICODE_GENERAL_CATEGORY_LOWERCASE_LETTER, /* Ll */
|
jpayne@69
|
62 HB_UNICODE_GENERAL_CATEGORY_MODIFIER_LETTER, /* Lm */
|
jpayne@69
|
63 HB_UNICODE_GENERAL_CATEGORY_OTHER_LETTER, /* Lo */
|
jpayne@69
|
64 HB_UNICODE_GENERAL_CATEGORY_TITLECASE_LETTER, /* Lt */
|
jpayne@69
|
65 HB_UNICODE_GENERAL_CATEGORY_UPPERCASE_LETTER, /* Lu */
|
jpayne@69
|
66 HB_UNICODE_GENERAL_CATEGORY_SPACING_MARK, /* Mc */
|
jpayne@69
|
67 HB_UNICODE_GENERAL_CATEGORY_ENCLOSING_MARK, /* Me */
|
jpayne@69
|
68 HB_UNICODE_GENERAL_CATEGORY_NON_SPACING_MARK, /* Mn */
|
jpayne@69
|
69 HB_UNICODE_GENERAL_CATEGORY_DECIMAL_NUMBER, /* Nd */
|
jpayne@69
|
70 HB_UNICODE_GENERAL_CATEGORY_LETTER_NUMBER, /* Nl */
|
jpayne@69
|
71 HB_UNICODE_GENERAL_CATEGORY_OTHER_NUMBER, /* No */
|
jpayne@69
|
72 HB_UNICODE_GENERAL_CATEGORY_CONNECT_PUNCTUATION, /* Pc */
|
jpayne@69
|
73 HB_UNICODE_GENERAL_CATEGORY_DASH_PUNCTUATION, /* Pd */
|
jpayne@69
|
74 HB_UNICODE_GENERAL_CATEGORY_CLOSE_PUNCTUATION, /* Pe */
|
jpayne@69
|
75 HB_UNICODE_GENERAL_CATEGORY_FINAL_PUNCTUATION, /* Pf */
|
jpayne@69
|
76 HB_UNICODE_GENERAL_CATEGORY_INITIAL_PUNCTUATION, /* Pi */
|
jpayne@69
|
77 HB_UNICODE_GENERAL_CATEGORY_OTHER_PUNCTUATION, /* Po */
|
jpayne@69
|
78 HB_UNICODE_GENERAL_CATEGORY_OPEN_PUNCTUATION, /* Ps */
|
jpayne@69
|
79 HB_UNICODE_GENERAL_CATEGORY_CURRENCY_SYMBOL, /* Sc */
|
jpayne@69
|
80 HB_UNICODE_GENERAL_CATEGORY_MODIFIER_SYMBOL, /* Sk */
|
jpayne@69
|
81 HB_UNICODE_GENERAL_CATEGORY_MATH_SYMBOL, /* Sm */
|
jpayne@69
|
82 HB_UNICODE_GENERAL_CATEGORY_OTHER_SYMBOL, /* So */
|
jpayne@69
|
83 HB_UNICODE_GENERAL_CATEGORY_LINE_SEPARATOR, /* Zl */
|
jpayne@69
|
84 HB_UNICODE_GENERAL_CATEGORY_PARAGRAPH_SEPARATOR, /* Zp */
|
jpayne@69
|
85 HB_UNICODE_GENERAL_CATEGORY_SPACE_SEPARATOR /* Zs */
|
jpayne@69
|
86 } hb_unicode_general_category_t;
|
jpayne@69
|
87
|
jpayne@69
|
88 /* hb_unicode_combining_class_t */
|
jpayne@69
|
89
|
jpayne@69
|
90 /* Note: newer versions of Unicode may add new values. Clients should be ready to handle
|
jpayne@69
|
91 * any value in the 0..254 range being returned from hb_unicode_combining_class().
|
jpayne@69
|
92 */
|
jpayne@69
|
93
|
jpayne@69
|
94 /* Unicode Character Database property: Canonical_Combining_Class (ccc) */
|
jpayne@69
|
95 typedef enum
|
jpayne@69
|
96 {
|
jpayne@69
|
97 HB_UNICODE_COMBINING_CLASS_NOT_REORDERED = 0,
|
jpayne@69
|
98 HB_UNICODE_COMBINING_CLASS_OVERLAY = 1,
|
jpayne@69
|
99 HB_UNICODE_COMBINING_CLASS_NUKTA = 7,
|
jpayne@69
|
100 HB_UNICODE_COMBINING_CLASS_KANA_VOICING = 8,
|
jpayne@69
|
101 HB_UNICODE_COMBINING_CLASS_VIRAMA = 9,
|
jpayne@69
|
102
|
jpayne@69
|
103 /* Hebrew */
|
jpayne@69
|
104 HB_UNICODE_COMBINING_CLASS_CCC10 = 10,
|
jpayne@69
|
105 HB_UNICODE_COMBINING_CLASS_CCC11 = 11,
|
jpayne@69
|
106 HB_UNICODE_COMBINING_CLASS_CCC12 = 12,
|
jpayne@69
|
107 HB_UNICODE_COMBINING_CLASS_CCC13 = 13,
|
jpayne@69
|
108 HB_UNICODE_COMBINING_CLASS_CCC14 = 14,
|
jpayne@69
|
109 HB_UNICODE_COMBINING_CLASS_CCC15 = 15,
|
jpayne@69
|
110 HB_UNICODE_COMBINING_CLASS_CCC16 = 16,
|
jpayne@69
|
111 HB_UNICODE_COMBINING_CLASS_CCC17 = 17,
|
jpayne@69
|
112 HB_UNICODE_COMBINING_CLASS_CCC18 = 18,
|
jpayne@69
|
113 HB_UNICODE_COMBINING_CLASS_CCC19 = 19,
|
jpayne@69
|
114 HB_UNICODE_COMBINING_CLASS_CCC20 = 20,
|
jpayne@69
|
115 HB_UNICODE_COMBINING_CLASS_CCC21 = 21,
|
jpayne@69
|
116 HB_UNICODE_COMBINING_CLASS_CCC22 = 22,
|
jpayne@69
|
117 HB_UNICODE_COMBINING_CLASS_CCC23 = 23,
|
jpayne@69
|
118 HB_UNICODE_COMBINING_CLASS_CCC24 = 24,
|
jpayne@69
|
119 HB_UNICODE_COMBINING_CLASS_CCC25 = 25,
|
jpayne@69
|
120 HB_UNICODE_COMBINING_CLASS_CCC26 = 26,
|
jpayne@69
|
121
|
jpayne@69
|
122 /* Arabic */
|
jpayne@69
|
123 HB_UNICODE_COMBINING_CLASS_CCC27 = 27,
|
jpayne@69
|
124 HB_UNICODE_COMBINING_CLASS_CCC28 = 28,
|
jpayne@69
|
125 HB_UNICODE_COMBINING_CLASS_CCC29 = 29,
|
jpayne@69
|
126 HB_UNICODE_COMBINING_CLASS_CCC30 = 30,
|
jpayne@69
|
127 HB_UNICODE_COMBINING_CLASS_CCC31 = 31,
|
jpayne@69
|
128 HB_UNICODE_COMBINING_CLASS_CCC32 = 32,
|
jpayne@69
|
129 HB_UNICODE_COMBINING_CLASS_CCC33 = 33,
|
jpayne@69
|
130 HB_UNICODE_COMBINING_CLASS_CCC34 = 34,
|
jpayne@69
|
131 HB_UNICODE_COMBINING_CLASS_CCC35 = 35,
|
jpayne@69
|
132
|
jpayne@69
|
133 /* Syriac */
|
jpayne@69
|
134 HB_UNICODE_COMBINING_CLASS_CCC36 = 36,
|
jpayne@69
|
135
|
jpayne@69
|
136 /* Telugu */
|
jpayne@69
|
137 HB_UNICODE_COMBINING_CLASS_CCC84 = 84,
|
jpayne@69
|
138 HB_UNICODE_COMBINING_CLASS_CCC91 = 91,
|
jpayne@69
|
139
|
jpayne@69
|
140 /* Thai */
|
jpayne@69
|
141 HB_UNICODE_COMBINING_CLASS_CCC103 = 103,
|
jpayne@69
|
142 HB_UNICODE_COMBINING_CLASS_CCC107 = 107,
|
jpayne@69
|
143
|
jpayne@69
|
144 /* Lao */
|
jpayne@69
|
145 HB_UNICODE_COMBINING_CLASS_CCC118 = 118,
|
jpayne@69
|
146 HB_UNICODE_COMBINING_CLASS_CCC122 = 122,
|
jpayne@69
|
147
|
jpayne@69
|
148 /* Tibetan */
|
jpayne@69
|
149 HB_UNICODE_COMBINING_CLASS_CCC129 = 129,
|
jpayne@69
|
150 HB_UNICODE_COMBINING_CLASS_CCC130 = 130,
|
jpayne@69
|
151 HB_UNICODE_COMBINING_CLASS_CCC133 = 132,
|
jpayne@69
|
152
|
jpayne@69
|
153
|
jpayne@69
|
154 HB_UNICODE_COMBINING_CLASS_ATTACHED_BELOW_LEFT = 200,
|
jpayne@69
|
155 HB_UNICODE_COMBINING_CLASS_ATTACHED_BELOW = 202,
|
jpayne@69
|
156 HB_UNICODE_COMBINING_CLASS_ATTACHED_ABOVE = 214,
|
jpayne@69
|
157 HB_UNICODE_COMBINING_CLASS_ATTACHED_ABOVE_RIGHT = 216,
|
jpayne@69
|
158 HB_UNICODE_COMBINING_CLASS_BELOW_LEFT = 218,
|
jpayne@69
|
159 HB_UNICODE_COMBINING_CLASS_BELOW = 220,
|
jpayne@69
|
160 HB_UNICODE_COMBINING_CLASS_BELOW_RIGHT = 222,
|
jpayne@69
|
161 HB_UNICODE_COMBINING_CLASS_LEFT = 224,
|
jpayne@69
|
162 HB_UNICODE_COMBINING_CLASS_RIGHT = 226,
|
jpayne@69
|
163 HB_UNICODE_COMBINING_CLASS_ABOVE_LEFT = 228,
|
jpayne@69
|
164 HB_UNICODE_COMBINING_CLASS_ABOVE = 230,
|
jpayne@69
|
165 HB_UNICODE_COMBINING_CLASS_ABOVE_RIGHT = 232,
|
jpayne@69
|
166 HB_UNICODE_COMBINING_CLASS_DOUBLE_BELOW = 233,
|
jpayne@69
|
167 HB_UNICODE_COMBINING_CLASS_DOUBLE_ABOVE = 234,
|
jpayne@69
|
168
|
jpayne@69
|
169 HB_UNICODE_COMBINING_CLASS_IOTA_SUBSCRIPT = 240,
|
jpayne@69
|
170
|
jpayne@69
|
171 HB_UNICODE_COMBINING_CLASS_INVALID = 255
|
jpayne@69
|
172 } hb_unicode_combining_class_t;
|
jpayne@69
|
173
|
jpayne@69
|
174
|
jpayne@69
|
175 /*
|
jpayne@69
|
176 * hb_unicode_funcs_t
|
jpayne@69
|
177 */
|
jpayne@69
|
178
|
jpayne@69
|
179 typedef struct hb_unicode_funcs_t hb_unicode_funcs_t;
|
jpayne@69
|
180
|
jpayne@69
|
181
|
jpayne@69
|
182 /*
|
jpayne@69
|
183 * just give me the best implementation you've got there.
|
jpayne@69
|
184 */
|
jpayne@69
|
185 HB_EXTERN hb_unicode_funcs_t *
|
jpayne@69
|
186 hb_unicode_funcs_get_default (void);
|
jpayne@69
|
187
|
jpayne@69
|
188
|
jpayne@69
|
189 HB_EXTERN hb_unicode_funcs_t *
|
jpayne@69
|
190 hb_unicode_funcs_create (hb_unicode_funcs_t *parent);
|
jpayne@69
|
191
|
jpayne@69
|
192 HB_EXTERN hb_unicode_funcs_t *
|
jpayne@69
|
193 hb_unicode_funcs_get_empty (void);
|
jpayne@69
|
194
|
jpayne@69
|
195 HB_EXTERN hb_unicode_funcs_t *
|
jpayne@69
|
196 hb_unicode_funcs_reference (hb_unicode_funcs_t *ufuncs);
|
jpayne@69
|
197
|
jpayne@69
|
198 HB_EXTERN void
|
jpayne@69
|
199 hb_unicode_funcs_destroy (hb_unicode_funcs_t *ufuncs);
|
jpayne@69
|
200
|
jpayne@69
|
201 HB_EXTERN hb_bool_t
|
jpayne@69
|
202 hb_unicode_funcs_set_user_data (hb_unicode_funcs_t *ufuncs,
|
jpayne@69
|
203 hb_user_data_key_t *key,
|
jpayne@69
|
204 void * data,
|
jpayne@69
|
205 hb_destroy_func_t destroy,
|
jpayne@69
|
206 hb_bool_t replace);
|
jpayne@69
|
207
|
jpayne@69
|
208
|
jpayne@69
|
209 HB_EXTERN void *
|
jpayne@69
|
210 hb_unicode_funcs_get_user_data (hb_unicode_funcs_t *ufuncs,
|
jpayne@69
|
211 hb_user_data_key_t *key);
|
jpayne@69
|
212
|
jpayne@69
|
213
|
jpayne@69
|
214 HB_EXTERN void
|
jpayne@69
|
215 hb_unicode_funcs_make_immutable (hb_unicode_funcs_t *ufuncs);
|
jpayne@69
|
216
|
jpayne@69
|
217 HB_EXTERN hb_bool_t
|
jpayne@69
|
218 hb_unicode_funcs_is_immutable (hb_unicode_funcs_t *ufuncs);
|
jpayne@69
|
219
|
jpayne@69
|
220 HB_EXTERN hb_unicode_funcs_t *
|
jpayne@69
|
221 hb_unicode_funcs_get_parent (hb_unicode_funcs_t *ufuncs);
|
jpayne@69
|
222
|
jpayne@69
|
223
|
jpayne@69
|
224 /*
|
jpayne@69
|
225 * funcs
|
jpayne@69
|
226 */
|
jpayne@69
|
227
|
jpayne@69
|
228 /* typedefs */
|
jpayne@69
|
229
|
jpayne@69
|
230 typedef hb_unicode_combining_class_t (*hb_unicode_combining_class_func_t) (hb_unicode_funcs_t *ufuncs,
|
jpayne@69
|
231 hb_codepoint_t unicode,
|
jpayne@69
|
232 void *user_data);
|
jpayne@69
|
233 typedef hb_unicode_general_category_t (*hb_unicode_general_category_func_t) (hb_unicode_funcs_t *ufuncs,
|
jpayne@69
|
234 hb_codepoint_t unicode,
|
jpayne@69
|
235 void *user_data);
|
jpayne@69
|
236 typedef hb_codepoint_t (*hb_unicode_mirroring_func_t) (hb_unicode_funcs_t *ufuncs,
|
jpayne@69
|
237 hb_codepoint_t unicode,
|
jpayne@69
|
238 void *user_data);
|
jpayne@69
|
239 typedef hb_script_t (*hb_unicode_script_func_t) (hb_unicode_funcs_t *ufuncs,
|
jpayne@69
|
240 hb_codepoint_t unicode,
|
jpayne@69
|
241 void *user_data);
|
jpayne@69
|
242
|
jpayne@69
|
243 typedef hb_bool_t (*hb_unicode_compose_func_t) (hb_unicode_funcs_t *ufuncs,
|
jpayne@69
|
244 hb_codepoint_t a,
|
jpayne@69
|
245 hb_codepoint_t b,
|
jpayne@69
|
246 hb_codepoint_t *ab,
|
jpayne@69
|
247 void *user_data);
|
jpayne@69
|
248 typedef hb_bool_t (*hb_unicode_decompose_func_t) (hb_unicode_funcs_t *ufuncs,
|
jpayne@69
|
249 hb_codepoint_t ab,
|
jpayne@69
|
250 hb_codepoint_t *a,
|
jpayne@69
|
251 hb_codepoint_t *b,
|
jpayne@69
|
252 void *user_data);
|
jpayne@69
|
253
|
jpayne@69
|
254 /* setters */
|
jpayne@69
|
255
|
jpayne@69
|
256 /**
|
jpayne@69
|
257 * hb_unicode_funcs_set_combining_class_func:
|
jpayne@69
|
258 * @ufuncs: a Unicode function structure
|
jpayne@69
|
259 * @func: (closure user_data) (destroy destroy) (scope notified):
|
jpayne@69
|
260 * @user_data:
|
jpayne@69
|
261 * @destroy:
|
jpayne@69
|
262 *
|
jpayne@69
|
263 *
|
jpayne@69
|
264 *
|
jpayne@69
|
265 * Since: 0.9.2
|
jpayne@69
|
266 **/
|
jpayne@69
|
267 HB_EXTERN void
|
jpayne@69
|
268 hb_unicode_funcs_set_combining_class_func (hb_unicode_funcs_t *ufuncs,
|
jpayne@69
|
269 hb_unicode_combining_class_func_t func,
|
jpayne@69
|
270 void *user_data, hb_destroy_func_t destroy);
|
jpayne@69
|
271
|
jpayne@69
|
272 /**
|
jpayne@69
|
273 * hb_unicode_funcs_set_general_category_func:
|
jpayne@69
|
274 * @ufuncs: a Unicode function structure
|
jpayne@69
|
275 * @func: (closure user_data) (destroy destroy) (scope notified):
|
jpayne@69
|
276 * @user_data:
|
jpayne@69
|
277 * @destroy:
|
jpayne@69
|
278 *
|
jpayne@69
|
279 *
|
jpayne@69
|
280 *
|
jpayne@69
|
281 * Since: 0.9.2
|
jpayne@69
|
282 **/
|
jpayne@69
|
283 HB_EXTERN void
|
jpayne@69
|
284 hb_unicode_funcs_set_general_category_func (hb_unicode_funcs_t *ufuncs,
|
jpayne@69
|
285 hb_unicode_general_category_func_t func,
|
jpayne@69
|
286 void *user_data, hb_destroy_func_t destroy);
|
jpayne@69
|
287
|
jpayne@69
|
288 /**
|
jpayne@69
|
289 * hb_unicode_funcs_set_mirroring_func:
|
jpayne@69
|
290 * @ufuncs: a Unicode function structure
|
jpayne@69
|
291 * @func: (closure user_data) (destroy destroy) (scope notified):
|
jpayne@69
|
292 * @user_data:
|
jpayne@69
|
293 * @destroy:
|
jpayne@69
|
294 *
|
jpayne@69
|
295 *
|
jpayne@69
|
296 *
|
jpayne@69
|
297 * Since: 0.9.2
|
jpayne@69
|
298 **/
|
jpayne@69
|
299 HB_EXTERN void
|
jpayne@69
|
300 hb_unicode_funcs_set_mirroring_func (hb_unicode_funcs_t *ufuncs,
|
jpayne@69
|
301 hb_unicode_mirroring_func_t func,
|
jpayne@69
|
302 void *user_data, hb_destroy_func_t destroy);
|
jpayne@69
|
303
|
jpayne@69
|
304 /**
|
jpayne@69
|
305 * hb_unicode_funcs_set_script_func:
|
jpayne@69
|
306 * @ufuncs: a Unicode function structure
|
jpayne@69
|
307 * @func: (closure user_data) (destroy destroy) (scope notified):
|
jpayne@69
|
308 * @user_data:
|
jpayne@69
|
309 * @destroy:
|
jpayne@69
|
310 *
|
jpayne@69
|
311 *
|
jpayne@69
|
312 *
|
jpayne@69
|
313 * Since: 0.9.2
|
jpayne@69
|
314 **/
|
jpayne@69
|
315 HB_EXTERN void
|
jpayne@69
|
316 hb_unicode_funcs_set_script_func (hb_unicode_funcs_t *ufuncs,
|
jpayne@69
|
317 hb_unicode_script_func_t func,
|
jpayne@69
|
318 void *user_data, hb_destroy_func_t destroy);
|
jpayne@69
|
319
|
jpayne@69
|
320 /**
|
jpayne@69
|
321 * hb_unicode_funcs_set_compose_func:
|
jpayne@69
|
322 * @ufuncs: a Unicode function structure
|
jpayne@69
|
323 * @func: (closure user_data) (destroy destroy) (scope notified):
|
jpayne@69
|
324 * @user_data:
|
jpayne@69
|
325 * @destroy:
|
jpayne@69
|
326 *
|
jpayne@69
|
327 *
|
jpayne@69
|
328 *
|
jpayne@69
|
329 * Since: 0.9.2
|
jpayne@69
|
330 **/
|
jpayne@69
|
331 HB_EXTERN void
|
jpayne@69
|
332 hb_unicode_funcs_set_compose_func (hb_unicode_funcs_t *ufuncs,
|
jpayne@69
|
333 hb_unicode_compose_func_t func,
|
jpayne@69
|
334 void *user_data, hb_destroy_func_t destroy);
|
jpayne@69
|
335
|
jpayne@69
|
336 /**
|
jpayne@69
|
337 * hb_unicode_funcs_set_decompose_func:
|
jpayne@69
|
338 * @ufuncs: a Unicode function structure
|
jpayne@69
|
339 * @func: (closure user_data) (destroy destroy) (scope notified):
|
jpayne@69
|
340 * @user_data:
|
jpayne@69
|
341 * @destroy:
|
jpayne@69
|
342 *
|
jpayne@69
|
343 *
|
jpayne@69
|
344 *
|
jpayne@69
|
345 * Since: 0.9.2
|
jpayne@69
|
346 **/
|
jpayne@69
|
347 HB_EXTERN void
|
jpayne@69
|
348 hb_unicode_funcs_set_decompose_func (hb_unicode_funcs_t *ufuncs,
|
jpayne@69
|
349 hb_unicode_decompose_func_t func,
|
jpayne@69
|
350 void *user_data, hb_destroy_func_t destroy);
|
jpayne@69
|
351
|
jpayne@69
|
352 /* accessors */
|
jpayne@69
|
353
|
jpayne@69
|
354 /**
|
jpayne@69
|
355 * hb_unicode_combining_class:
|
jpayne@69
|
356 *
|
jpayne@69
|
357 * Since: 0.9.2
|
jpayne@69
|
358 **/
|
jpayne@69
|
359 HB_EXTERN hb_unicode_combining_class_t
|
jpayne@69
|
360 hb_unicode_combining_class (hb_unicode_funcs_t *ufuncs,
|
jpayne@69
|
361 hb_codepoint_t unicode);
|
jpayne@69
|
362
|
jpayne@69
|
363 /**
|
jpayne@69
|
364 * hb_unicode_general_category:
|
jpayne@69
|
365 *
|
jpayne@69
|
366 * Since: 0.9.2
|
jpayne@69
|
367 **/
|
jpayne@69
|
368 HB_EXTERN hb_unicode_general_category_t
|
jpayne@69
|
369 hb_unicode_general_category (hb_unicode_funcs_t *ufuncs,
|
jpayne@69
|
370 hb_codepoint_t unicode);
|
jpayne@69
|
371
|
jpayne@69
|
372 /**
|
jpayne@69
|
373 * hb_unicode_mirroring:
|
jpayne@69
|
374 *
|
jpayne@69
|
375 * Since: 0.9.2
|
jpayne@69
|
376 **/
|
jpayne@69
|
377 HB_EXTERN hb_codepoint_t
|
jpayne@69
|
378 hb_unicode_mirroring (hb_unicode_funcs_t *ufuncs,
|
jpayne@69
|
379 hb_codepoint_t unicode);
|
jpayne@69
|
380
|
jpayne@69
|
381 /**
|
jpayne@69
|
382 * hb_unicode_script:
|
jpayne@69
|
383 *
|
jpayne@69
|
384 * Since: 0.9.2
|
jpayne@69
|
385 **/
|
jpayne@69
|
386 HB_EXTERN hb_script_t
|
jpayne@69
|
387 hb_unicode_script (hb_unicode_funcs_t *ufuncs,
|
jpayne@69
|
388 hb_codepoint_t unicode);
|
jpayne@69
|
389
|
jpayne@69
|
390 HB_EXTERN hb_bool_t
|
jpayne@69
|
391 hb_unicode_compose (hb_unicode_funcs_t *ufuncs,
|
jpayne@69
|
392 hb_codepoint_t a,
|
jpayne@69
|
393 hb_codepoint_t b,
|
jpayne@69
|
394 hb_codepoint_t *ab);
|
jpayne@69
|
395
|
jpayne@69
|
396 HB_EXTERN hb_bool_t
|
jpayne@69
|
397 hb_unicode_decompose (hb_unicode_funcs_t *ufuncs,
|
jpayne@69
|
398 hb_codepoint_t ab,
|
jpayne@69
|
399 hb_codepoint_t *a,
|
jpayne@69
|
400 hb_codepoint_t *b);
|
jpayne@69
|
401
|
jpayne@69
|
402 HB_END_DECLS
|
jpayne@69
|
403
|
jpayne@69
|
404 #endif /* HB_UNICODE_H */
|