gfx/harfbuzz/src/hb-unicode.h

Sat, 03 Jan 2015 20:18:00 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Sat, 03 Jan 2015 20:18:00 +0100
branch
TOR_BUG_3246
changeset 7
129ffea94266
permissions
-rw-r--r--

Conditionally enable double key logic according to:
private browsing mode or privacy.thirdparty.isolate preference and
implement in GetCookieStringCommon and FindCookie where it counts...
With some reservations of how to convince FindCookie users to test
condition and pass a nullptr when disabling double key logic.

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

mercurial