QtBase  v6.3.1
hb-unicode.h
Go to the documentation of this file.
1 /*
2  * Copyright © 2009 Red Hat, Inc.
3  * Copyright © 2011 Codethink Limited
4  * Copyright © 2011,2012 Google, Inc.
5  *
6  * This is part of HarfBuzz, a text shaping library.
7  *
8  * Permission is hereby granted, without written agreement and without
9  * license or royalty fees, to use, copy, modify, and distribute this
10  * software and its documentation for any purpose, provided that the
11  * above copyright notice and the following two paragraphs appear in
12  * all copies of this software.
13  *
14  * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
15  * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
16  * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
17  * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
18  * DAMAGE.
19  *
20  * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
21  * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
22  * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
23  * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
24  * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
25  *
26  * Red Hat Author(s): Behdad Esfahbod
27  * Codethink Author(s): Ryan Lortie
28  * Google Author(s): Behdad Esfahbod
29  */
30 
31 #if !defined(HB_H_IN) && !defined(HB_NO_SINGLE_HEADER_ERROR)
32 #error "Include <hb.h> instead."
33 #endif
34 
35 #ifndef HB_UNICODE_H
36 #define HB_UNICODE_H
37 
38 #include "hb-common.h"
39 
41 
42 
50 #define HB_UNICODE_MAX 0x10FFFFu
51 
52 
90 /* Unicode Character Database property: General_Category (gc) */
91 typedef enum
92 {
124 
193 typedef enum
194 {
200 
201  /* Hebrew */
219 
220  /* Arabic */
230 
231  /* Syriac */
233 
234  /* Telugu */
237 
238  /* Thai */
241 
242  /* Lao */
245 
246  /* Tibetan */
250 
251 
266 
268 
271 
272 
273 /*
274  * hb_unicode_funcs_t
275  */
276 
290 
291 
292 /*
293  * just give me the best implementation you've got there.
294  */
297 
298 
301 
304 
307 
308 HB_EXTERN void
310 
314  void * data,
316  hb_bool_t replace);
317 
318 
319 HB_EXTERN void *
322 
323 
324 HB_EXTERN void
326 
329 
332 
333 
334 /*
335  * funcs
336  */
337 
338 /* typedefs */
339 
355  hb_codepoint_t unicode,
356  void *user_data);
357 
373  hb_codepoint_t unicode,
374  void *user_data);
375 
395  hb_codepoint_t unicode,
396  void *user_data);
397 
413  hb_codepoint_t unicode,
414  void *user_data);
415 
438  hb_codepoint_t *ab,
439  void *user_data);
440 
460  hb_codepoint_t ab,
461  hb_codepoint_t *a,
462  hb_codepoint_t *b,
463  void *user_data);
464 
465 /* func setters */
466 
478 HB_EXTERN void
482 
494 HB_EXTERN void
498 
510 HB_EXTERN void
514 
526 HB_EXTERN void
530 
542 HB_EXTERN void
546 
558 HB_EXTERN void
562 
563 /* accessors */
564 
579  hb_codepoint_t unicode);
580 
595  hb_codepoint_t unicode);
596 
611  hb_codepoint_t unicode);
612 
627  hb_codepoint_t unicode);
628 
633  hb_codepoint_t *ab);
634 
637  hb_codepoint_t ab,
638  hb_codepoint_t *a,
639  hb_codepoint_t *b);
640 
642 
643 #endif /* HB_UNICODE_H */
GLboolean GLboolean GLboolean b
GLuint64 key
GLboolean GLboolean GLboolean GLboolean a
[7]
GLint GLsizei GLsizei GLenum GLenum GLsizei void * data
GLenum func
Definition: qopenglext.h:663
void(* hb_destroy_func_t)(void *user_data)
Definition: hb-common.h:771
HB_BEGIN_DECLS typedef int hb_bool_t
Definition: hb-common.h:97
uint32_t hb_codepoint_t
Definition: hb-common.h:106
hb_script_t
Definition: hb-common.h:506
#define HB_BEGIN_DECLS
Definition: hb-common.h:45
#define HB_END_DECLS
Definition: hb-common.h:46
#define HB_EXTERN
Definition: hb-common.h:37
HB_EXTERN hb_font_get_glyph_func_t void * user_data
HB_EXTERN hb_font_get_glyph_func_t void hb_destroy_func_t destroy
hb_unicode_combining_class_t
Definition: hb-unicode.h:194
@ HB_UNICODE_COMBINING_CLASS_RIGHT
Definition: hb-unicode.h:260
@ HB_UNICODE_COMBINING_CLASS_CCC17
Definition: hb-unicode.h:209
@ HB_UNICODE_COMBINING_CLASS_NUKTA
Definition: hb-unicode.h:197
@ HB_UNICODE_COMBINING_CLASS_CCC122
Definition: hb-unicode.h:244
@ HB_UNICODE_COMBINING_CLASS_BELOW
Definition: hb-unicode.h:257
@ HB_UNICODE_COMBINING_CLASS_ABOVE
Definition: hb-unicode.h:262
@ HB_UNICODE_COMBINING_CLASS_ATTACHED_BELOW_LEFT
Definition: hb-unicode.h:252
@ HB_UNICODE_COMBINING_CLASS_CCC29
Definition: hb-unicode.h:223
@ HB_UNICODE_COMBINING_CLASS_CCC10
Definition: hb-unicode.h:202
@ HB_UNICODE_COMBINING_CLASS_CCC118
Definition: hb-unicode.h:243
@ HB_UNICODE_COMBINING_CLASS_CCC24
Definition: hb-unicode.h:216
@ HB_UNICODE_COMBINING_CLASS_CCC130
Definition: hb-unicode.h:248
@ HB_UNICODE_COMBINING_CLASS_CCC20
Definition: hb-unicode.h:212
@ HB_UNICODE_COMBINING_CLASS_ATTACHED_ABOVE
Definition: hb-unicode.h:254
@ HB_UNICODE_COMBINING_CLASS_CCC32
Definition: hb-unicode.h:226
@ HB_UNICODE_COMBINING_CLASS_CCC30
Definition: hb-unicode.h:224
@ HB_UNICODE_COMBINING_CLASS_CCC18
Definition: hb-unicode.h:210
@ HB_UNICODE_COMBINING_CLASS_CCC23
Definition: hb-unicode.h:215
@ HB_UNICODE_COMBINING_CLASS_ATTACHED_BELOW
Definition: hb-unicode.h:253
@ HB_UNICODE_COMBINING_CLASS_CCC21
Definition: hb-unicode.h:213
@ HB_UNICODE_COMBINING_CLASS_INVALID
Definition: hb-unicode.h:269
@ HB_UNICODE_COMBINING_CLASS_DOUBLE_BELOW
Definition: hb-unicode.h:264
@ HB_UNICODE_COMBINING_CLASS_CCC12
Definition: hb-unicode.h:204
@ HB_UNICODE_COMBINING_CLASS_OVERLAY
Definition: hb-unicode.h:196
@ HB_UNICODE_COMBINING_CLASS_CCC129
Definition: hb-unicode.h:247
@ HB_UNICODE_COMBINING_CLASS_CCC14
Definition: hb-unicode.h:206
@ HB_UNICODE_COMBINING_CLASS_IOTA_SUBSCRIPT
Definition: hb-unicode.h:267
@ HB_UNICODE_COMBINING_CLASS_CCC28
Definition: hb-unicode.h:222
@ HB_UNICODE_COMBINING_CLASS_CCC22
Definition: hb-unicode.h:214
@ HB_UNICODE_COMBINING_CLASS_KANA_VOICING
Definition: hb-unicode.h:198
@ HB_UNICODE_COMBINING_CLASS_CCC84
Definition: hb-unicode.h:235
@ HB_UNICODE_COMBINING_CLASS_CCC27
Definition: hb-unicode.h:221
@ HB_UNICODE_COMBINING_CLASS_BELOW_RIGHT
Definition: hb-unicode.h:258
@ HB_UNICODE_COMBINING_CLASS_CCC33
Definition: hb-unicode.h:227
@ HB_UNICODE_COMBINING_CLASS_VIRAMA
Definition: hb-unicode.h:199
@ HB_UNICODE_COMBINING_CLASS_LEFT
Definition: hb-unicode.h:259
@ HB_UNICODE_COMBINING_CLASS_CCC16
Definition: hb-unicode.h:208
@ HB_UNICODE_COMBINING_CLASS_CCC36
Definition: hb-unicode.h:232
@ HB_UNICODE_COMBINING_CLASS_CCC26
Definition: hb-unicode.h:218
@ HB_UNICODE_COMBINING_CLASS_CCC103
Definition: hb-unicode.h:239
@ HB_UNICODE_COMBINING_CLASS_CCC34
Definition: hb-unicode.h:228
@ HB_UNICODE_COMBINING_CLASS_CCC31
Definition: hb-unicode.h:225
@ HB_UNICODE_COMBINING_CLASS_CCC15
Definition: hb-unicode.h:207
@ HB_UNICODE_COMBINING_CLASS_CCC133
Definition: hb-unicode.h:249
@ HB_UNICODE_COMBINING_CLASS_BELOW_LEFT
Definition: hb-unicode.h:256
@ HB_UNICODE_COMBINING_CLASS_NOT_REORDERED
Definition: hb-unicode.h:195
@ HB_UNICODE_COMBINING_CLASS_CCC19
Definition: hb-unicode.h:211
@ HB_UNICODE_COMBINING_CLASS_CCC11
Definition: hb-unicode.h:203
@ HB_UNICODE_COMBINING_CLASS_CCC35
Definition: hb-unicode.h:229
@ HB_UNICODE_COMBINING_CLASS_ABOVE_RIGHT
Definition: hb-unicode.h:263
@ HB_UNICODE_COMBINING_CLASS_CCC107
Definition: hb-unicode.h:240
@ HB_UNICODE_COMBINING_CLASS_CCC91
Definition: hb-unicode.h:236
@ HB_UNICODE_COMBINING_CLASS_ABOVE_LEFT
Definition: hb-unicode.h:261
@ HB_UNICODE_COMBINING_CLASS_ATTACHED_ABOVE_RIGHT
Definition: hb-unicode.h:255
@ HB_UNICODE_COMBINING_CLASS_CCC25
Definition: hb-unicode.h:217
@ HB_UNICODE_COMBINING_CLASS_CCC13
Definition: hb-unicode.h:205
@ HB_UNICODE_COMBINING_CLASS_DOUBLE_ABOVE
Definition: hb-unicode.h:265
HB_EXTERN void hb_unicode_funcs_set_general_category_func(hb_unicode_funcs_t *ufuncs, hb_unicode_general_category_func_t func, void *user_data, hb_destroy_func_t destroy)
HB_EXTERN void hb_unicode_funcs_set_combining_class_func(hb_unicode_funcs_t *ufuncs, hb_unicode_combining_class_func_t func, void *user_data, hb_destroy_func_t destroy)
HB_EXTERN void hb_unicode_funcs_set_compose_func(hb_unicode_funcs_t *ufuncs, hb_unicode_compose_func_t func, void *user_data, hb_destroy_func_t destroy)
HB_EXTERN hb_unicode_funcs_t * hb_unicode_funcs_get_empty(void)
Definition: hb-unicode.cc:228
HB_EXTERN void hb_unicode_funcs_set_mirroring_func(hb_unicode_funcs_t *ufuncs, hb_unicode_mirroring_func_t func, void *user_data, hb_destroy_func_t destroy)
HB_EXTERN hb_unicode_funcs_t * hb_unicode_funcs_reference(hb_unicode_funcs_t *ufuncs)
Definition: hb-unicode.cc:244
HB_EXTERN hb_bool_t hb_unicode_decompose(hb_unicode_funcs_t *ufuncs, hb_codepoint_t ab, hb_codepoint_t *a, hb_codepoint_t *b)
Definition: hb-unicode.cc:454
HB_EXTERN void hb_unicode_funcs_destroy(hb_unicode_funcs_t *ufuncs)
Definition: hb-unicode.cc:260
HB_EXTERN hb_bool_t hb_unicode_compose(hb_unicode_funcs_t *ufuncs, hb_codepoint_t a, hb_codepoint_t b, hb_codepoint_t *ab)
Definition: hb-unicode.cc:429
HB_EXTERN hb_unicode_combining_class_t hb_unicode_combining_class(hb_unicode_funcs_t *ufuncs, hb_codepoint_t unicode)
hb_bool_t(* hb_unicode_compose_func_t)(hb_unicode_funcs_t *ufuncs, hb_codepoint_t a, hb_codepoint_t b, hb_codepoint_t *ab, void *user_data)
Definition: hb-unicode.h:435
HB_EXTERN void * hb_unicode_funcs_get_user_data(hb_unicode_funcs_t *ufuncs, hb_user_data_key_t *key)
Definition: hb-unicode.cc:311
HB_EXTERN hb_unicode_funcs_t * hb_unicode_funcs_get_parent(hb_unicode_funcs_t *ufuncs)
Definition: hb-unicode.cc:365
hb_codepoint_t(* hb_unicode_mirroring_func_t)(hb_unicode_funcs_t *ufuncs, hb_codepoint_t unicode, void *user_data)
Definition: hb-unicode.h:394
HB_EXTERN void hb_unicode_funcs_set_script_func(hb_unicode_funcs_t *ufuncs, hb_unicode_script_func_t func, void *user_data, hb_destroy_func_t destroy)
HB_EXTERN hb_unicode_general_category_t hb_unicode_general_category(hb_unicode_funcs_t *ufuncs, hb_codepoint_t unicode)
hb_unicode_general_category_t(* hb_unicode_general_category_func_t)(hb_unicode_funcs_t *ufuncs, hb_codepoint_t unicode, void *user_data)
Definition: hb-unicode.h:372
HB_EXTERN void hb_unicode_funcs_make_immutable(hb_unicode_funcs_t *ufuncs)
Definition: hb-unicode.cc:328
HB_EXTERN hb_script_t hb_unicode_script(hb_unicode_funcs_t *ufuncs, hb_codepoint_t unicode)
HB_EXTERN hb_codepoint_t hb_unicode_mirroring(hb_unicode_funcs_t *ufuncs, hb_codepoint_t unicode)
hb_unicode_combining_class_t(* hb_unicode_combining_class_func_t)(hb_unicode_funcs_t *ufuncs, hb_codepoint_t unicode, void *user_data)
Definition: hb-unicode.h:354
hb_bool_t(* hb_unicode_decompose_func_t)(hb_unicode_funcs_t *ufuncs, hb_codepoint_t ab, hb_codepoint_t *a, hb_codepoint_t *b, void *user_data)
Definition: hb-unicode.h:459
hb_unicode_general_category_t
Definition: hb-unicode.h:92
@ HB_UNICODE_GENERAL_CATEGORY_SPACE_SEPARATOR
Definition: hb-unicode.h:122
@ HB_UNICODE_GENERAL_CATEGORY_OTHER_SYMBOL
Definition: hb-unicode.h:119
@ HB_UNICODE_GENERAL_CATEGORY_CONTROL
Definition: hb-unicode.h:93
@ HB_UNICODE_GENERAL_CATEGORY_FORMAT
Definition: hb-unicode.h:94
@ HB_UNICODE_GENERAL_CATEGORY_DECIMAL_NUMBER
Definition: hb-unicode.h:106
@ HB_UNICODE_GENERAL_CATEGORY_OPEN_PUNCTUATION
Definition: hb-unicode.h:115
@ HB_UNICODE_GENERAL_CATEGORY_UNASSIGNED
Definition: hb-unicode.h:95
@ HB_UNICODE_GENERAL_CATEGORY_PARAGRAPH_SEPARATOR
Definition: hb-unicode.h:121
@ HB_UNICODE_GENERAL_CATEGORY_DASH_PUNCTUATION
Definition: hb-unicode.h:110
@ HB_UNICODE_GENERAL_CATEGORY_MODIFIER_LETTER
Definition: hb-unicode.h:99
@ HB_UNICODE_GENERAL_CATEGORY_OTHER_NUMBER
Definition: hb-unicode.h:108
@ HB_UNICODE_GENERAL_CATEGORY_CLOSE_PUNCTUATION
Definition: hb-unicode.h:111
@ HB_UNICODE_GENERAL_CATEGORY_OTHER_LETTER
Definition: hb-unicode.h:100
@ HB_UNICODE_GENERAL_CATEGORY_INITIAL_PUNCTUATION
Definition: hb-unicode.h:113
@ HB_UNICODE_GENERAL_CATEGORY_OTHER_PUNCTUATION
Definition: hb-unicode.h:114
@ HB_UNICODE_GENERAL_CATEGORY_PRIVATE_USE
Definition: hb-unicode.h:96
@ HB_UNICODE_GENERAL_CATEGORY_UPPERCASE_LETTER
Definition: hb-unicode.h:102
@ HB_UNICODE_GENERAL_CATEGORY_CURRENCY_SYMBOL
Definition: hb-unicode.h:116
@ HB_UNICODE_GENERAL_CATEGORY_NON_SPACING_MARK
Definition: hb-unicode.h:105
@ HB_UNICODE_GENERAL_CATEGORY_ENCLOSING_MARK
Definition: hb-unicode.h:104
@ HB_UNICODE_GENERAL_CATEGORY_MATH_SYMBOL
Definition: hb-unicode.h:118
@ HB_UNICODE_GENERAL_CATEGORY_SURROGATE
Definition: hb-unicode.h:97
@ HB_UNICODE_GENERAL_CATEGORY_LETTER_NUMBER
Definition: hb-unicode.h:107
@ HB_UNICODE_GENERAL_CATEGORY_SPACING_MARK
Definition: hb-unicode.h:103
@ HB_UNICODE_GENERAL_CATEGORY_LINE_SEPARATOR
Definition: hb-unicode.h:120
@ HB_UNICODE_GENERAL_CATEGORY_MODIFIER_SYMBOL
Definition: hb-unicode.h:117
@ HB_UNICODE_GENERAL_CATEGORY_TITLECASE_LETTER
Definition: hb-unicode.h:101
@ HB_UNICODE_GENERAL_CATEGORY_LOWERCASE_LETTER
Definition: hb-unicode.h:98
@ HB_UNICODE_GENERAL_CATEGORY_CONNECT_PUNCTUATION
Definition: hb-unicode.h:109
@ HB_UNICODE_GENERAL_CATEGORY_FINAL_PUNCTUATION
Definition: hb-unicode.h:112
HB_EXTERN hb_bool_t hb_unicode_funcs_set_user_data(hb_unicode_funcs_t *ufuncs, hb_user_data_key_t *key, void *data, hb_destroy_func_t destroy, hb_bool_t replace)
Definition: hb-unicode.cc:289
hb_script_t(* hb_unicode_script_func_t)(hb_unicode_funcs_t *ufuncs, hb_codepoint_t unicode, void *user_data)
Definition: hb-unicode.h:412
HB_EXTERN void hb_unicode_funcs_set_decompose_func(hb_unicode_funcs_t *ufuncs, hb_unicode_decompose_func_t func, void *user_data, hb_destroy_func_t destroy)
HB_EXTERN hb_unicode_funcs_t * hb_unicode_funcs_get_default(void)
Definition: hb-unicode.cc:152
HB_EXTERN hb_unicode_funcs_t * hb_unicode_funcs_create(hb_unicode_funcs_t *parent)
Definition: hb-unicode.cc:182
HB_EXTERN hb_bool_t hb_unicode_funcs_is_immutable(hb_unicode_funcs_t *ufuncs)
Definition: hb-unicode.cc:348
IUIAutomationTreeWalker __RPC__deref_out_opt IUIAutomationElement ** parent