2 * Copyright (C) 2007,2008,2009 Red Hat, Inc.
4 * This is part of HarfBuzz, a text shaping library.
6 * Permission is hereby granted, without written agreement and without
7 * license or royalty fees, to use, copy, modify, and distribute this
8 * software and its documentation for any purpose, provided that the
9 * above copyright notice and the following two paragraphs appear in
10 * all copies of this software.
12 * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
13 * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
14 * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
15 * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
18 * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
19 * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
20 * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
21 * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
22 * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
24 * Red Hat Author(s): Behdad Esfahbod
31 # define HB_BEGIN_DECLS extern "C" {
32 # define HB_END_DECLS }
33 # else /* !__cplusplus */
34 # define HB_BEGIN_DECLS
36 # endif /* !__cplusplus */
42 typedef signed char int8_t;
43 typedef unsigned char uint8_t;
44 typedef signed short int16_t;
45 typedef unsigned short uint16_t;
46 typedef signed int int32_t;
47 typedef unsigned int uint32_t;
48 typedef signed long long int64_t;
49 typedef unsigned long long uint64_t;
54 typedef int hb_bool_t;
56 typedef uint32_t hb_codepoint_t;
57 typedef int32_t hb_position_t;
58 typedef uint32_t hb_mask_t;
60 typedef union _hb_var_int_t {
69 typedef void (*hb_destroy_func_t) (void *user_data);
74 typedef uint32_t hb_tag_t;
76 #define HB_TAG(a,b,c,d) ((hb_tag_t)((((uint8_t)(a))<<24)|(((uint8_t)(b))<<16)|(((uint8_t)(c))<<8)|((uint8_t)(d))))
78 #define HB_TAG_NONE HB_TAG(0,0,0,0)
80 hb_tag_t hb_tag_from_string (const char *s);
85 typedef enum _hb_direction_t {
86 HB_DIRECTION_INVALID = -1,
93 #define HB_DIRECTION_IS_HORIZONTAL(dir) ((((unsigned int) (dir)) & ~1U) == 0)
94 #define HB_DIRECTION_IS_VERTICAL(dir) ((((unsigned int) (dir)) & ~1U) == 2)
95 #define HB_DIRECTION_IS_FORWARD(dir) ((((unsigned int) (dir)) & ~2U) == 0)
96 #define HB_DIRECTION_IS_BACKWARD(dir) ((((unsigned int) (dir)) & ~2U) == 1)
97 #define HB_DIRECTION_REVERSE(dir) ((hb_direction_t) (((unsigned int) (dir)) ^ 1))
102 typedef struct _hb_language_t *hb_language_t;
105 hb_language_from_string (const char *str);
108 hb_language_to_string (hb_language_t language);
111 /* hb_unicode_general_category_t */
115 HB_UNICODE_GENERAL_CATEGORY_CONTROL, /* Cc */
116 HB_UNICODE_GENERAL_CATEGORY_FORMAT, /* Cf */
117 HB_UNICODE_GENERAL_CATEGORY_UNASSIGNED, /* Cn */
118 HB_UNICODE_GENERAL_CATEGORY_PRIVATE_USE, /* Co */
119 HB_UNICODE_GENERAL_CATEGORY_SURROGATE, /* Cs */
120 HB_UNICODE_GENERAL_CATEGORY_LOWERCASE_LETTER, /* Ll */
121 HB_UNICODE_GENERAL_CATEGORY_MODIFIER_LETTER, /* Lm */
122 HB_UNICODE_GENERAL_CATEGORY_OTHER_LETTER, /* Lo */
123 HB_UNICODE_GENERAL_CATEGORY_TITLECASE_LETTER, /* Lt */
124 HB_UNICODE_GENERAL_CATEGORY_UPPERCASE_LETTER, /* Lu */
125 HB_UNICODE_GENERAL_CATEGORY_COMBINING_MARK, /* Mc */
126 HB_UNICODE_GENERAL_CATEGORY_ENCLOSING_MARK, /* Me */
127 HB_UNICODE_GENERAL_CATEGORY_NON_SPACING_MARK, /* Mn */
128 HB_UNICODE_GENERAL_CATEGORY_DECIMAL_NUMBER, /* Nd */
129 HB_UNICODE_GENERAL_CATEGORY_LETTER_NUMBER, /* Nl */
130 HB_UNICODE_GENERAL_CATEGORY_OTHER_NUMBER, /* No */
131 HB_UNICODE_GENERAL_CATEGORY_CONNECT_PUNCTUATION, /* Pc */
132 HB_UNICODE_GENERAL_CATEGORY_DASH_PUNCTUATION, /* Pd */
133 HB_UNICODE_GENERAL_CATEGORY_CLOSE_PUNCTUATION, /* Pe */
134 HB_UNICODE_GENERAL_CATEGORY_FINAL_PUNCTUATION, /* Pf */
135 HB_UNICODE_GENERAL_CATEGORY_INITIAL_PUNCTUATION, /* Pi */
136 HB_UNICODE_GENERAL_CATEGORY_OTHER_PUNCTUATION, /* Po */
137 HB_UNICODE_GENERAL_CATEGORY_OPEN_PUNCTUATION, /* Ps */
138 HB_UNICODE_GENERAL_CATEGORY_CURRENCY_SYMBOL, /* Sc */
139 HB_UNICODE_GENERAL_CATEGORY_MODIFIER_SYMBOL, /* Sk */
140 HB_UNICODE_GENERAL_CATEGORY_MATH_SYMBOL, /* Sm */
141 HB_UNICODE_GENERAL_CATEGORY_OTHER_SYMBOL, /* So */
142 HB_UNICODE_GENERAL_CATEGORY_LINE_SEPARATOR, /* Zl */
143 HB_UNICODE_GENERAL_CATEGORY_PARAGRAPH_SEPARATOR, /* Zp */
144 HB_UNICODE_GENERAL_CATEGORY_SPACE_SEPARATOR /* Zs */
145 } hb_unicode_general_category_t;
151 { /* ISO 15924 code */
152 HB_SCRIPT_INVALID = -1,
154 HB_SCRIPT_COMMON = 0, /* Zyyy */
155 HB_SCRIPT_INHERITED, /* Qaai */
156 HB_SCRIPT_ARABIC, /* Arab */
157 HB_SCRIPT_ARMENIAN, /* Armn */
158 HB_SCRIPT_BENGALI, /* Beng */
159 HB_SCRIPT_BOPOMOFO, /* Bopo */
160 HB_SCRIPT_CHEROKEE, /* Cher */
161 HB_SCRIPT_COPTIC, /* Qaac */
162 HB_SCRIPT_CYRILLIC, /* Cyrl (Cyrs) */
163 HB_SCRIPT_DESERET, /* Dsrt */
164 HB_SCRIPT_DEVANAGARI, /* Deva */
165 HB_SCRIPT_ETHIOPIC, /* Ethi */
166 HB_SCRIPT_GEORGIAN, /* Geor (Geon, Geoa) */
167 HB_SCRIPT_GOTHIC, /* Goth */
168 HB_SCRIPT_GREEK, /* Grek */
169 HB_SCRIPT_GUJARATI, /* Gujr */
170 HB_SCRIPT_GURMUKHI, /* Guru */
171 HB_SCRIPT_HAN, /* Hani */
172 HB_SCRIPT_HANGUL, /* Hang */
173 HB_SCRIPT_HEBREW, /* Hebr */
174 HB_SCRIPT_HIRAGANA, /* Hira */
175 HB_SCRIPT_KANNADA, /* Knda */
176 HB_SCRIPT_KATAKANA, /* Kana */
177 HB_SCRIPT_KHMER, /* Khmr */
178 HB_SCRIPT_LAO, /* Laoo */
179 HB_SCRIPT_LATIN, /* Latn (Latf, Latg) */
180 HB_SCRIPT_MALAYALAM, /* Mlym */
181 HB_SCRIPT_MONGOLIAN, /* Mong */
182 HB_SCRIPT_MYANMAR, /* Mymr */
183 HB_SCRIPT_OGHAM, /* Ogam */
184 HB_SCRIPT_OLD_ITALIC, /* Ital */
185 HB_SCRIPT_ORIYA, /* Orya */
186 HB_SCRIPT_RUNIC, /* Runr */
187 HB_SCRIPT_SINHALA, /* Sinh */
188 HB_SCRIPT_SYRIAC, /* Syrc (Syrj, Syrn, Syre) */
189 HB_SCRIPT_TAMIL, /* Taml */
190 HB_SCRIPT_TELUGU, /* Telu */
191 HB_SCRIPT_THAANA, /* Thaa */
192 HB_SCRIPT_THAI, /* Thai */
193 HB_SCRIPT_TIBETAN, /* Tibt */
194 HB_SCRIPT_CANADIAN_ABORIGINAL, /* Cans */
195 HB_SCRIPT_YI, /* Yiii */
196 HB_SCRIPT_TAGALOG, /* Tglg */
197 HB_SCRIPT_HANUNOO, /* Hano */
198 HB_SCRIPT_BUHID, /* Buhd */
199 HB_SCRIPT_TAGBANWA, /* Tagb */
201 /* Unicode-4.0 additions */
202 HB_SCRIPT_BRAILLE, /* Brai */
203 HB_SCRIPT_CYPRIOT, /* Cprt */
204 HB_SCRIPT_LIMBU, /* Limb */
205 HB_SCRIPT_OSMANYA, /* Osma */
206 HB_SCRIPT_SHAVIAN, /* Shaw */
207 HB_SCRIPT_LINEAR_B, /* Linb */
208 HB_SCRIPT_TAI_LE, /* Tale */
209 HB_SCRIPT_UGARITIC, /* Ugar */
211 /* Unicode-4.1 additions */
212 HB_SCRIPT_NEW_TAI_LUE, /* Talu */
213 HB_SCRIPT_BUGINESE, /* Bugi */
214 HB_SCRIPT_GLAGOLITIC, /* Glag */
215 HB_SCRIPT_TIFINAGH, /* Tfng */
216 HB_SCRIPT_SYLOTI_NAGRI, /* Sylo */
217 HB_SCRIPT_OLD_PERSIAN, /* Xpeo */
218 HB_SCRIPT_KHAROSHTHI, /* Khar */
220 /* Unicode-5.0 additions */
221 HB_SCRIPT_UNKNOWN, /* Zzzz */
222 HB_SCRIPT_BALINESE, /* Bali */
223 HB_SCRIPT_CUNEIFORM, /* Xsux */
224 HB_SCRIPT_PHOENICIAN, /* Phnx */
225 HB_SCRIPT_PHAGS_PA, /* Phag */
226 HB_SCRIPT_NKO, /* Nkoo */
228 /* Unicode-5.1 additions */
229 HB_SCRIPT_KAYAH_LI, /* Kali */
230 HB_SCRIPT_LEPCHA, /* Lepc */
231 HB_SCRIPT_REJANG, /* Rjng */
232 HB_SCRIPT_SUNDANESE, /* Sund */
233 HB_SCRIPT_SAURASHTRA, /* Saur */
234 HB_SCRIPT_CHAM, /* Cham */
235 HB_SCRIPT_OL_CHIKI, /* Olck */
236 HB_SCRIPT_VAI, /* Vaii */
237 HB_SCRIPT_CARIAN, /* Cari */
238 HB_SCRIPT_LYCIAN, /* Lyci */
239 HB_SCRIPT_LYDIAN, /* Lydi */
241 /* Unicode-5.2 additions */
242 HB_SCRIPT_AVESTAN, /* Avst */
243 HB_SCRIPT_BAMUM, /* Bamu */
244 HB_SCRIPT_EGYPTIAN_HIEROGLYPHS, /* Egyp */
245 HB_SCRIPT_IMPERIAL_ARAMAIC, /* Armi */
246 HB_SCRIPT_INSCRIPTIONAL_PAHLAVI, /* Phli */
247 HB_SCRIPT_INSCRIPTIONAL_PARTHIAN, /* Prti */
248 HB_SCRIPT_JAVANESE, /* Java */
249 HB_SCRIPT_KAITHI, /* Kthi */
250 HB_SCRIPT_LISU, /* Lisu */
251 HB_SCRIPT_MEETEI_MAYEK, /* Mtei */
252 HB_SCRIPT_OLD_SOUTH_ARABIAN, /* Sarb */
253 HB_SCRIPT_OLD_TURKIC, /* Orkh */
254 HB_SCRIPT_SAMARITAN, /* Samr */
255 HB_SCRIPT_TAI_THAM, /* Lana */
256 HB_SCRIPT_TAI_VIET, /* Tavt */
258 /* Unicode-6.0 additions */
259 HB_SCRIPT_BATAK, /* Batk */
260 HB_SCRIPT_BRAHMI, /* Brah */
261 HB_SCRIPT_MANDAIC /* Mand */
265 /* Script functions */
268 hb_script_from_iso15924_tag (hb_tag_t tag);
270 /* suger for tag_from_string() then script_from_iso15924_tag */
272 hb_script_from_string (const char *s);
275 hb_script_to_iso15924_tag (hb_script_t script);
278 hb_script_get_horizontal_direction (hb_script_t script);
283 #endif /* HB_COMMON_H */