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