| 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 |  | 
|---|
| 40 | HB_BEGIN_DECLS | 
|---|
| 41 |  | 
|---|
| 42 |  | 
|---|
| 43 | /** | 
|---|
| 44 | * HB_UNICODE_MAX: | 
|---|
| 45 | * | 
|---|
| 46 | * Maximum valid Unicode code point. | 
|---|
| 47 | * | 
|---|
| 48 | * Since: 1.9.0 | 
|---|
| 49 | **/ | 
|---|
| 50 | #define HB_UNICODE_MAX 0x10FFFFu | 
|---|
| 51 |  | 
|---|
| 52 |  | 
|---|
| 53 | /** | 
|---|
| 54 | * hb_unicode_general_category_t: | 
|---|
| 55 | * @HB_UNICODE_GENERAL_CATEGORY_CONTROL:              [Cc] | 
|---|
| 56 | * @HB_UNICODE_GENERAL_CATEGORY_FORMAT:		      [Cf] | 
|---|
| 57 | * @HB_UNICODE_GENERAL_CATEGORY_UNASSIGNED:	      [Cn] | 
|---|
| 58 | * @HB_UNICODE_GENERAL_CATEGORY_PRIVATE_USE:	      [Co] | 
|---|
| 59 | * @HB_UNICODE_GENERAL_CATEGORY_SURROGATE:	      [Cs] | 
|---|
| 60 | * @HB_UNICODE_GENERAL_CATEGORY_LOWERCASE_LETTER:     [Ll] | 
|---|
| 61 | * @HB_UNICODE_GENERAL_CATEGORY_MODIFIER_LETTER:      [Lm] | 
|---|
| 62 | * @HB_UNICODE_GENERAL_CATEGORY_OTHER_LETTER:	      [Lo] | 
|---|
| 63 | * @HB_UNICODE_GENERAL_CATEGORY_TITLECASE_LETTER:     [Lt] | 
|---|
| 64 | * @HB_UNICODE_GENERAL_CATEGORY_UPPERCASE_LETTER:     [Lu] | 
|---|
| 65 | * @HB_UNICODE_GENERAL_CATEGORY_SPACING_MARK:	      [Mc] | 
|---|
| 66 | * @HB_UNICODE_GENERAL_CATEGORY_ENCLOSING_MARK:	      [Me] | 
|---|
| 67 | * @HB_UNICODE_GENERAL_CATEGORY_NON_SPACING_MARK:     [Mn] | 
|---|
| 68 | * @HB_UNICODE_GENERAL_CATEGORY_DECIMAL_NUMBER:	      [Nd] | 
|---|
| 69 | * @HB_UNICODE_GENERAL_CATEGORY_LETTER_NUMBER:	      [Nl] | 
|---|
| 70 | * @HB_UNICODE_GENERAL_CATEGORY_OTHER_NUMBER:	      [No] | 
|---|
| 71 | * @HB_UNICODE_GENERAL_CATEGORY_CONNECT_PUNCTUATION:  [Pc] | 
|---|
| 72 | * @HB_UNICODE_GENERAL_CATEGORY_DASH_PUNCTUATION:     [Pd] | 
|---|
| 73 | * @HB_UNICODE_GENERAL_CATEGORY_CLOSE_PUNCTUATION:    [Pe] | 
|---|
| 74 | * @HB_UNICODE_GENERAL_CATEGORY_FINAL_PUNCTUATION:    [Pf] | 
|---|
| 75 | * @HB_UNICODE_GENERAL_CATEGORY_INITIAL_PUNCTUATION:  [Pi] | 
|---|
| 76 | * @HB_UNICODE_GENERAL_CATEGORY_OTHER_PUNCTUATION:    [Po] | 
|---|
| 77 | * @HB_UNICODE_GENERAL_CATEGORY_OPEN_PUNCTUATION:     [Ps] | 
|---|
| 78 | * @HB_UNICODE_GENERAL_CATEGORY_CURRENCY_SYMBOL:      [Sc] | 
|---|
| 79 | * @HB_UNICODE_GENERAL_CATEGORY_MODIFIER_SYMBOL:      [Sk] | 
|---|
| 80 | * @HB_UNICODE_GENERAL_CATEGORY_MATH_SYMBOL:	      [Sm] | 
|---|
| 81 | * @HB_UNICODE_GENERAL_CATEGORY_OTHER_SYMBOL:	      [So] | 
|---|
| 82 | * @HB_UNICODE_GENERAL_CATEGORY_LINE_SEPARATOR:	      [Zl] | 
|---|
| 83 | * @HB_UNICODE_GENERAL_CATEGORY_PARAGRAPH_SEPARATOR:  [Zp] | 
|---|
| 84 | * @HB_UNICODE_GENERAL_CATEGORY_SPACE_SEPARATOR:      [Zs] | 
|---|
| 85 | * | 
|---|
| 86 | * Data type for the "General_Category" (gc) property from | 
|---|
| 87 | * the Unicode Character Database. | 
|---|
| 88 | **/ | 
|---|
| 89 |  | 
|---|
| 90 | /* Unicode Character Database property: General_Category (gc) */ | 
|---|
| 91 | typedef enum | 
|---|
| 92 | { | 
|---|
| 93 | HB_UNICODE_GENERAL_CATEGORY_CONTROL,			/* Cc */ | 
|---|
| 94 | HB_UNICODE_GENERAL_CATEGORY_FORMAT,			/* Cf */ | 
|---|
| 95 | HB_UNICODE_GENERAL_CATEGORY_UNASSIGNED,		/* Cn */ | 
|---|
| 96 | HB_UNICODE_GENERAL_CATEGORY_PRIVATE_USE,		/* Co */ | 
|---|
| 97 | HB_UNICODE_GENERAL_CATEGORY_SURROGATE,		/* Cs */ | 
|---|
| 98 | HB_UNICODE_GENERAL_CATEGORY_LOWERCASE_LETTER,		/* Ll */ | 
|---|
| 99 | HB_UNICODE_GENERAL_CATEGORY_MODIFIER_LETTER,		/* Lm */ | 
|---|
| 100 | HB_UNICODE_GENERAL_CATEGORY_OTHER_LETTER,		/* Lo */ | 
|---|
| 101 | HB_UNICODE_GENERAL_CATEGORY_TITLECASE_LETTER,		/* Lt */ | 
|---|
| 102 | HB_UNICODE_GENERAL_CATEGORY_UPPERCASE_LETTER,		/* Lu */ | 
|---|
| 103 | HB_UNICODE_GENERAL_CATEGORY_SPACING_MARK,		/* Mc */ | 
|---|
| 104 | HB_UNICODE_GENERAL_CATEGORY_ENCLOSING_MARK,		/* Me */ | 
|---|
| 105 | HB_UNICODE_GENERAL_CATEGORY_NON_SPACING_MARK,		/* Mn */ | 
|---|
| 106 | HB_UNICODE_GENERAL_CATEGORY_DECIMAL_NUMBER,		/* Nd */ | 
|---|
| 107 | HB_UNICODE_GENERAL_CATEGORY_LETTER_NUMBER,		/* Nl */ | 
|---|
| 108 | HB_UNICODE_GENERAL_CATEGORY_OTHER_NUMBER,		/* No */ | 
|---|
| 109 | HB_UNICODE_GENERAL_CATEGORY_CONNECT_PUNCTUATION,	/* Pc */ | 
|---|
| 110 | HB_UNICODE_GENERAL_CATEGORY_DASH_PUNCTUATION,		/* Pd */ | 
|---|
| 111 | HB_UNICODE_GENERAL_CATEGORY_CLOSE_PUNCTUATION,	/* Pe */ | 
|---|
| 112 | HB_UNICODE_GENERAL_CATEGORY_FINAL_PUNCTUATION,	/* Pf */ | 
|---|
| 113 | HB_UNICODE_GENERAL_CATEGORY_INITIAL_PUNCTUATION,	/* Pi */ | 
|---|
| 114 | HB_UNICODE_GENERAL_CATEGORY_OTHER_PUNCTUATION,	/* Po */ | 
|---|
| 115 | HB_UNICODE_GENERAL_CATEGORY_OPEN_PUNCTUATION,		/* Ps */ | 
|---|
| 116 | HB_UNICODE_GENERAL_CATEGORY_CURRENCY_SYMBOL,		/* Sc */ | 
|---|
| 117 | HB_UNICODE_GENERAL_CATEGORY_MODIFIER_SYMBOL,		/* Sk */ | 
|---|
| 118 | HB_UNICODE_GENERAL_CATEGORY_MATH_SYMBOL,		/* Sm */ | 
|---|
| 119 | HB_UNICODE_GENERAL_CATEGORY_OTHER_SYMBOL,		/* So */ | 
|---|
| 120 | HB_UNICODE_GENERAL_CATEGORY_LINE_SEPARATOR,		/* Zl */ | 
|---|
| 121 | HB_UNICODE_GENERAL_CATEGORY_PARAGRAPH_SEPARATOR,	/* Zp */ | 
|---|
| 122 | HB_UNICODE_GENERAL_CATEGORY_SPACE_SEPARATOR		/* Zs */ | 
|---|
| 123 | } hb_unicode_general_category_t; | 
|---|
| 124 |  | 
|---|
| 125 | /** | 
|---|
| 126 | * hb_unicode_combining_class_t: | 
|---|
| 127 | * @HB_UNICODE_COMBINING_CLASS_NOT_REORDERED: Spacing and enclosing marks; also many vowel and consonant signs, even if nonspacing | 
|---|
| 128 | * @HB_UNICODE_COMBINING_CLASS_OVERLAY: Marks which overlay a base letter or symbol | 
|---|
| 129 | * @HB_UNICODE_COMBINING_CLASS_NUKTA: Diacritic nukta marks in Brahmi-derived scripts | 
|---|
| 130 | * @HB_UNICODE_COMBINING_CLASS_KANA_VOICING: Hiragana/Katakana voicing marks | 
|---|
| 131 | * @HB_UNICODE_COMBINING_CLASS_VIRAMA: Viramas | 
|---|
| 132 | * @HB_UNICODE_COMBINING_CLASS_CCC10: [Hebrew] | 
|---|
| 133 | * @HB_UNICODE_COMBINING_CLASS_CCC11: [Hebrew] | 
|---|
| 134 | * @HB_UNICODE_COMBINING_CLASS_CCC12: [Hebrew] | 
|---|
| 135 | * @HB_UNICODE_COMBINING_CLASS_CCC13: [Hebrew] | 
|---|
| 136 | * @HB_UNICODE_COMBINING_CLASS_CCC14: [Hebrew] | 
|---|
| 137 | * @HB_UNICODE_COMBINING_CLASS_CCC15: [Hebrew] | 
|---|
| 138 | * @HB_UNICODE_COMBINING_CLASS_CCC16: [Hebrew] | 
|---|
| 139 | * @HB_UNICODE_COMBINING_CLASS_CCC17: [Hebrew] | 
|---|
| 140 | * @HB_UNICODE_COMBINING_CLASS_CCC18: [Hebrew] | 
|---|
| 141 | * @HB_UNICODE_COMBINING_CLASS_CCC19: [Hebrew] | 
|---|
| 142 | * @HB_UNICODE_COMBINING_CLASS_CCC20: [Hebrew] | 
|---|
| 143 | * @HB_UNICODE_COMBINING_CLASS_CCC21: [Hebrew] | 
|---|
| 144 | * @HB_UNICODE_COMBINING_CLASS_CCC22: [Hebrew] | 
|---|
| 145 | * @HB_UNICODE_COMBINING_CLASS_CCC23: [Hebrew] | 
|---|
| 146 | * @HB_UNICODE_COMBINING_CLASS_CCC24: [Hebrew] | 
|---|
| 147 | * @HB_UNICODE_COMBINING_CLASS_CCC25: [Hebrew] | 
|---|
| 148 | * @HB_UNICODE_COMBINING_CLASS_CCC26: [Hebrew] | 
|---|
| 149 | * @HB_UNICODE_COMBINING_CLASS_CCC27: [Arabic] | 
|---|
| 150 | * @HB_UNICODE_COMBINING_CLASS_CCC28: [Arabic] | 
|---|
| 151 | * @HB_UNICODE_COMBINING_CLASS_CCC29: [Arabic] | 
|---|
| 152 | * @HB_UNICODE_COMBINING_CLASS_CCC30: [Arabic] | 
|---|
| 153 | * @HB_UNICODE_COMBINING_CLASS_CCC31: [Arabic] | 
|---|
| 154 | * @HB_UNICODE_COMBINING_CLASS_CCC32: [Arabic] | 
|---|
| 155 | * @HB_UNICODE_COMBINING_CLASS_CCC33: [Arabic] | 
|---|
| 156 | * @HB_UNICODE_COMBINING_CLASS_CCC34: [Arabic] | 
|---|
| 157 | * @HB_UNICODE_COMBINING_CLASS_CCC35: [Arabic] | 
|---|
| 158 | * @HB_UNICODE_COMBINING_CLASS_CCC36: [Syriac] | 
|---|
| 159 | * @HB_UNICODE_COMBINING_CLASS_CCC84: [Telugu] | 
|---|
| 160 | * @HB_UNICODE_COMBINING_CLASS_CCC91: [Telugu] | 
|---|
| 161 | * @HB_UNICODE_COMBINING_CLASS_CCC103: [Thai] | 
|---|
| 162 | * @HB_UNICODE_COMBINING_CLASS_CCC107: [Thai] | 
|---|
| 163 | * @HB_UNICODE_COMBINING_CLASS_CCC118: [Lao] | 
|---|
| 164 | * @HB_UNICODE_COMBINING_CLASS_CCC122: [Lao] | 
|---|
| 165 | * @HB_UNICODE_COMBINING_CLASS_CCC129: [Tibetan] | 
|---|
| 166 | * @HB_UNICODE_COMBINING_CLASS_CCC130: [Tibetan] | 
|---|
| 167 | * @HB_UNICODE_COMBINING_CLASS_CCC132: [Tibetan] Since: 7.2.0 | 
|---|
| 168 | * @HB_UNICODE_COMBINING_CLASS_ATTACHED_BELOW_LEFT: Marks attached at the bottom left | 
|---|
| 169 | * @HB_UNICODE_COMBINING_CLASS_ATTACHED_BELOW: Marks attached directly below | 
|---|
| 170 | * @HB_UNICODE_COMBINING_CLASS_ATTACHED_ABOVE: Marks attached directly above | 
|---|
| 171 | * @HB_UNICODE_COMBINING_CLASS_ATTACHED_ABOVE_RIGHT: Marks attached at the top right | 
|---|
| 172 | * @HB_UNICODE_COMBINING_CLASS_BELOW_LEFT: Distinct marks at the bottom left | 
|---|
| 173 | * @HB_UNICODE_COMBINING_CLASS_BELOW: Distinct marks directly below | 
|---|
| 174 | * @HB_UNICODE_COMBINING_CLASS_BELOW_RIGHT: Distinct marks at the bottom right | 
|---|
| 175 | * @HB_UNICODE_COMBINING_CLASS_LEFT: Distinct marks to the left | 
|---|
| 176 | * @HB_UNICODE_COMBINING_CLASS_RIGHT: Distinct marks to the right | 
|---|
| 177 | * @HB_UNICODE_COMBINING_CLASS_ABOVE_LEFT: Distinct marks at the top left | 
|---|
| 178 | * @HB_UNICODE_COMBINING_CLASS_ABOVE: Distinct marks directly above | 
|---|
| 179 | * @HB_UNICODE_COMBINING_CLASS_ABOVE_RIGHT: Distinct marks at the top right | 
|---|
| 180 | * @HB_UNICODE_COMBINING_CLASS_DOUBLE_BELOW: Distinct marks subtending two bases | 
|---|
| 181 | * @HB_UNICODE_COMBINING_CLASS_DOUBLE_ABOVE: Distinct marks extending above two bases | 
|---|
| 182 | * @HB_UNICODE_COMBINING_CLASS_IOTA_SUBSCRIPT: Greek iota subscript only | 
|---|
| 183 | * @HB_UNICODE_COMBINING_CLASS_INVALID: Invalid combining class | 
|---|
| 184 | * | 
|---|
| 185 | * Data type for the Canonical_Combining_Class (ccc) property | 
|---|
| 186 | * from the Unicode Character Database. | 
|---|
| 187 | * | 
|---|
| 188 | * <note>Note: newer versions of Unicode may add new values. | 
|---|
| 189 | * Client programs should be ready to handle any value in the 0..254 range | 
|---|
| 190 | * being returned from hb_unicode_combining_class().</note> | 
|---|
| 191 | * | 
|---|
| 192 | **/ | 
|---|
| 193 | typedef enum | 
|---|
| 194 | { | 
|---|
| 195 | HB_UNICODE_COMBINING_CLASS_NOT_REORDERED	= 0, | 
|---|
| 196 | HB_UNICODE_COMBINING_CLASS_OVERLAY		= 1, | 
|---|
| 197 | HB_UNICODE_COMBINING_CLASS_NUKTA		= 7, | 
|---|
| 198 | HB_UNICODE_COMBINING_CLASS_KANA_VOICING	= 8, | 
|---|
| 199 | HB_UNICODE_COMBINING_CLASS_VIRAMA		= 9, | 
|---|
| 200 |  | 
|---|
| 201 | /* Hebrew */ | 
|---|
| 202 | HB_UNICODE_COMBINING_CLASS_CCC10	=  10, | 
|---|
| 203 | HB_UNICODE_COMBINING_CLASS_CCC11	=  11, | 
|---|
| 204 | HB_UNICODE_COMBINING_CLASS_CCC12	=  12, | 
|---|
| 205 | HB_UNICODE_COMBINING_CLASS_CCC13	=  13, | 
|---|
| 206 | HB_UNICODE_COMBINING_CLASS_CCC14	=  14, | 
|---|
| 207 | HB_UNICODE_COMBINING_CLASS_CCC15	=  15, | 
|---|
| 208 | HB_UNICODE_COMBINING_CLASS_CCC16	=  16, | 
|---|
| 209 | HB_UNICODE_COMBINING_CLASS_CCC17	=  17, | 
|---|
| 210 | HB_UNICODE_COMBINING_CLASS_CCC18	=  18, | 
|---|
| 211 | HB_UNICODE_COMBINING_CLASS_CCC19	=  19, | 
|---|
| 212 | HB_UNICODE_COMBINING_CLASS_CCC20	=  20, | 
|---|
| 213 | HB_UNICODE_COMBINING_CLASS_CCC21	=  21, | 
|---|
| 214 | HB_UNICODE_COMBINING_CLASS_CCC22	=  22, | 
|---|
| 215 | HB_UNICODE_COMBINING_CLASS_CCC23	=  23, | 
|---|
| 216 | HB_UNICODE_COMBINING_CLASS_CCC24	=  24, | 
|---|
| 217 | HB_UNICODE_COMBINING_CLASS_CCC25	=  25, | 
|---|
| 218 | HB_UNICODE_COMBINING_CLASS_CCC26	=  26, | 
|---|
| 219 |  | 
|---|
| 220 | /* Arabic */ | 
|---|
| 221 | HB_UNICODE_COMBINING_CLASS_CCC27	=  27, | 
|---|
| 222 | HB_UNICODE_COMBINING_CLASS_CCC28	=  28, | 
|---|
| 223 | HB_UNICODE_COMBINING_CLASS_CCC29	=  29, | 
|---|
| 224 | HB_UNICODE_COMBINING_CLASS_CCC30	=  30, | 
|---|
| 225 | HB_UNICODE_COMBINING_CLASS_CCC31	=  31, | 
|---|
| 226 | HB_UNICODE_COMBINING_CLASS_CCC32	=  32, | 
|---|
| 227 | HB_UNICODE_COMBINING_CLASS_CCC33	=  33, | 
|---|
| 228 | HB_UNICODE_COMBINING_CLASS_CCC34	=  34, | 
|---|
| 229 | HB_UNICODE_COMBINING_CLASS_CCC35	=  35, | 
|---|
| 230 |  | 
|---|
| 231 | /* Syriac */ | 
|---|
| 232 | HB_UNICODE_COMBINING_CLASS_CCC36	=  36, | 
|---|
| 233 |  | 
|---|
| 234 | /* Telugu */ | 
|---|
| 235 | HB_UNICODE_COMBINING_CLASS_CCC84	=  84, | 
|---|
| 236 | HB_UNICODE_COMBINING_CLASS_CCC91	=  91, | 
|---|
| 237 |  | 
|---|
| 238 | /* Thai */ | 
|---|
| 239 | HB_UNICODE_COMBINING_CLASS_CCC103	= 103, | 
|---|
| 240 | HB_UNICODE_COMBINING_CLASS_CCC107	= 107, | 
|---|
| 241 |  | 
|---|
| 242 | /* Lao */ | 
|---|
| 243 | HB_UNICODE_COMBINING_CLASS_CCC118	= 118, | 
|---|
| 244 | HB_UNICODE_COMBINING_CLASS_CCC122	= 122, | 
|---|
| 245 |  | 
|---|
| 246 | /* Tibetan */ | 
|---|
| 247 | HB_UNICODE_COMBINING_CLASS_CCC129	= 129, | 
|---|
| 248 | HB_UNICODE_COMBINING_CLASS_CCC130	= 130, | 
|---|
| 249 | HB_UNICODE_COMBINING_CLASS_CCC132	= 132, | 
|---|
| 250 |  | 
|---|
| 251 |  | 
|---|
| 252 | HB_UNICODE_COMBINING_CLASS_ATTACHED_BELOW_LEFT	= 200, | 
|---|
| 253 | HB_UNICODE_COMBINING_CLASS_ATTACHED_BELOW		= 202, | 
|---|
| 254 | HB_UNICODE_COMBINING_CLASS_ATTACHED_ABOVE		= 214, | 
|---|
| 255 | HB_UNICODE_COMBINING_CLASS_ATTACHED_ABOVE_RIGHT	= 216, | 
|---|
| 256 | HB_UNICODE_COMBINING_CLASS_BELOW_LEFT			= 218, | 
|---|
| 257 | HB_UNICODE_COMBINING_CLASS_BELOW			= 220, | 
|---|
| 258 | HB_UNICODE_COMBINING_CLASS_BELOW_RIGHT		= 222, | 
|---|
| 259 | HB_UNICODE_COMBINING_CLASS_LEFT			= 224, | 
|---|
| 260 | HB_UNICODE_COMBINING_CLASS_RIGHT			= 226, | 
|---|
| 261 | HB_UNICODE_COMBINING_CLASS_ABOVE_LEFT			= 228, | 
|---|
| 262 | HB_UNICODE_COMBINING_CLASS_ABOVE			= 230, | 
|---|
| 263 | HB_UNICODE_COMBINING_CLASS_ABOVE_RIGHT		= 232, | 
|---|
| 264 | HB_UNICODE_COMBINING_CLASS_DOUBLE_BELOW		= 233, | 
|---|
| 265 | HB_UNICODE_COMBINING_CLASS_DOUBLE_ABOVE		= 234, | 
|---|
| 266 |  | 
|---|
| 267 | HB_UNICODE_COMBINING_CLASS_IOTA_SUBSCRIPT		= 240, | 
|---|
| 268 |  | 
|---|
| 269 | HB_UNICODE_COMBINING_CLASS_INVALID	= 255 | 
|---|
| 270 | } hb_unicode_combining_class_t; | 
|---|
| 271 |  | 
|---|
| 272 |  | 
|---|
| 273 | /* | 
|---|
| 274 | * hb_unicode_funcs_t | 
|---|
| 275 | */ | 
|---|
| 276 |  | 
|---|
| 277 | /** | 
|---|
| 278 | * hb_unicode_funcs_t: | 
|---|
| 279 | * | 
|---|
| 280 | * Data type containing a set of virtual methods used for | 
|---|
| 281 | * accessing various Unicode character properties. | 
|---|
| 282 | * | 
|---|
| 283 | * HarfBuzz provides a default function for each of the | 
|---|
| 284 | * methods in #hb_unicode_funcs_t. Client programs can implement | 
|---|
| 285 | * their own replacements for the individual Unicode functions, as | 
|---|
| 286 | * needed, and replace the default by calling the setter for a | 
|---|
| 287 | * method. | 
|---|
| 288 | **/ | 
|---|
| 289 | typedef struct hb_unicode_funcs_t hb_unicode_funcs_t; | 
|---|
| 290 |  | 
|---|
| 291 |  | 
|---|
| 292 | /* | 
|---|
| 293 | * just give me the best implementation you've got there. | 
|---|
| 294 | */ | 
|---|
| 295 | HB_EXTERN hb_unicode_funcs_t * | 
|---|
| 296 | hb_unicode_funcs_get_default (void); | 
|---|
| 297 |  | 
|---|
| 298 |  | 
|---|
| 299 | HB_EXTERN hb_unicode_funcs_t * | 
|---|
| 300 | hb_unicode_funcs_create (hb_unicode_funcs_t *parent); | 
|---|
| 301 |  | 
|---|
| 302 | HB_EXTERN hb_unicode_funcs_t * | 
|---|
| 303 | hb_unicode_funcs_get_empty (void); | 
|---|
| 304 |  | 
|---|
| 305 | HB_EXTERN hb_unicode_funcs_t * | 
|---|
| 306 | hb_unicode_funcs_reference (hb_unicode_funcs_t *ufuncs); | 
|---|
| 307 |  | 
|---|
| 308 | HB_EXTERN void | 
|---|
| 309 | hb_unicode_funcs_destroy (hb_unicode_funcs_t *ufuncs); | 
|---|
| 310 |  | 
|---|
| 311 | HB_EXTERN hb_bool_t | 
|---|
| 312 | hb_unicode_funcs_set_user_data (hb_unicode_funcs_t *ufuncs, | 
|---|
| 313 | hb_user_data_key_t *key, | 
|---|
| 314 | void *              data, | 
|---|
| 315 | hb_destroy_func_t   destroy, | 
|---|
| 316 | hb_bool_t           replace); | 
|---|
| 317 |  | 
|---|
| 318 |  | 
|---|
| 319 | HB_EXTERN void * | 
|---|
| 320 | hb_unicode_funcs_get_user_data (const hb_unicode_funcs_t *ufuncs, | 
|---|
| 321 | hb_user_data_key_t       *key); | 
|---|
| 322 |  | 
|---|
| 323 |  | 
|---|
| 324 | HB_EXTERN void | 
|---|
| 325 | hb_unicode_funcs_make_immutable (hb_unicode_funcs_t *ufuncs); | 
|---|
| 326 |  | 
|---|
| 327 | HB_EXTERN hb_bool_t | 
|---|
| 328 | hb_unicode_funcs_is_immutable (hb_unicode_funcs_t *ufuncs); | 
|---|
| 329 |  | 
|---|
| 330 | HB_EXTERN hb_unicode_funcs_t * | 
|---|
| 331 | hb_unicode_funcs_get_parent (hb_unicode_funcs_t *ufuncs); | 
|---|
| 332 |  | 
|---|
| 333 |  | 
|---|
| 334 | /* | 
|---|
| 335 | * funcs | 
|---|
| 336 | */ | 
|---|
| 337 |  | 
|---|
| 338 | /* typedefs */ | 
|---|
| 339 |  | 
|---|
| 340 | /** | 
|---|
| 341 | * hb_unicode_combining_class_func_t: | 
|---|
| 342 | * @ufuncs: A Unicode-functions structure | 
|---|
| 343 | * @unicode: The code point to query | 
|---|
| 344 | * @user_data: User data pointer passed by the caller | 
|---|
| 345 | * | 
|---|
| 346 | * A virtual method for the #hb_unicode_funcs_t structure. | 
|---|
| 347 | * | 
|---|
| 348 | * This method should retrieve the Canonical Combining Class (ccc) | 
|---|
| 349 | * property for a specified Unicode code point. | 
|---|
| 350 | * | 
|---|
| 351 | * Return value: The #hb_unicode_combining_class_t of @unicode | 
|---|
| 352 | * | 
|---|
| 353 | **/ | 
|---|
| 354 | typedef hb_unicode_combining_class_t	(*hb_unicode_combining_class_func_t)	(hb_unicode_funcs_t *ufuncs, | 
|---|
| 355 | hb_codepoint_t      unicode, | 
|---|
| 356 | void               *user_data); | 
|---|
| 357 |  | 
|---|
| 358 | /** | 
|---|
| 359 | * hb_unicode_general_category_func_t: | 
|---|
| 360 | * @ufuncs: A Unicode-functions structure | 
|---|
| 361 | * @unicode: The code point to query | 
|---|
| 362 | * @user_data: User data pointer passed by the caller | 
|---|
| 363 | * | 
|---|
| 364 | * A virtual method for the #hb_unicode_funcs_t structure. | 
|---|
| 365 | * | 
|---|
| 366 | * This method should retrieve the General Category property for | 
|---|
| 367 | * a specified Unicode code point. | 
|---|
| 368 | * | 
|---|
| 369 | * Return value: The #hb_unicode_general_category_t of @unicode | 
|---|
| 370 | * | 
|---|
| 371 | **/ | 
|---|
| 372 | typedef hb_unicode_general_category_t	(*hb_unicode_general_category_func_t)	(hb_unicode_funcs_t *ufuncs, | 
|---|
| 373 | hb_codepoint_t      unicode, | 
|---|
| 374 | void               *user_data); | 
|---|
| 375 |  | 
|---|
| 376 | /** | 
|---|
| 377 | * hb_unicode_mirroring_func_t: | 
|---|
| 378 | * @ufuncs: A Unicode-functions structure | 
|---|
| 379 | * @unicode: The code point to query | 
|---|
| 380 | * @user_data: User data pointer passed by the caller | 
|---|
| 381 | * | 
|---|
| 382 | * A virtual method for the #hb_unicode_funcs_t structure. | 
|---|
| 383 | * | 
|---|
| 384 | * This method should retrieve the Bi-Directional Mirroring Glyph | 
|---|
| 385 | * code point for a specified Unicode code point. | 
|---|
| 386 | * | 
|---|
| 387 | * <note>Note: If a code point does not have a specified | 
|---|
| 388 | * Bi-Directional Mirroring Glyph defined, the method should | 
|---|
| 389 | * return the original code point.</note> | 
|---|
| 390 | * | 
|---|
| 391 | * Return value: The #hb_codepoint_t of the Mirroring Glyph for @unicode | 
|---|
| 392 | * | 
|---|
| 393 | **/ | 
|---|
| 394 | typedef hb_codepoint_t			(*hb_unicode_mirroring_func_t)		(hb_unicode_funcs_t *ufuncs, | 
|---|
| 395 | hb_codepoint_t      unicode, | 
|---|
| 396 | void               *user_data); | 
|---|
| 397 |  | 
|---|
| 398 | /** | 
|---|
| 399 | * hb_unicode_script_func_t: | 
|---|
| 400 | * @ufuncs: A Unicode-functions structure | 
|---|
| 401 | * @unicode: The code point to query | 
|---|
| 402 | * @user_data: User data pointer passed by the caller | 
|---|
| 403 | * | 
|---|
| 404 | * A virtual method for the #hb_unicode_funcs_t structure. | 
|---|
| 405 | * | 
|---|
| 406 | * This method should retrieve the Script property for a | 
|---|
| 407 | * specified Unicode code point. | 
|---|
| 408 | * | 
|---|
| 409 | * Return value: The #hb_script_t of @unicode | 
|---|
| 410 | * | 
|---|
| 411 | **/ | 
|---|
| 412 | typedef hb_script_t			(*hb_unicode_script_func_t)		(hb_unicode_funcs_t *ufuncs, | 
|---|
| 413 | hb_codepoint_t      unicode, | 
|---|
| 414 | void               *user_data); | 
|---|
| 415 |  | 
|---|
| 416 | /** | 
|---|
| 417 | * hb_unicode_compose_func_t: | 
|---|
| 418 | * @ufuncs: A Unicode-functions structure | 
|---|
| 419 | * @a: The first code point to compose | 
|---|
| 420 | * @b: The second code point to compose | 
|---|
| 421 | * @ab: (out): The composed code point | 
|---|
| 422 | * @user_data: user data pointer passed by the caller | 
|---|
| 423 | * | 
|---|
| 424 | * A virtual method for the #hb_unicode_funcs_t structure. | 
|---|
| 425 | * | 
|---|
| 426 | * This method should compose a sequence of two input Unicode code | 
|---|
| 427 | * points by canonical equivalence, returning the composed code | 
|---|
| 428 | * point in a #hb_codepoint_t output parameter (if successful). | 
|---|
| 429 | * The method must return an #hb_bool_t indicating the success | 
|---|
| 430 | * of the composition. | 
|---|
| 431 | * | 
|---|
| 432 | * Return value: `true` is @a,@b composed, `false` otherwise | 
|---|
| 433 | * | 
|---|
| 434 | **/ | 
|---|
| 435 | typedef hb_bool_t			(*hb_unicode_compose_func_t)		(hb_unicode_funcs_t *ufuncs, | 
|---|
| 436 | hb_codepoint_t      a, | 
|---|
| 437 | hb_codepoint_t      b, | 
|---|
| 438 | hb_codepoint_t     *ab, | 
|---|
| 439 | void               *user_data); | 
|---|
| 440 |  | 
|---|
| 441 | /** | 
|---|
| 442 | * hb_unicode_decompose_func_t: | 
|---|
| 443 | * @ufuncs: A Unicode-functions structure | 
|---|
| 444 | * @ab: The code point to decompose | 
|---|
| 445 | * @a: (out): The first decomposed code point | 
|---|
| 446 | * @b: (out): The second decomposed code point | 
|---|
| 447 | * @user_data: user data pointer passed by the caller | 
|---|
| 448 | * | 
|---|
| 449 | * A virtual method for the #hb_unicode_funcs_t structure. | 
|---|
| 450 | * | 
|---|
| 451 | * This method should decompose an input Unicode code point, | 
|---|
| 452 | * returning the two decomposed code points in #hb_codepoint_t | 
|---|
| 453 | * output parameters (if successful). The method must return an | 
|---|
| 454 | * #hb_bool_t indicating the success of the composition. | 
|---|
| 455 | * | 
|---|
| 456 | * Return value: `true` if @ab decomposed, `false` otherwise | 
|---|
| 457 | * | 
|---|
| 458 | **/ | 
|---|
| 459 | typedef hb_bool_t			(*hb_unicode_decompose_func_t)		(hb_unicode_funcs_t *ufuncs, | 
|---|
| 460 | hb_codepoint_t      ab, | 
|---|
| 461 | hb_codepoint_t     *a, | 
|---|
| 462 | hb_codepoint_t     *b, | 
|---|
| 463 | void               *user_data); | 
|---|
| 464 |  | 
|---|
| 465 | /* func setters */ | 
|---|
| 466 |  | 
|---|
| 467 | /** | 
|---|
| 468 | * hb_unicode_funcs_set_combining_class_func: | 
|---|
| 469 | * @ufuncs: A Unicode-functions structure | 
|---|
| 470 | * @func: (closure user_data) (destroy destroy) (scope notified): The callback function to assign | 
|---|
| 471 | * @user_data: Data to pass to @func | 
|---|
| 472 | * @destroy: (nullable): The function to call when @user_data is not needed anymore | 
|---|
| 473 | * | 
|---|
| 474 | * Sets the implementation function for #hb_unicode_combining_class_func_t. | 
|---|
| 475 | * | 
|---|
| 476 | * Since: 0.9.2 | 
|---|
| 477 | **/ | 
|---|
| 478 | HB_EXTERN void | 
|---|
| 479 | hb_unicode_funcs_set_combining_class_func (hb_unicode_funcs_t *ufuncs, | 
|---|
| 480 | hb_unicode_combining_class_func_t func, | 
|---|
| 481 | void *user_data, hb_destroy_func_t destroy); | 
|---|
| 482 |  | 
|---|
| 483 | /** | 
|---|
| 484 | * hb_unicode_funcs_set_general_category_func: | 
|---|
| 485 | * @ufuncs: A Unicode-functions structure | 
|---|
| 486 | * @func: (closure user_data) (destroy destroy) (scope notified): The callback function to assign | 
|---|
| 487 | * @user_data: Data to pass to @func | 
|---|
| 488 | * @destroy: (nullable): The function to call when @user_data is not needed anymore | 
|---|
| 489 | * | 
|---|
| 490 | * Sets the implementation function for #hb_unicode_general_category_func_t. | 
|---|
| 491 | * | 
|---|
| 492 | * Since: 0.9.2 | 
|---|
| 493 | **/ | 
|---|
| 494 | HB_EXTERN void | 
|---|
| 495 | hb_unicode_funcs_set_general_category_func (hb_unicode_funcs_t *ufuncs, | 
|---|
| 496 | hb_unicode_general_category_func_t func, | 
|---|
| 497 | void *user_data, hb_destroy_func_t destroy); | 
|---|
| 498 |  | 
|---|
| 499 | /** | 
|---|
| 500 | * hb_unicode_funcs_set_mirroring_func: | 
|---|
| 501 | * @ufuncs: A Unicode-functions structure | 
|---|
| 502 | * @func: (closure user_data) (destroy destroy) (scope notified): The callback function to assign | 
|---|
| 503 | * @user_data: Data to pass to @func | 
|---|
| 504 | * @destroy: (nullable): The function to call when @user_data is not needed anymore | 
|---|
| 505 | * | 
|---|
| 506 | * Sets the implementation function for #hb_unicode_mirroring_func_t. | 
|---|
| 507 | * | 
|---|
| 508 | * Since: 0.9.2 | 
|---|
| 509 | **/ | 
|---|
| 510 | HB_EXTERN void | 
|---|
| 511 | hb_unicode_funcs_set_mirroring_func (hb_unicode_funcs_t *ufuncs, | 
|---|
| 512 | hb_unicode_mirroring_func_t func, | 
|---|
| 513 | void *user_data, hb_destroy_func_t destroy); | 
|---|
| 514 |  | 
|---|
| 515 | /** | 
|---|
| 516 | * hb_unicode_funcs_set_script_func: | 
|---|
| 517 | * @ufuncs: A Unicode-functions structure | 
|---|
| 518 | * @func: (closure user_data) (destroy destroy) (scope notified): The callback function to assign | 
|---|
| 519 | * @user_data: Data to pass to @func | 
|---|
| 520 | * @destroy: (nullable): The function to call when @user_data is not needed anymore | 
|---|
| 521 | * | 
|---|
| 522 | * Sets the implementation function for #hb_unicode_script_func_t. | 
|---|
| 523 | * | 
|---|
| 524 | * Since: 0.9.2 | 
|---|
| 525 | **/ | 
|---|
| 526 | HB_EXTERN void | 
|---|
| 527 | hb_unicode_funcs_set_script_func (hb_unicode_funcs_t *ufuncs, | 
|---|
| 528 | hb_unicode_script_func_t func, | 
|---|
| 529 | void *user_data, hb_destroy_func_t destroy); | 
|---|
| 530 |  | 
|---|
| 531 | /** | 
|---|
| 532 | * hb_unicode_funcs_set_compose_func: | 
|---|
| 533 | * @ufuncs: A Unicode-functions structure | 
|---|
| 534 | * @func: (closure user_data) (destroy destroy) (scope notified): The callback function to assign | 
|---|
| 535 | * @user_data: Data to pass to @func | 
|---|
| 536 | * @destroy: (nullable): The function to call when @user_data is not needed anymore | 
|---|
| 537 | * | 
|---|
| 538 | * Sets the implementation function for #hb_unicode_compose_func_t. | 
|---|
| 539 | * | 
|---|
| 540 | * Since: 0.9.2 | 
|---|
| 541 | **/ | 
|---|
| 542 | HB_EXTERN void | 
|---|
| 543 | hb_unicode_funcs_set_compose_func (hb_unicode_funcs_t *ufuncs, | 
|---|
| 544 | hb_unicode_compose_func_t func, | 
|---|
| 545 | void *user_data, hb_destroy_func_t destroy); | 
|---|
| 546 |  | 
|---|
| 547 | /** | 
|---|
| 548 | * hb_unicode_funcs_set_decompose_func: | 
|---|
| 549 | * @ufuncs: A Unicode-functions structure | 
|---|
| 550 | * @func: (closure user_data) (destroy destroy) (scope notified): The callback function to assign | 
|---|
| 551 | * @user_data: Data to pass to @func | 
|---|
| 552 | * @destroy: (nullable): The function to call when @user_data is not needed anymore | 
|---|
| 553 | * | 
|---|
| 554 | * Sets the implementation function for #hb_unicode_decompose_func_t. | 
|---|
| 555 | * | 
|---|
| 556 | * Since: 0.9.2 | 
|---|
| 557 | **/ | 
|---|
| 558 | HB_EXTERN void | 
|---|
| 559 | hb_unicode_funcs_set_decompose_func (hb_unicode_funcs_t *ufuncs, | 
|---|
| 560 | hb_unicode_decompose_func_t func, | 
|---|
| 561 | void *user_data, hb_destroy_func_t destroy); | 
|---|
| 562 |  | 
|---|
| 563 | /* accessors */ | 
|---|
| 564 |  | 
|---|
| 565 | /** | 
|---|
| 566 | * hb_unicode_combining_class: | 
|---|
| 567 | * @ufuncs: The Unicode-functions structure | 
|---|
| 568 | * @unicode: The code point to query | 
|---|
| 569 | * | 
|---|
| 570 | * Retrieves the Canonical Combining Class (ccc) property | 
|---|
| 571 | * of code point @unicode. | 
|---|
| 572 | * | 
|---|
| 573 | * Return value: The #hb_unicode_combining_class_t of @unicode | 
|---|
| 574 | * | 
|---|
| 575 | * Since: 0.9.2 | 
|---|
| 576 | **/ | 
|---|
| 577 | HB_EXTERN hb_unicode_combining_class_t | 
|---|
| 578 | hb_unicode_combining_class (hb_unicode_funcs_t *ufuncs, | 
|---|
| 579 | hb_codepoint_t unicode); | 
|---|
| 580 |  | 
|---|
| 581 | /** | 
|---|
| 582 | * hb_unicode_general_category: | 
|---|
| 583 | * @ufuncs: The Unicode-functions structure | 
|---|
| 584 | * @unicode: The code point to query | 
|---|
| 585 | * | 
|---|
| 586 | * Retrieves the General Category (gc) property | 
|---|
| 587 | * of code point @unicode. | 
|---|
| 588 | * | 
|---|
| 589 | * Return value: The #hb_unicode_general_category_t of @unicode | 
|---|
| 590 | * | 
|---|
| 591 | * Since: 0.9.2 | 
|---|
| 592 | **/ | 
|---|
| 593 | HB_EXTERN hb_unicode_general_category_t | 
|---|
| 594 | hb_unicode_general_category (hb_unicode_funcs_t *ufuncs, | 
|---|
| 595 | hb_codepoint_t unicode); | 
|---|
| 596 |  | 
|---|
| 597 | /** | 
|---|
| 598 | * hb_unicode_mirroring: | 
|---|
| 599 | * @ufuncs: The Unicode-functions structure | 
|---|
| 600 | * @unicode: The code point to query | 
|---|
| 601 | * | 
|---|
| 602 | * Retrieves the Bi-directional Mirroring Glyph code | 
|---|
| 603 | * point defined for code point @unicode. | 
|---|
| 604 | * | 
|---|
| 605 | * Return value: The #hb_codepoint_t of the Mirroring Glyph for @unicode | 
|---|
| 606 | * | 
|---|
| 607 | * Since: 0.9.2 | 
|---|
| 608 | **/ | 
|---|
| 609 | HB_EXTERN hb_codepoint_t | 
|---|
| 610 | hb_unicode_mirroring (hb_unicode_funcs_t *ufuncs, | 
|---|
| 611 | hb_codepoint_t unicode); | 
|---|
| 612 |  | 
|---|
| 613 | /** | 
|---|
| 614 | * hb_unicode_script: | 
|---|
| 615 | * @ufuncs: The Unicode-functions structure | 
|---|
| 616 | * @unicode: The code point to query | 
|---|
| 617 | * | 
|---|
| 618 | * Retrieves the #hb_script_t script to which code | 
|---|
| 619 | * point @unicode belongs. | 
|---|
| 620 | * | 
|---|
| 621 | * Return value: The #hb_script_t of @unicode | 
|---|
| 622 | * | 
|---|
| 623 | * Since: 0.9.2 | 
|---|
| 624 | **/ | 
|---|
| 625 | HB_EXTERN hb_script_t | 
|---|
| 626 | hb_unicode_script (hb_unicode_funcs_t *ufuncs, | 
|---|
| 627 | hb_codepoint_t unicode); | 
|---|
| 628 |  | 
|---|
| 629 | HB_EXTERN hb_bool_t | 
|---|
| 630 | hb_unicode_compose (hb_unicode_funcs_t *ufuncs, | 
|---|
| 631 | hb_codepoint_t      a, | 
|---|
| 632 | hb_codepoint_t      b, | 
|---|
| 633 | hb_codepoint_t     *ab); | 
|---|
| 634 |  | 
|---|
| 635 | HB_EXTERN hb_bool_t | 
|---|
| 636 | hb_unicode_decompose (hb_unicode_funcs_t *ufuncs, | 
|---|
| 637 | hb_codepoint_t      ab, | 
|---|
| 638 | hb_codepoint_t     *a, | 
|---|
| 639 | hb_codepoint_t     *b); | 
|---|
| 640 |  | 
|---|
| 641 | HB_END_DECLS | 
|---|
| 642 |  | 
|---|
| 643 | #endif /* HB_UNICODE_H */ | 
|---|
| 644 |  | 
|---|