1 #![allow(non_camel_case_types)]
2 #![allow(clippy::unreadable_literal)]
3 
4 #[cfg(any(target_os = "android", all(unix, not(target_vendor = "apple"))))]
5 extern crate freetype;
6 
7 #[cfg(target_vendor = "apple")]
8 pub mod coretext;
9 
10 #[cfg(any(target_os = "android", all(unix, not(target_vendor = "apple"))))]
11 extern "C" {
hb_ft_font_create_referenced(face: freetype::freetype::FT_Face) -> *mut hb_font_t12     pub fn hb_ft_font_create_referenced(face: freetype::freetype::FT_Face) -> *mut hb_font_t;
13 }
14 
15 /* automatically generated by rust-bindgen */
16 
17 pub const HB_FEATURE_GLOBAL_START: u32 = 0;
18 pub const HB_UNICODE_MAX: u32 = 1114111;
19 pub const HB_BUFFER_REPLACEMENT_CODEPOINT_DEFAULT: u32 = 65533;
20 pub const HB_OT_MAX_TAGS_PER_SCRIPT: u32 = 3;
21 pub const HB_OT_MAX_TAGS_PER_LANGUAGE: u32 = 3;
22 pub const HB_OT_LAYOUT_NO_SCRIPT_INDEX: u32 = 65535;
23 pub const HB_OT_LAYOUT_NO_FEATURE_INDEX: u32 = 65535;
24 pub const HB_OT_LAYOUT_DEFAULT_LANGUAGE_INDEX: u32 = 65535;
25 pub const HB_OT_LAYOUT_NO_VARIATIONS_INDEX: u32 = 4294967295;
26 pub const HB_AAT_LAYOUT_NO_SELECTOR_INDEX: u32 = 65535;
27 pub type hb_bool_t = ::std::os::raw::c_int;
28 pub type hb_codepoint_t = u32;
29 pub type hb_position_t = i32;
30 pub type hb_mask_t = u32;
31 #[repr(C)]
32 #[derive(Copy, Clone)]
33 pub union _hb_var_int_t {
34     pub u32: u32,
35     pub i32: i32,
36     pub u16: [u16; 2usize],
37     pub i16: [i16; 2usize],
38     pub u8: [u8; 4usize],
39     pub i8: [i8; 4usize],
40     _bindgen_union_align: u32,
41 }
42 #[allow(non_snake_case)]
43 #[test]
bindgen_test_layout__hb_var_int_t()44 fn bindgen_test_layout__hb_var_int_t() {
45     assert_eq!(
46         ::std::mem::size_of::<_hb_var_int_t>(),
47         4usize,
48         concat!("Size of: ", stringify!(_hb_var_int_t))
49     );
50     assert_eq!(
51         ::std::mem::align_of::<_hb_var_int_t>(),
52         4usize,
53         concat!("Alignment of ", stringify!(_hb_var_int_t))
54     );
55     assert_eq!(
56         unsafe { &(*(::std::ptr::null::<_hb_var_int_t>())).u32 as *const _ as usize },
57         0usize,
58         concat!(
59             "Offset of field: ",
60             stringify!(_hb_var_int_t),
61             "::",
62             stringify!(u32)
63         )
64     );
65     assert_eq!(
66         unsafe { &(*(::std::ptr::null::<_hb_var_int_t>())).i32 as *const _ as usize },
67         0usize,
68         concat!(
69             "Offset of field: ",
70             stringify!(_hb_var_int_t),
71             "::",
72             stringify!(i32)
73         )
74     );
75     assert_eq!(
76         unsafe { &(*(::std::ptr::null::<_hb_var_int_t>())).u16 as *const _ as usize },
77         0usize,
78         concat!(
79             "Offset of field: ",
80             stringify!(_hb_var_int_t),
81             "::",
82             stringify!(u16)
83         )
84     );
85     assert_eq!(
86         unsafe { &(*(::std::ptr::null::<_hb_var_int_t>())).i16 as *const _ as usize },
87         0usize,
88         concat!(
89             "Offset of field: ",
90             stringify!(_hb_var_int_t),
91             "::",
92             stringify!(i16)
93         )
94     );
95     assert_eq!(
96         unsafe { &(*(::std::ptr::null::<_hb_var_int_t>())).u8 as *const _ as usize },
97         0usize,
98         concat!(
99             "Offset of field: ",
100             stringify!(_hb_var_int_t),
101             "::",
102             stringify!(u8)
103         )
104     );
105     assert_eq!(
106         unsafe { &(*(::std::ptr::null::<_hb_var_int_t>())).i8 as *const _ as usize },
107         0usize,
108         concat!(
109             "Offset of field: ",
110             stringify!(_hb_var_int_t),
111             "::",
112             stringify!(i8)
113         )
114     );
115 }
116 impl ::std::fmt::Debug for _hb_var_int_t {
fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result117     fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
118         write!(f, "_hb_var_int_t {{ ... }}")
119     }
120 }
121 pub type hb_var_int_t = _hb_var_int_t;
122 pub type hb_tag_t = u32;
123 extern "C" {
hb_tag_from_string( str: *const ::std::os::raw::c_char, len: ::std::os::raw::c_int, ) -> hb_tag_t124     pub fn hb_tag_from_string(
125         str: *const ::std::os::raw::c_char,
126         len: ::std::os::raw::c_int,
127     ) -> hb_tag_t;
128 }
129 extern "C" {
hb_tag_to_string(tag: hb_tag_t, buf: *mut ::std::os::raw::c_char)130     pub fn hb_tag_to_string(tag: hb_tag_t, buf: *mut ::std::os::raw::c_char);
131 }
132 pub const HB_DIRECTION_INVALID: hb_direction_t = 0;
133 pub const HB_DIRECTION_LTR: hb_direction_t = 4;
134 pub const HB_DIRECTION_RTL: hb_direction_t = 5;
135 pub const HB_DIRECTION_TTB: hb_direction_t = 6;
136 pub const HB_DIRECTION_BTT: hb_direction_t = 7;
137 /// hb_direction_t:
138 /// @HB_DIRECTION_INVALID: Initial, unset direction.
139 /// @HB_DIRECTION_LTR: Text is set horizontally from left to right.
140 /// @HB_DIRECTION_RTL: Text is set horizontally from right to left.
141 /// @HB_DIRECTION_TTB: Text is set vertically from top to bottom.
142 /// @HB_DIRECTION_BTT: Text is set vertically from bottom to top.
143 pub type hb_direction_t = u32;
144 extern "C" {
hb_direction_from_string( str: *const ::std::os::raw::c_char, len: ::std::os::raw::c_int, ) -> hb_direction_t145     pub fn hb_direction_from_string(
146         str: *const ::std::os::raw::c_char,
147         len: ::std::os::raw::c_int,
148     ) -> hb_direction_t;
149 }
150 extern "C" {
hb_direction_to_string(direction: hb_direction_t) -> *const ::std::os::raw::c_char151     pub fn hb_direction_to_string(direction: hb_direction_t) -> *const ::std::os::raw::c_char;
152 }
153 #[repr(C)]
154 #[derive(Debug, Copy, Clone)]
155 pub struct hb_language_impl_t {
156     _unused: [u8; 0],
157 }
158 pub type hb_language_t = *const hb_language_impl_t;
159 extern "C" {
hb_language_from_string( str: *const ::std::os::raw::c_char, len: ::std::os::raw::c_int, ) -> hb_language_t160     pub fn hb_language_from_string(
161         str: *const ::std::os::raw::c_char,
162         len: ::std::os::raw::c_int,
163     ) -> hb_language_t;
164 }
165 extern "C" {
hb_language_to_string(language: hb_language_t) -> *const ::std::os::raw::c_char166     pub fn hb_language_to_string(language: hb_language_t) -> *const ::std::os::raw::c_char;
167 }
168 extern "C" {
hb_language_get_default() -> hb_language_t169     pub fn hb_language_get_default() -> hb_language_t;
170 }
171 pub const HB_SCRIPT_COMMON: hb_script_t = 1517910393;
172 pub const HB_SCRIPT_INHERITED: hb_script_t = 1516858984;
173 pub const HB_SCRIPT_UNKNOWN: hb_script_t = 1517976186;
174 pub const HB_SCRIPT_ARABIC: hb_script_t = 1098015074;
175 pub const HB_SCRIPT_ARMENIAN: hb_script_t = 1098018158;
176 pub const HB_SCRIPT_BENGALI: hb_script_t = 1113943655;
177 pub const HB_SCRIPT_CYRILLIC: hb_script_t = 1132032620;
178 pub const HB_SCRIPT_DEVANAGARI: hb_script_t = 1147500129;
179 pub const HB_SCRIPT_GEORGIAN: hb_script_t = 1197830002;
180 pub const HB_SCRIPT_GREEK: hb_script_t = 1198679403;
181 pub const HB_SCRIPT_GUJARATI: hb_script_t = 1198877298;
182 pub const HB_SCRIPT_GURMUKHI: hb_script_t = 1198879349;
183 pub const HB_SCRIPT_HANGUL: hb_script_t = 1214344807;
184 pub const HB_SCRIPT_HAN: hb_script_t = 1214344809;
185 pub const HB_SCRIPT_HEBREW: hb_script_t = 1214603890;
186 pub const HB_SCRIPT_HIRAGANA: hb_script_t = 1214870113;
187 pub const HB_SCRIPT_KANNADA: hb_script_t = 1265525857;
188 pub const HB_SCRIPT_KATAKANA: hb_script_t = 1264676449;
189 pub const HB_SCRIPT_LAO: hb_script_t = 1281453935;
190 pub const HB_SCRIPT_LATIN: hb_script_t = 1281455214;
191 pub const HB_SCRIPT_MALAYALAM: hb_script_t = 1298954605;
192 pub const HB_SCRIPT_ORIYA: hb_script_t = 1332902241;
193 pub const HB_SCRIPT_TAMIL: hb_script_t = 1415671148;
194 pub const HB_SCRIPT_TELUGU: hb_script_t = 1415933045;
195 pub const HB_SCRIPT_THAI: hb_script_t = 1416126825;
196 pub const HB_SCRIPT_TIBETAN: hb_script_t = 1416192628;
197 pub const HB_SCRIPT_BOPOMOFO: hb_script_t = 1114599535;
198 pub const HB_SCRIPT_BRAILLE: hb_script_t = 1114792297;
199 pub const HB_SCRIPT_CANADIAN_SYLLABICS: hb_script_t = 1130458739;
200 pub const HB_SCRIPT_CHEROKEE: hb_script_t = 1130915186;
201 pub const HB_SCRIPT_ETHIOPIC: hb_script_t = 1165256809;
202 pub const HB_SCRIPT_KHMER: hb_script_t = 1265134962;
203 pub const HB_SCRIPT_MONGOLIAN: hb_script_t = 1299148391;
204 pub const HB_SCRIPT_MYANMAR: hb_script_t = 1299803506;
205 pub const HB_SCRIPT_OGHAM: hb_script_t = 1332175213;
206 pub const HB_SCRIPT_RUNIC: hb_script_t = 1383427698;
207 pub const HB_SCRIPT_SINHALA: hb_script_t = 1399418472;
208 pub const HB_SCRIPT_SYRIAC: hb_script_t = 1400468067;
209 pub const HB_SCRIPT_THAANA: hb_script_t = 1416126817;
210 pub const HB_SCRIPT_YI: hb_script_t = 1500080489;
211 pub const HB_SCRIPT_DESERET: hb_script_t = 1148416628;
212 pub const HB_SCRIPT_GOTHIC: hb_script_t = 1198486632;
213 pub const HB_SCRIPT_OLD_ITALIC: hb_script_t = 1232363884;
214 pub const HB_SCRIPT_BUHID: hb_script_t = 1114990692;
215 pub const HB_SCRIPT_HANUNOO: hb_script_t = 1214344815;
216 pub const HB_SCRIPT_TAGALOG: hb_script_t = 1416064103;
217 pub const HB_SCRIPT_TAGBANWA: hb_script_t = 1415669602;
218 pub const HB_SCRIPT_CYPRIOT: hb_script_t = 1131442804;
219 pub const HB_SCRIPT_LIMBU: hb_script_t = 1281977698;
220 pub const HB_SCRIPT_LINEAR_B: hb_script_t = 1281977954;
221 pub const HB_SCRIPT_OSMANYA: hb_script_t = 1332964705;
222 pub const HB_SCRIPT_SHAVIAN: hb_script_t = 1399349623;
223 pub const HB_SCRIPT_TAI_LE: hb_script_t = 1415670885;
224 pub const HB_SCRIPT_UGARITIC: hb_script_t = 1432838514;
225 pub const HB_SCRIPT_BUGINESE: hb_script_t = 1114990441;
226 pub const HB_SCRIPT_COPTIC: hb_script_t = 1131376756;
227 pub const HB_SCRIPT_GLAGOLITIC: hb_script_t = 1198285159;
228 pub const HB_SCRIPT_KHAROSHTHI: hb_script_t = 1265131890;
229 pub const HB_SCRIPT_NEW_TAI_LUE: hb_script_t = 1415670901;
230 pub const HB_SCRIPT_OLD_PERSIAN: hb_script_t = 1483761007;
231 pub const HB_SCRIPT_SYLOTI_NAGRI: hb_script_t = 1400466543;
232 pub const HB_SCRIPT_TIFINAGH: hb_script_t = 1415999079;
233 pub const HB_SCRIPT_BALINESE: hb_script_t = 1113681001;
234 pub const HB_SCRIPT_CUNEIFORM: hb_script_t = 1483961720;
235 pub const HB_SCRIPT_NKO: hb_script_t = 1315663727;
236 pub const HB_SCRIPT_PHAGS_PA: hb_script_t = 1349017959;
237 pub const HB_SCRIPT_PHOENICIAN: hb_script_t = 1349021304;
238 pub const HB_SCRIPT_CARIAN: hb_script_t = 1130459753;
239 pub const HB_SCRIPT_CHAM: hb_script_t = 1130914157;
240 pub const HB_SCRIPT_KAYAH_LI: hb_script_t = 1264675945;
241 pub const HB_SCRIPT_LEPCHA: hb_script_t = 1281716323;
242 pub const HB_SCRIPT_LYCIAN: hb_script_t = 1283023721;
243 pub const HB_SCRIPT_LYDIAN: hb_script_t = 1283023977;
244 pub const HB_SCRIPT_OL_CHIKI: hb_script_t = 1332503403;
245 pub const HB_SCRIPT_REJANG: hb_script_t = 1382706791;
246 pub const HB_SCRIPT_SAURASHTRA: hb_script_t = 1398895986;
247 pub const HB_SCRIPT_SUNDANESE: hb_script_t = 1400204900;
248 pub const HB_SCRIPT_VAI: hb_script_t = 1449224553;
249 pub const HB_SCRIPT_AVESTAN: hb_script_t = 1098281844;
250 pub const HB_SCRIPT_BAMUM: hb_script_t = 1113681269;
251 pub const HB_SCRIPT_EGYPTIAN_HIEROGLYPHS: hb_script_t = 1164409200;
252 pub const HB_SCRIPT_IMPERIAL_ARAMAIC: hb_script_t = 1098018153;
253 pub const HB_SCRIPT_INSCRIPTIONAL_PAHLAVI: hb_script_t = 1349020777;
254 pub const HB_SCRIPT_INSCRIPTIONAL_PARTHIAN: hb_script_t = 1349678185;
255 pub const HB_SCRIPT_JAVANESE: hb_script_t = 1247901281;
256 pub const HB_SCRIPT_KAITHI: hb_script_t = 1265920105;
257 pub const HB_SCRIPT_LISU: hb_script_t = 1281979253;
258 pub const HB_SCRIPT_MEETEI_MAYEK: hb_script_t = 1299473769;
259 pub const HB_SCRIPT_OLD_SOUTH_ARABIAN: hb_script_t = 1398895202;
260 pub const HB_SCRIPT_OLD_TURKIC: hb_script_t = 1332898664;
261 pub const HB_SCRIPT_SAMARITAN: hb_script_t = 1398893938;
262 pub const HB_SCRIPT_TAI_THAM: hb_script_t = 1281453665;
263 pub const HB_SCRIPT_TAI_VIET: hb_script_t = 1415673460;
264 pub const HB_SCRIPT_BATAK: hb_script_t = 1113683051;
265 pub const HB_SCRIPT_BRAHMI: hb_script_t = 1114792296;
266 pub const HB_SCRIPT_MANDAIC: hb_script_t = 1298230884;
267 pub const HB_SCRIPT_CHAKMA: hb_script_t = 1130457965;
268 pub const HB_SCRIPT_MEROITIC_CURSIVE: hb_script_t = 1298494051;
269 pub const HB_SCRIPT_MEROITIC_HIEROGLYPHS: hb_script_t = 1298494063;
270 pub const HB_SCRIPT_MIAO: hb_script_t = 1349284452;
271 pub const HB_SCRIPT_SHARADA: hb_script_t = 1399353956;
272 pub const HB_SCRIPT_SORA_SOMPENG: hb_script_t = 1399812705;
273 pub const HB_SCRIPT_TAKRI: hb_script_t = 1415670642;
274 pub const HB_SCRIPT_BASSA_VAH: hb_script_t = 1113682803;
275 pub const HB_SCRIPT_CAUCASIAN_ALBANIAN: hb_script_t = 1097295970;
276 pub const HB_SCRIPT_DUPLOYAN: hb_script_t = 1148547180;
277 pub const HB_SCRIPT_ELBASAN: hb_script_t = 1164730977;
278 pub const HB_SCRIPT_GRANTHA: hb_script_t = 1198678382;
279 pub const HB_SCRIPT_KHOJKI: hb_script_t = 1265135466;
280 pub const HB_SCRIPT_KHUDAWADI: hb_script_t = 1399418468;
281 pub const HB_SCRIPT_LINEAR_A: hb_script_t = 1281977953;
282 pub const HB_SCRIPT_MAHAJANI: hb_script_t = 1298229354;
283 pub const HB_SCRIPT_MANICHAEAN: hb_script_t = 1298230889;
284 pub const HB_SCRIPT_MENDE_KIKAKUI: hb_script_t = 1298493028;
285 pub const HB_SCRIPT_MODI: hb_script_t = 1299145833;
286 pub const HB_SCRIPT_MRO: hb_script_t = 1299345263;
287 pub const HB_SCRIPT_NABATAEAN: hb_script_t = 1315070324;
288 pub const HB_SCRIPT_OLD_NORTH_ARABIAN: hb_script_t = 1315009122;
289 pub const HB_SCRIPT_OLD_PERMIC: hb_script_t = 1348825709;
290 pub const HB_SCRIPT_PAHAWH_HMONG: hb_script_t = 1215131239;
291 pub const HB_SCRIPT_PALMYRENE: hb_script_t = 1348562029;
292 pub const HB_SCRIPT_PAU_CIN_HAU: hb_script_t = 1348564323;
293 pub const HB_SCRIPT_PSALTER_PAHLAVI: hb_script_t = 1349020784;
294 pub const HB_SCRIPT_SIDDHAM: hb_script_t = 1399415908;
295 pub const HB_SCRIPT_TIRHUTA: hb_script_t = 1416196712;
296 pub const HB_SCRIPT_WARANG_CITI: hb_script_t = 1466004065;
297 pub const HB_SCRIPT_AHOM: hb_script_t = 1097363309;
298 pub const HB_SCRIPT_ANATOLIAN_HIEROGLYPHS: hb_script_t = 1215067511;
299 pub const HB_SCRIPT_HATRAN: hb_script_t = 1214346354;
300 pub const HB_SCRIPT_MULTANI: hb_script_t = 1299541108;
301 pub const HB_SCRIPT_OLD_HUNGARIAN: hb_script_t = 1215655527;
302 pub const HB_SCRIPT_SIGNWRITING: hb_script_t = 1399287415;
303 pub const HB_SCRIPT_ADLAM: hb_script_t = 1097100397;
304 pub const HB_SCRIPT_BHAIKSUKI: hb_script_t = 1114139507;
305 pub const HB_SCRIPT_MARCHEN: hb_script_t = 1298231907;
306 pub const HB_SCRIPT_OSAGE: hb_script_t = 1332963173;
307 pub const HB_SCRIPT_TANGUT: hb_script_t = 1415671399;
308 pub const HB_SCRIPT_NEWA: hb_script_t = 1315272545;
309 pub const HB_SCRIPT_MASARAM_GONDI: hb_script_t = 1198485101;
310 pub const HB_SCRIPT_NUSHU: hb_script_t = 1316186229;
311 pub const HB_SCRIPT_SOYOMBO: hb_script_t = 1399814511;
312 pub const HB_SCRIPT_ZANABAZAR_SQUARE: hb_script_t = 1516334690;
313 pub const HB_SCRIPT_DOGRA: hb_script_t = 1148151666;
314 pub const HB_SCRIPT_GUNJALA_GONDI: hb_script_t = 1198485095;
315 pub const HB_SCRIPT_HANIFI_ROHINGYA: hb_script_t = 1383032935;
316 pub const HB_SCRIPT_MAKASAR: hb_script_t = 1298230113;
317 pub const HB_SCRIPT_MEDEFAIDRIN: hb_script_t = 1298490470;
318 pub const HB_SCRIPT_OLD_SOGDIAN: hb_script_t = 1399809903;
319 pub const HB_SCRIPT_SOGDIAN: hb_script_t = 1399809892;
320 pub const HB_SCRIPT_ELYMAIC: hb_script_t = 1164736877;
321 pub const HB_SCRIPT_NANDINAGARI: hb_script_t = 1315008100;
322 pub const HB_SCRIPT_NYIAKENG_PUACHUE_HMONG: hb_script_t = 1215131248;
323 pub const HB_SCRIPT_WANCHO: hb_script_t = 1466132591;
324 pub const HB_SCRIPT_INVALID: hb_script_t = 0;
325 pub const _HB_SCRIPT_MAX_VALUE: hb_script_t = 2147483647;
326 pub const _HB_SCRIPT_MAX_VALUE_SIGNED: hb_script_t = 2147483647;
327 pub type hb_script_t = u32;
328 extern "C" {
hb_script_from_iso15924_tag(tag: hb_tag_t) -> hb_script_t329     pub fn hb_script_from_iso15924_tag(tag: hb_tag_t) -> hb_script_t;
330 }
331 extern "C" {
hb_script_from_string( str: *const ::std::os::raw::c_char, len: ::std::os::raw::c_int, ) -> hb_script_t332     pub fn hb_script_from_string(
333         str: *const ::std::os::raw::c_char,
334         len: ::std::os::raw::c_int,
335     ) -> hb_script_t;
336 }
337 extern "C" {
hb_script_to_iso15924_tag(script: hb_script_t) -> hb_tag_t338     pub fn hb_script_to_iso15924_tag(script: hb_script_t) -> hb_tag_t;
339 }
340 extern "C" {
hb_script_get_horizontal_direction(script: hb_script_t) -> hb_direction_t341     pub fn hb_script_get_horizontal_direction(script: hb_script_t) -> hb_direction_t;
342 }
343 #[repr(C)]
344 #[derive(Debug, Copy, Clone)]
345 pub struct hb_user_data_key_t {
346     pub unused: ::std::os::raw::c_char,
347 }
348 #[test]
bindgen_test_layout_hb_user_data_key_t()349 fn bindgen_test_layout_hb_user_data_key_t() {
350     assert_eq!(
351         ::std::mem::size_of::<hb_user_data_key_t>(),
352         1usize,
353         concat!("Size of: ", stringify!(hb_user_data_key_t))
354     );
355     assert_eq!(
356         ::std::mem::align_of::<hb_user_data_key_t>(),
357         1usize,
358         concat!("Alignment of ", stringify!(hb_user_data_key_t))
359     );
360     assert_eq!(
361         unsafe { &(*(::std::ptr::null::<hb_user_data_key_t>())).unused as *const _ as usize },
362         0usize,
363         concat!(
364             "Offset of field: ",
365             stringify!(hb_user_data_key_t),
366             "::",
367             stringify!(unused)
368         )
369     );
370 }
371 pub type hb_destroy_func_t =
372     ::std::option::Option<unsafe extern "C" fn(user_data: *mut ::std::os::raw::c_void)>;
373 #[repr(C)]
374 #[derive(Debug, Copy, Clone)]
375 pub struct hb_feature_t {
376     pub tag: hb_tag_t,
377     pub value: u32,
378     pub start: ::std::os::raw::c_uint,
379     pub end: ::std::os::raw::c_uint,
380 }
381 #[test]
bindgen_test_layout_hb_feature_t()382 fn bindgen_test_layout_hb_feature_t() {
383     assert_eq!(
384         ::std::mem::size_of::<hb_feature_t>(),
385         16usize,
386         concat!("Size of: ", stringify!(hb_feature_t))
387     );
388     assert_eq!(
389         ::std::mem::align_of::<hb_feature_t>(),
390         4usize,
391         concat!("Alignment of ", stringify!(hb_feature_t))
392     );
393     assert_eq!(
394         unsafe { &(*(::std::ptr::null::<hb_feature_t>())).tag as *const _ as usize },
395         0usize,
396         concat!(
397             "Offset of field: ",
398             stringify!(hb_feature_t),
399             "::",
400             stringify!(tag)
401         )
402     );
403     assert_eq!(
404         unsafe { &(*(::std::ptr::null::<hb_feature_t>())).value as *const _ as usize },
405         4usize,
406         concat!(
407             "Offset of field: ",
408             stringify!(hb_feature_t),
409             "::",
410             stringify!(value)
411         )
412     );
413     assert_eq!(
414         unsafe { &(*(::std::ptr::null::<hb_feature_t>())).start as *const _ as usize },
415         8usize,
416         concat!(
417             "Offset of field: ",
418             stringify!(hb_feature_t),
419             "::",
420             stringify!(start)
421         )
422     );
423     assert_eq!(
424         unsafe { &(*(::std::ptr::null::<hb_feature_t>())).end as *const _ as usize },
425         12usize,
426         concat!(
427             "Offset of field: ",
428             stringify!(hb_feature_t),
429             "::",
430             stringify!(end)
431         )
432     );
433 }
434 extern "C" {
hb_feature_from_string( str: *const ::std::os::raw::c_char, len: ::std::os::raw::c_int, feature: *mut hb_feature_t, ) -> hb_bool_t435     pub fn hb_feature_from_string(
436         str: *const ::std::os::raw::c_char,
437         len: ::std::os::raw::c_int,
438         feature: *mut hb_feature_t,
439     ) -> hb_bool_t;
440 }
441 extern "C" {
hb_feature_to_string( feature: *mut hb_feature_t, buf: *mut ::std::os::raw::c_char, size: ::std::os::raw::c_uint, )442     pub fn hb_feature_to_string(
443         feature: *mut hb_feature_t,
444         buf: *mut ::std::os::raw::c_char,
445         size: ::std::os::raw::c_uint,
446     );
447 }
448 /// hb_variation_t:
449 ///
450 /// Since: 1.4.2
451 #[repr(C)]
452 #[derive(Debug, Copy, Clone)]
453 pub struct hb_variation_t {
454     pub tag: hb_tag_t,
455     pub value: ::std::os::raw::c_float,
456 }
457 #[test]
bindgen_test_layout_hb_variation_t()458 fn bindgen_test_layout_hb_variation_t() {
459     assert_eq!(
460         ::std::mem::size_of::<hb_variation_t>(),
461         8usize,
462         concat!("Size of: ", stringify!(hb_variation_t))
463     );
464     assert_eq!(
465         ::std::mem::align_of::<hb_variation_t>(),
466         4usize,
467         concat!("Alignment of ", stringify!(hb_variation_t))
468     );
469     assert_eq!(
470         unsafe { &(*(::std::ptr::null::<hb_variation_t>())).tag as *const _ as usize },
471         0usize,
472         concat!(
473             "Offset of field: ",
474             stringify!(hb_variation_t),
475             "::",
476             stringify!(tag)
477         )
478     );
479     assert_eq!(
480         unsafe { &(*(::std::ptr::null::<hb_variation_t>())).value as *const _ as usize },
481         4usize,
482         concat!(
483             "Offset of field: ",
484             stringify!(hb_variation_t),
485             "::",
486             stringify!(value)
487         )
488     );
489 }
490 extern "C" {
hb_variation_from_string( str: *const ::std::os::raw::c_char, len: ::std::os::raw::c_int, variation: *mut hb_variation_t, ) -> hb_bool_t491     pub fn hb_variation_from_string(
492         str: *const ::std::os::raw::c_char,
493         len: ::std::os::raw::c_int,
494         variation: *mut hb_variation_t,
495     ) -> hb_bool_t;
496 }
497 extern "C" {
hb_variation_to_string( variation: *mut hb_variation_t, buf: *mut ::std::os::raw::c_char, size: ::std::os::raw::c_uint, )498     pub fn hb_variation_to_string(
499         variation: *mut hb_variation_t,
500         buf: *mut ::std::os::raw::c_char,
501         size: ::std::os::raw::c_uint,
502     );
503 }
504 /// hb_color_t:
505 ///
506 /// Data type for holding color values.
507 ///
508 /// Since: 2.1.0
509 pub type hb_color_t = u32;
510 extern "C" {
hb_color_get_alpha(color: hb_color_t) -> u8511     pub fn hb_color_get_alpha(color: hb_color_t) -> u8;
512 }
513 extern "C" {
hb_color_get_red(color: hb_color_t) -> u8514     pub fn hb_color_get_red(color: hb_color_t) -> u8;
515 }
516 extern "C" {
hb_color_get_green(color: hb_color_t) -> u8517     pub fn hb_color_get_green(color: hb_color_t) -> u8;
518 }
519 extern "C" {
hb_color_get_blue(color: hb_color_t) -> u8520     pub fn hb_color_get_blue(color: hb_color_t) -> u8;
521 }
522 pub const HB_MEMORY_MODE_DUPLICATE: hb_memory_mode_t = 0;
523 pub const HB_MEMORY_MODE_READONLY: hb_memory_mode_t = 1;
524 pub const HB_MEMORY_MODE_WRITABLE: hb_memory_mode_t = 2;
525 pub const HB_MEMORY_MODE_READONLY_MAY_MAKE_WRITABLE: hb_memory_mode_t = 3;
526 pub type hb_memory_mode_t = u32;
527 #[repr(C)]
528 #[derive(Debug, Copy, Clone)]
529 pub struct hb_blob_t {
530     _unused: [u8; 0],
531 }
532 extern "C" {
hb_blob_create( data: *const ::std::os::raw::c_char, length: ::std::os::raw::c_uint, mode: hb_memory_mode_t, user_data: *mut ::std::os::raw::c_void, destroy: hb_destroy_func_t, ) -> *mut hb_blob_t533     pub fn hb_blob_create(
534         data: *const ::std::os::raw::c_char,
535         length: ::std::os::raw::c_uint,
536         mode: hb_memory_mode_t,
537         user_data: *mut ::std::os::raw::c_void,
538         destroy: hb_destroy_func_t,
539     ) -> *mut hb_blob_t;
540 }
541 extern "C" {
hb_blob_create_from_file(file_name: *const ::std::os::raw::c_char) -> *mut hb_blob_t542     pub fn hb_blob_create_from_file(file_name: *const ::std::os::raw::c_char) -> *mut hb_blob_t;
543 }
544 extern "C" {
hb_blob_create_sub_blob( parent: *mut hb_blob_t, offset: ::std::os::raw::c_uint, length: ::std::os::raw::c_uint, ) -> *mut hb_blob_t545     pub fn hb_blob_create_sub_blob(
546         parent: *mut hb_blob_t,
547         offset: ::std::os::raw::c_uint,
548         length: ::std::os::raw::c_uint,
549     ) -> *mut hb_blob_t;
550 }
551 extern "C" {
hb_blob_copy_writable_or_fail(blob: *mut hb_blob_t) -> *mut hb_blob_t552     pub fn hb_blob_copy_writable_or_fail(blob: *mut hb_blob_t) -> *mut hb_blob_t;
553 }
554 extern "C" {
hb_blob_get_empty() -> *mut hb_blob_t555     pub fn hb_blob_get_empty() -> *mut hb_blob_t;
556 }
557 extern "C" {
hb_blob_reference(blob: *mut hb_blob_t) -> *mut hb_blob_t558     pub fn hb_blob_reference(blob: *mut hb_blob_t) -> *mut hb_blob_t;
559 }
560 extern "C" {
hb_blob_destroy(blob: *mut hb_blob_t)561     pub fn hb_blob_destroy(blob: *mut hb_blob_t);
562 }
563 extern "C" {
hb_blob_set_user_data( blob: *mut hb_blob_t, key: *mut hb_user_data_key_t, data: *mut ::std::os::raw::c_void, destroy: hb_destroy_func_t, replace: hb_bool_t, ) -> hb_bool_t564     pub fn hb_blob_set_user_data(
565         blob: *mut hb_blob_t,
566         key: *mut hb_user_data_key_t,
567         data: *mut ::std::os::raw::c_void,
568         destroy: hb_destroy_func_t,
569         replace: hb_bool_t,
570     ) -> hb_bool_t;
571 }
572 extern "C" {
hb_blob_get_user_data( blob: *mut hb_blob_t, key: *mut hb_user_data_key_t, ) -> *mut ::std::os::raw::c_void573     pub fn hb_blob_get_user_data(
574         blob: *mut hb_blob_t,
575         key: *mut hb_user_data_key_t,
576     ) -> *mut ::std::os::raw::c_void;
577 }
578 extern "C" {
hb_blob_make_immutable(blob: *mut hb_blob_t)579     pub fn hb_blob_make_immutable(blob: *mut hb_blob_t);
580 }
581 extern "C" {
hb_blob_is_immutable(blob: *mut hb_blob_t) -> hb_bool_t582     pub fn hb_blob_is_immutable(blob: *mut hb_blob_t) -> hb_bool_t;
583 }
584 extern "C" {
hb_blob_get_length(blob: *mut hb_blob_t) -> ::std::os::raw::c_uint585     pub fn hb_blob_get_length(blob: *mut hb_blob_t) -> ::std::os::raw::c_uint;
586 }
587 extern "C" {
hb_blob_get_data( blob: *mut hb_blob_t, length: *mut ::std::os::raw::c_uint, ) -> *const ::std::os::raw::c_char588     pub fn hb_blob_get_data(
589         blob: *mut hb_blob_t,
590         length: *mut ::std::os::raw::c_uint,
591     ) -> *const ::std::os::raw::c_char;
592 }
593 extern "C" {
hb_blob_get_data_writable( blob: *mut hb_blob_t, length: *mut ::std::os::raw::c_uint, ) -> *mut ::std::os::raw::c_char594     pub fn hb_blob_get_data_writable(
595         blob: *mut hb_blob_t,
596         length: *mut ::std::os::raw::c_uint,
597     ) -> *mut ::std::os::raw::c_char;
598 }
599 pub const HB_UNICODE_GENERAL_CATEGORY_CONTROL: hb_unicode_general_category_t = 0;
600 pub const HB_UNICODE_GENERAL_CATEGORY_FORMAT: hb_unicode_general_category_t = 1;
601 pub const HB_UNICODE_GENERAL_CATEGORY_UNASSIGNED: hb_unicode_general_category_t = 2;
602 pub const HB_UNICODE_GENERAL_CATEGORY_PRIVATE_USE: hb_unicode_general_category_t = 3;
603 pub const HB_UNICODE_GENERAL_CATEGORY_SURROGATE: hb_unicode_general_category_t = 4;
604 pub const HB_UNICODE_GENERAL_CATEGORY_LOWERCASE_LETTER: hb_unicode_general_category_t = 5;
605 pub const HB_UNICODE_GENERAL_CATEGORY_MODIFIER_LETTER: hb_unicode_general_category_t = 6;
606 pub const HB_UNICODE_GENERAL_CATEGORY_OTHER_LETTER: hb_unicode_general_category_t = 7;
607 pub const HB_UNICODE_GENERAL_CATEGORY_TITLECASE_LETTER: hb_unicode_general_category_t = 8;
608 pub const HB_UNICODE_GENERAL_CATEGORY_UPPERCASE_LETTER: hb_unicode_general_category_t = 9;
609 pub const HB_UNICODE_GENERAL_CATEGORY_SPACING_MARK: hb_unicode_general_category_t = 10;
610 pub const HB_UNICODE_GENERAL_CATEGORY_ENCLOSING_MARK: hb_unicode_general_category_t = 11;
611 pub const HB_UNICODE_GENERAL_CATEGORY_NON_SPACING_MARK: hb_unicode_general_category_t = 12;
612 pub const HB_UNICODE_GENERAL_CATEGORY_DECIMAL_NUMBER: hb_unicode_general_category_t = 13;
613 pub const HB_UNICODE_GENERAL_CATEGORY_LETTER_NUMBER: hb_unicode_general_category_t = 14;
614 pub const HB_UNICODE_GENERAL_CATEGORY_OTHER_NUMBER: hb_unicode_general_category_t = 15;
615 pub const HB_UNICODE_GENERAL_CATEGORY_CONNECT_PUNCTUATION: hb_unicode_general_category_t = 16;
616 pub const HB_UNICODE_GENERAL_CATEGORY_DASH_PUNCTUATION: hb_unicode_general_category_t = 17;
617 pub const HB_UNICODE_GENERAL_CATEGORY_CLOSE_PUNCTUATION: hb_unicode_general_category_t = 18;
618 pub const HB_UNICODE_GENERAL_CATEGORY_FINAL_PUNCTUATION: hb_unicode_general_category_t = 19;
619 pub const HB_UNICODE_GENERAL_CATEGORY_INITIAL_PUNCTUATION: hb_unicode_general_category_t = 20;
620 pub const HB_UNICODE_GENERAL_CATEGORY_OTHER_PUNCTUATION: hb_unicode_general_category_t = 21;
621 pub const HB_UNICODE_GENERAL_CATEGORY_OPEN_PUNCTUATION: hb_unicode_general_category_t = 22;
622 pub const HB_UNICODE_GENERAL_CATEGORY_CURRENCY_SYMBOL: hb_unicode_general_category_t = 23;
623 pub const HB_UNICODE_GENERAL_CATEGORY_MODIFIER_SYMBOL: hb_unicode_general_category_t = 24;
624 pub const HB_UNICODE_GENERAL_CATEGORY_MATH_SYMBOL: hb_unicode_general_category_t = 25;
625 pub const HB_UNICODE_GENERAL_CATEGORY_OTHER_SYMBOL: hb_unicode_general_category_t = 26;
626 pub const HB_UNICODE_GENERAL_CATEGORY_LINE_SEPARATOR: hb_unicode_general_category_t = 27;
627 pub const HB_UNICODE_GENERAL_CATEGORY_PARAGRAPH_SEPARATOR: hb_unicode_general_category_t = 28;
628 pub const HB_UNICODE_GENERAL_CATEGORY_SPACE_SEPARATOR: hb_unicode_general_category_t = 29;
629 pub type hb_unicode_general_category_t = u32;
630 pub const HB_UNICODE_COMBINING_CLASS_NOT_REORDERED: hb_unicode_combining_class_t = 0;
631 pub const HB_UNICODE_COMBINING_CLASS_OVERLAY: hb_unicode_combining_class_t = 1;
632 pub const HB_UNICODE_COMBINING_CLASS_NUKTA: hb_unicode_combining_class_t = 7;
633 pub const HB_UNICODE_COMBINING_CLASS_KANA_VOICING: hb_unicode_combining_class_t = 8;
634 pub const HB_UNICODE_COMBINING_CLASS_VIRAMA: hb_unicode_combining_class_t = 9;
635 pub const HB_UNICODE_COMBINING_CLASS_CCC10: hb_unicode_combining_class_t = 10;
636 pub const HB_UNICODE_COMBINING_CLASS_CCC11: hb_unicode_combining_class_t = 11;
637 pub const HB_UNICODE_COMBINING_CLASS_CCC12: hb_unicode_combining_class_t = 12;
638 pub const HB_UNICODE_COMBINING_CLASS_CCC13: hb_unicode_combining_class_t = 13;
639 pub const HB_UNICODE_COMBINING_CLASS_CCC14: hb_unicode_combining_class_t = 14;
640 pub const HB_UNICODE_COMBINING_CLASS_CCC15: hb_unicode_combining_class_t = 15;
641 pub const HB_UNICODE_COMBINING_CLASS_CCC16: hb_unicode_combining_class_t = 16;
642 pub const HB_UNICODE_COMBINING_CLASS_CCC17: hb_unicode_combining_class_t = 17;
643 pub const HB_UNICODE_COMBINING_CLASS_CCC18: hb_unicode_combining_class_t = 18;
644 pub const HB_UNICODE_COMBINING_CLASS_CCC19: hb_unicode_combining_class_t = 19;
645 pub const HB_UNICODE_COMBINING_CLASS_CCC20: hb_unicode_combining_class_t = 20;
646 pub const HB_UNICODE_COMBINING_CLASS_CCC21: hb_unicode_combining_class_t = 21;
647 pub const HB_UNICODE_COMBINING_CLASS_CCC22: hb_unicode_combining_class_t = 22;
648 pub const HB_UNICODE_COMBINING_CLASS_CCC23: hb_unicode_combining_class_t = 23;
649 pub const HB_UNICODE_COMBINING_CLASS_CCC24: hb_unicode_combining_class_t = 24;
650 pub const HB_UNICODE_COMBINING_CLASS_CCC25: hb_unicode_combining_class_t = 25;
651 pub const HB_UNICODE_COMBINING_CLASS_CCC26: hb_unicode_combining_class_t = 26;
652 pub const HB_UNICODE_COMBINING_CLASS_CCC27: hb_unicode_combining_class_t = 27;
653 pub const HB_UNICODE_COMBINING_CLASS_CCC28: hb_unicode_combining_class_t = 28;
654 pub const HB_UNICODE_COMBINING_CLASS_CCC29: hb_unicode_combining_class_t = 29;
655 pub const HB_UNICODE_COMBINING_CLASS_CCC30: hb_unicode_combining_class_t = 30;
656 pub const HB_UNICODE_COMBINING_CLASS_CCC31: hb_unicode_combining_class_t = 31;
657 pub const HB_UNICODE_COMBINING_CLASS_CCC32: hb_unicode_combining_class_t = 32;
658 pub const HB_UNICODE_COMBINING_CLASS_CCC33: hb_unicode_combining_class_t = 33;
659 pub const HB_UNICODE_COMBINING_CLASS_CCC34: hb_unicode_combining_class_t = 34;
660 pub const HB_UNICODE_COMBINING_CLASS_CCC35: hb_unicode_combining_class_t = 35;
661 pub const HB_UNICODE_COMBINING_CLASS_CCC36: hb_unicode_combining_class_t = 36;
662 pub const HB_UNICODE_COMBINING_CLASS_CCC84: hb_unicode_combining_class_t = 84;
663 pub const HB_UNICODE_COMBINING_CLASS_CCC91: hb_unicode_combining_class_t = 91;
664 pub const HB_UNICODE_COMBINING_CLASS_CCC103: hb_unicode_combining_class_t = 103;
665 pub const HB_UNICODE_COMBINING_CLASS_CCC107: hb_unicode_combining_class_t = 107;
666 pub const HB_UNICODE_COMBINING_CLASS_CCC118: hb_unicode_combining_class_t = 118;
667 pub const HB_UNICODE_COMBINING_CLASS_CCC122: hb_unicode_combining_class_t = 122;
668 pub const HB_UNICODE_COMBINING_CLASS_CCC129: hb_unicode_combining_class_t = 129;
669 pub const HB_UNICODE_COMBINING_CLASS_CCC130: hb_unicode_combining_class_t = 130;
670 pub const HB_UNICODE_COMBINING_CLASS_CCC133: hb_unicode_combining_class_t = 132;
671 pub const HB_UNICODE_COMBINING_CLASS_ATTACHED_BELOW_LEFT: hb_unicode_combining_class_t = 200;
672 pub const HB_UNICODE_COMBINING_CLASS_ATTACHED_BELOW: hb_unicode_combining_class_t = 202;
673 pub const HB_UNICODE_COMBINING_CLASS_ATTACHED_ABOVE: hb_unicode_combining_class_t = 214;
674 pub const HB_UNICODE_COMBINING_CLASS_ATTACHED_ABOVE_RIGHT: hb_unicode_combining_class_t = 216;
675 pub const HB_UNICODE_COMBINING_CLASS_BELOW_LEFT: hb_unicode_combining_class_t = 218;
676 pub const HB_UNICODE_COMBINING_CLASS_BELOW: hb_unicode_combining_class_t = 220;
677 pub const HB_UNICODE_COMBINING_CLASS_BELOW_RIGHT: hb_unicode_combining_class_t = 222;
678 pub const HB_UNICODE_COMBINING_CLASS_LEFT: hb_unicode_combining_class_t = 224;
679 pub const HB_UNICODE_COMBINING_CLASS_RIGHT: hb_unicode_combining_class_t = 226;
680 pub const HB_UNICODE_COMBINING_CLASS_ABOVE_LEFT: hb_unicode_combining_class_t = 228;
681 pub const HB_UNICODE_COMBINING_CLASS_ABOVE: hb_unicode_combining_class_t = 230;
682 pub const HB_UNICODE_COMBINING_CLASS_ABOVE_RIGHT: hb_unicode_combining_class_t = 232;
683 pub const HB_UNICODE_COMBINING_CLASS_DOUBLE_BELOW: hb_unicode_combining_class_t = 233;
684 pub const HB_UNICODE_COMBINING_CLASS_DOUBLE_ABOVE: hb_unicode_combining_class_t = 234;
685 pub const HB_UNICODE_COMBINING_CLASS_IOTA_SUBSCRIPT: hb_unicode_combining_class_t = 240;
686 pub const HB_UNICODE_COMBINING_CLASS_INVALID: hb_unicode_combining_class_t = 255;
687 pub type hb_unicode_combining_class_t = u32;
688 #[repr(C)]
689 #[derive(Debug, Copy, Clone)]
690 pub struct hb_unicode_funcs_t {
691     _unused: [u8; 0],
692 }
693 extern "C" {
hb_unicode_funcs_get_default() -> *mut hb_unicode_funcs_t694     pub fn hb_unicode_funcs_get_default() -> *mut hb_unicode_funcs_t;
695 }
696 extern "C" {
hb_unicode_funcs_create(parent: *mut hb_unicode_funcs_t) -> *mut hb_unicode_funcs_t697     pub fn hb_unicode_funcs_create(parent: *mut hb_unicode_funcs_t) -> *mut hb_unicode_funcs_t;
698 }
699 extern "C" {
hb_unicode_funcs_get_empty() -> *mut hb_unicode_funcs_t700     pub fn hb_unicode_funcs_get_empty() -> *mut hb_unicode_funcs_t;
701 }
702 extern "C" {
hb_unicode_funcs_reference(ufuncs: *mut hb_unicode_funcs_t) -> *mut hb_unicode_funcs_t703     pub fn hb_unicode_funcs_reference(ufuncs: *mut hb_unicode_funcs_t) -> *mut hb_unicode_funcs_t;
704 }
705 extern "C" {
hb_unicode_funcs_destroy(ufuncs: *mut hb_unicode_funcs_t)706     pub fn hb_unicode_funcs_destroy(ufuncs: *mut hb_unicode_funcs_t);
707 }
708 extern "C" {
hb_unicode_funcs_set_user_data( ufuncs: *mut hb_unicode_funcs_t, key: *mut hb_user_data_key_t, data: *mut ::std::os::raw::c_void, destroy: hb_destroy_func_t, replace: hb_bool_t, ) -> hb_bool_t709     pub fn hb_unicode_funcs_set_user_data(
710         ufuncs: *mut hb_unicode_funcs_t,
711         key: *mut hb_user_data_key_t,
712         data: *mut ::std::os::raw::c_void,
713         destroy: hb_destroy_func_t,
714         replace: hb_bool_t,
715     ) -> hb_bool_t;
716 }
717 extern "C" {
hb_unicode_funcs_get_user_data( ufuncs: *mut hb_unicode_funcs_t, key: *mut hb_user_data_key_t, ) -> *mut ::std::os::raw::c_void718     pub fn hb_unicode_funcs_get_user_data(
719         ufuncs: *mut hb_unicode_funcs_t,
720         key: *mut hb_user_data_key_t,
721     ) -> *mut ::std::os::raw::c_void;
722 }
723 extern "C" {
hb_unicode_funcs_make_immutable(ufuncs: *mut hb_unicode_funcs_t)724     pub fn hb_unicode_funcs_make_immutable(ufuncs: *mut hb_unicode_funcs_t);
725 }
726 extern "C" {
hb_unicode_funcs_is_immutable(ufuncs: *mut hb_unicode_funcs_t) -> hb_bool_t727     pub fn hb_unicode_funcs_is_immutable(ufuncs: *mut hb_unicode_funcs_t) -> hb_bool_t;
728 }
729 extern "C" {
hb_unicode_funcs_get_parent(ufuncs: *mut hb_unicode_funcs_t) -> *mut hb_unicode_funcs_t730     pub fn hb_unicode_funcs_get_parent(ufuncs: *mut hb_unicode_funcs_t) -> *mut hb_unicode_funcs_t;
731 }
732 pub type hb_unicode_combining_class_func_t = ::std::option::Option<
733     unsafe extern "C" fn(
734         ufuncs: *mut hb_unicode_funcs_t,
735         unicode: hb_codepoint_t,
736         user_data: *mut ::std::os::raw::c_void,
737     ) -> hb_unicode_combining_class_t,
738 >;
739 pub type hb_unicode_general_category_func_t = ::std::option::Option<
740     unsafe extern "C" fn(
741         ufuncs: *mut hb_unicode_funcs_t,
742         unicode: hb_codepoint_t,
743         user_data: *mut ::std::os::raw::c_void,
744     ) -> hb_unicode_general_category_t,
745 >;
746 pub type hb_unicode_mirroring_func_t = ::std::option::Option<
747     unsafe extern "C" fn(
748         ufuncs: *mut hb_unicode_funcs_t,
749         unicode: hb_codepoint_t,
750         user_data: *mut ::std::os::raw::c_void,
751     ) -> hb_codepoint_t,
752 >;
753 pub type hb_unicode_script_func_t = ::std::option::Option<
754     unsafe extern "C" fn(
755         ufuncs: *mut hb_unicode_funcs_t,
756         unicode: hb_codepoint_t,
757         user_data: *mut ::std::os::raw::c_void,
758     ) -> hb_script_t,
759 >;
760 pub type hb_unicode_compose_func_t = ::std::option::Option<
761     unsafe extern "C" fn(
762         ufuncs: *mut hb_unicode_funcs_t,
763         a: hb_codepoint_t,
764         b: hb_codepoint_t,
765         ab: *mut hb_codepoint_t,
766         user_data: *mut ::std::os::raw::c_void,
767     ) -> hb_bool_t,
768 >;
769 pub type hb_unicode_decompose_func_t = ::std::option::Option<
770     unsafe extern "C" fn(
771         ufuncs: *mut hb_unicode_funcs_t,
772         ab: hb_codepoint_t,
773         a: *mut hb_codepoint_t,
774         b: *mut hb_codepoint_t,
775         user_data: *mut ::std::os::raw::c_void,
776     ) -> hb_bool_t,
777 >;
778 extern "C" {
779     /// hb_unicode_funcs_set_combining_class_func:
780     /// @ufuncs: a Unicode function structure
781     /// @func: (closure user_data) (destroy destroy) (scope notified):
782     /// @user_data:
783     /// @destroy:
784     ///
785     ///
786     ///
787     /// Since: 0.9.2
hb_unicode_funcs_set_combining_class_func( ufuncs: *mut hb_unicode_funcs_t, func: hb_unicode_combining_class_func_t, user_data: *mut ::std::os::raw::c_void, destroy: hb_destroy_func_t, )788     pub fn hb_unicode_funcs_set_combining_class_func(
789         ufuncs: *mut hb_unicode_funcs_t,
790         func: hb_unicode_combining_class_func_t,
791         user_data: *mut ::std::os::raw::c_void,
792         destroy: hb_destroy_func_t,
793     );
794 }
795 extern "C" {
796     /// hb_unicode_funcs_set_general_category_func:
797     /// @ufuncs: a Unicode function structure
798     /// @func: (closure user_data) (destroy destroy) (scope notified):
799     /// @user_data:
800     /// @destroy:
801     ///
802     ///
803     ///
804     /// Since: 0.9.2
hb_unicode_funcs_set_general_category_func( ufuncs: *mut hb_unicode_funcs_t, func: hb_unicode_general_category_func_t, user_data: *mut ::std::os::raw::c_void, destroy: hb_destroy_func_t, )805     pub fn hb_unicode_funcs_set_general_category_func(
806         ufuncs: *mut hb_unicode_funcs_t,
807         func: hb_unicode_general_category_func_t,
808         user_data: *mut ::std::os::raw::c_void,
809         destroy: hb_destroy_func_t,
810     );
811 }
812 extern "C" {
813     /// hb_unicode_funcs_set_mirroring_func:
814     /// @ufuncs: a Unicode function structure
815     /// @func: (closure user_data) (destroy destroy) (scope notified):
816     /// @user_data:
817     /// @destroy:
818     ///
819     ///
820     ///
821     /// Since: 0.9.2
hb_unicode_funcs_set_mirroring_func( ufuncs: *mut hb_unicode_funcs_t, func: hb_unicode_mirroring_func_t, user_data: *mut ::std::os::raw::c_void, destroy: hb_destroy_func_t, )822     pub fn hb_unicode_funcs_set_mirroring_func(
823         ufuncs: *mut hb_unicode_funcs_t,
824         func: hb_unicode_mirroring_func_t,
825         user_data: *mut ::std::os::raw::c_void,
826         destroy: hb_destroy_func_t,
827     );
828 }
829 extern "C" {
830     /// hb_unicode_funcs_set_script_func:
831     /// @ufuncs: a Unicode function structure
832     /// @func: (closure user_data) (destroy destroy) (scope notified):
833     /// @user_data:
834     /// @destroy:
835     ///
836     ///
837     ///
838     /// Since: 0.9.2
hb_unicode_funcs_set_script_func( ufuncs: *mut hb_unicode_funcs_t, func: hb_unicode_script_func_t, user_data: *mut ::std::os::raw::c_void, destroy: hb_destroy_func_t, )839     pub fn hb_unicode_funcs_set_script_func(
840         ufuncs: *mut hb_unicode_funcs_t,
841         func: hb_unicode_script_func_t,
842         user_data: *mut ::std::os::raw::c_void,
843         destroy: hb_destroy_func_t,
844     );
845 }
846 extern "C" {
847     /// hb_unicode_funcs_set_compose_func:
848     /// @ufuncs: a Unicode function structure
849     /// @func: (closure user_data) (destroy destroy) (scope notified):
850     /// @user_data:
851     /// @destroy:
852     ///
853     ///
854     ///
855     /// Since: 0.9.2
hb_unicode_funcs_set_compose_func( ufuncs: *mut hb_unicode_funcs_t, func: hb_unicode_compose_func_t, user_data: *mut ::std::os::raw::c_void, destroy: hb_destroy_func_t, )856     pub fn hb_unicode_funcs_set_compose_func(
857         ufuncs: *mut hb_unicode_funcs_t,
858         func: hb_unicode_compose_func_t,
859         user_data: *mut ::std::os::raw::c_void,
860         destroy: hb_destroy_func_t,
861     );
862 }
863 extern "C" {
864     /// hb_unicode_funcs_set_decompose_func:
865     /// @ufuncs: a Unicode function structure
866     /// @func: (closure user_data) (destroy destroy) (scope notified):
867     /// @user_data:
868     /// @destroy:
869     ///
870     ///
871     ///
872     /// Since: 0.9.2
hb_unicode_funcs_set_decompose_func( ufuncs: *mut hb_unicode_funcs_t, func: hb_unicode_decompose_func_t, user_data: *mut ::std::os::raw::c_void, destroy: hb_destroy_func_t, )873     pub fn hb_unicode_funcs_set_decompose_func(
874         ufuncs: *mut hb_unicode_funcs_t,
875         func: hb_unicode_decompose_func_t,
876         user_data: *mut ::std::os::raw::c_void,
877         destroy: hb_destroy_func_t,
878     );
879 }
880 extern "C" {
881     /// hb_unicode_combining_class:
882     ///
883     /// Since: 0.9.2
hb_unicode_combining_class( ufuncs: *mut hb_unicode_funcs_t, unicode: hb_codepoint_t, ) -> hb_unicode_combining_class_t884     pub fn hb_unicode_combining_class(
885         ufuncs: *mut hb_unicode_funcs_t,
886         unicode: hb_codepoint_t,
887     ) -> hb_unicode_combining_class_t;
888 }
889 extern "C" {
890     /// hb_unicode_general_category:
891     ///
892     /// Since: 0.9.2
hb_unicode_general_category( ufuncs: *mut hb_unicode_funcs_t, unicode: hb_codepoint_t, ) -> hb_unicode_general_category_t893     pub fn hb_unicode_general_category(
894         ufuncs: *mut hb_unicode_funcs_t,
895         unicode: hb_codepoint_t,
896     ) -> hb_unicode_general_category_t;
897 }
898 extern "C" {
899     /// hb_unicode_mirroring:
900     ///
901     /// Since: 0.9.2
hb_unicode_mirroring( ufuncs: *mut hb_unicode_funcs_t, unicode: hb_codepoint_t, ) -> hb_codepoint_t902     pub fn hb_unicode_mirroring(
903         ufuncs: *mut hb_unicode_funcs_t,
904         unicode: hb_codepoint_t,
905     ) -> hb_codepoint_t;
906 }
907 extern "C" {
908     /// hb_unicode_script:
909     ///
910     /// Since: 0.9.2
hb_unicode_script( ufuncs: *mut hb_unicode_funcs_t, unicode: hb_codepoint_t, ) -> hb_script_t911     pub fn hb_unicode_script(
912         ufuncs: *mut hb_unicode_funcs_t,
913         unicode: hb_codepoint_t,
914     ) -> hb_script_t;
915 }
916 extern "C" {
hb_unicode_compose( ufuncs: *mut hb_unicode_funcs_t, a: hb_codepoint_t, b: hb_codepoint_t, ab: *mut hb_codepoint_t, ) -> hb_bool_t917     pub fn hb_unicode_compose(
918         ufuncs: *mut hb_unicode_funcs_t,
919         a: hb_codepoint_t,
920         b: hb_codepoint_t,
921         ab: *mut hb_codepoint_t,
922     ) -> hb_bool_t;
923 }
924 extern "C" {
hb_unicode_decompose( ufuncs: *mut hb_unicode_funcs_t, ab: hb_codepoint_t, a: *mut hb_codepoint_t, b: *mut hb_codepoint_t, ) -> hb_bool_t925     pub fn hb_unicode_decompose(
926         ufuncs: *mut hb_unicode_funcs_t,
927         ab: hb_codepoint_t,
928         a: *mut hb_codepoint_t,
929         b: *mut hb_codepoint_t,
930     ) -> hb_bool_t;
931 }
932 #[repr(C)]
933 #[derive(Debug, Copy, Clone)]
934 pub struct hb_set_t {
935     _unused: [u8; 0],
936 }
937 extern "C" {
hb_set_create() -> *mut hb_set_t938     pub fn hb_set_create() -> *mut hb_set_t;
939 }
940 extern "C" {
hb_set_get_empty() -> *mut hb_set_t941     pub fn hb_set_get_empty() -> *mut hb_set_t;
942 }
943 extern "C" {
hb_set_reference(set: *mut hb_set_t) -> *mut hb_set_t944     pub fn hb_set_reference(set: *mut hb_set_t) -> *mut hb_set_t;
945 }
946 extern "C" {
hb_set_destroy(set: *mut hb_set_t)947     pub fn hb_set_destroy(set: *mut hb_set_t);
948 }
949 extern "C" {
hb_set_set_user_data( set: *mut hb_set_t, key: *mut hb_user_data_key_t, data: *mut ::std::os::raw::c_void, destroy: hb_destroy_func_t, replace: hb_bool_t, ) -> hb_bool_t950     pub fn hb_set_set_user_data(
951         set: *mut hb_set_t,
952         key: *mut hb_user_data_key_t,
953         data: *mut ::std::os::raw::c_void,
954         destroy: hb_destroy_func_t,
955         replace: hb_bool_t,
956     ) -> hb_bool_t;
957 }
958 extern "C" {
hb_set_get_user_data( set: *mut hb_set_t, key: *mut hb_user_data_key_t, ) -> *mut ::std::os::raw::c_void959     pub fn hb_set_get_user_data(
960         set: *mut hb_set_t,
961         key: *mut hb_user_data_key_t,
962     ) -> *mut ::std::os::raw::c_void;
963 }
964 extern "C" {
hb_set_allocation_successful(set: *const hb_set_t) -> hb_bool_t965     pub fn hb_set_allocation_successful(set: *const hb_set_t) -> hb_bool_t;
966 }
967 extern "C" {
hb_set_clear(set: *mut hb_set_t)968     pub fn hb_set_clear(set: *mut hb_set_t);
969 }
970 extern "C" {
hb_set_is_empty(set: *const hb_set_t) -> hb_bool_t971     pub fn hb_set_is_empty(set: *const hb_set_t) -> hb_bool_t;
972 }
973 extern "C" {
hb_set_has(set: *const hb_set_t, codepoint: hb_codepoint_t) -> hb_bool_t974     pub fn hb_set_has(set: *const hb_set_t, codepoint: hb_codepoint_t) -> hb_bool_t;
975 }
976 extern "C" {
hb_set_add(set: *mut hb_set_t, codepoint: hb_codepoint_t)977     pub fn hb_set_add(set: *mut hb_set_t, codepoint: hb_codepoint_t);
978 }
979 extern "C" {
hb_set_add_range(set: *mut hb_set_t, first: hb_codepoint_t, last: hb_codepoint_t)980     pub fn hb_set_add_range(set: *mut hb_set_t, first: hb_codepoint_t, last: hb_codepoint_t);
981 }
982 extern "C" {
hb_set_del(set: *mut hb_set_t, codepoint: hb_codepoint_t)983     pub fn hb_set_del(set: *mut hb_set_t, codepoint: hb_codepoint_t);
984 }
985 extern "C" {
hb_set_del_range(set: *mut hb_set_t, first: hb_codepoint_t, last: hb_codepoint_t)986     pub fn hb_set_del_range(set: *mut hb_set_t, first: hb_codepoint_t, last: hb_codepoint_t);
987 }
988 extern "C" {
hb_set_is_equal(set: *const hb_set_t, other: *const hb_set_t) -> hb_bool_t989     pub fn hb_set_is_equal(set: *const hb_set_t, other: *const hb_set_t) -> hb_bool_t;
990 }
991 extern "C" {
hb_set_is_subset(set: *const hb_set_t, larger_set: *const hb_set_t) -> hb_bool_t992     pub fn hb_set_is_subset(set: *const hb_set_t, larger_set: *const hb_set_t) -> hb_bool_t;
993 }
994 extern "C" {
hb_set_set(set: *mut hb_set_t, other: *const hb_set_t)995     pub fn hb_set_set(set: *mut hb_set_t, other: *const hb_set_t);
996 }
997 extern "C" {
hb_set_union(set: *mut hb_set_t, other: *const hb_set_t)998     pub fn hb_set_union(set: *mut hb_set_t, other: *const hb_set_t);
999 }
1000 extern "C" {
hb_set_intersect(set: *mut hb_set_t, other: *const hb_set_t)1001     pub fn hb_set_intersect(set: *mut hb_set_t, other: *const hb_set_t);
1002 }
1003 extern "C" {
hb_set_subtract(set: *mut hb_set_t, other: *const hb_set_t)1004     pub fn hb_set_subtract(set: *mut hb_set_t, other: *const hb_set_t);
1005 }
1006 extern "C" {
hb_set_symmetric_difference(set: *mut hb_set_t, other: *const hb_set_t)1007     pub fn hb_set_symmetric_difference(set: *mut hb_set_t, other: *const hb_set_t);
1008 }
1009 extern "C" {
hb_set_get_population(set: *const hb_set_t) -> ::std::os::raw::c_uint1010     pub fn hb_set_get_population(set: *const hb_set_t) -> ::std::os::raw::c_uint;
1011 }
1012 extern "C" {
hb_set_get_min(set: *const hb_set_t) -> hb_codepoint_t1013     pub fn hb_set_get_min(set: *const hb_set_t) -> hb_codepoint_t;
1014 }
1015 extern "C" {
hb_set_get_max(set: *const hb_set_t) -> hb_codepoint_t1016     pub fn hb_set_get_max(set: *const hb_set_t) -> hb_codepoint_t;
1017 }
1018 extern "C" {
hb_set_next(set: *const hb_set_t, codepoint: *mut hb_codepoint_t) -> hb_bool_t1019     pub fn hb_set_next(set: *const hb_set_t, codepoint: *mut hb_codepoint_t) -> hb_bool_t;
1020 }
1021 extern "C" {
hb_set_previous(set: *const hb_set_t, codepoint: *mut hb_codepoint_t) -> hb_bool_t1022     pub fn hb_set_previous(set: *const hb_set_t, codepoint: *mut hb_codepoint_t) -> hb_bool_t;
1023 }
1024 extern "C" {
hb_set_next_range( set: *const hb_set_t, first: *mut hb_codepoint_t, last: *mut hb_codepoint_t, ) -> hb_bool_t1025     pub fn hb_set_next_range(
1026         set: *const hb_set_t,
1027         first: *mut hb_codepoint_t,
1028         last: *mut hb_codepoint_t,
1029     ) -> hb_bool_t;
1030 }
1031 extern "C" {
hb_set_previous_range( set: *const hb_set_t, first: *mut hb_codepoint_t, last: *mut hb_codepoint_t, ) -> hb_bool_t1032     pub fn hb_set_previous_range(
1033         set: *const hb_set_t,
1034         first: *mut hb_codepoint_t,
1035         last: *mut hb_codepoint_t,
1036     ) -> hb_bool_t;
1037 }
1038 extern "C" {
hb_face_count(blob: *mut hb_blob_t) -> ::std::os::raw::c_uint1039     pub fn hb_face_count(blob: *mut hb_blob_t) -> ::std::os::raw::c_uint;
1040 }
1041 #[repr(C)]
1042 #[derive(Debug, Copy, Clone)]
1043 pub struct hb_face_t {
1044     _unused: [u8; 0],
1045 }
1046 extern "C" {
hb_face_create(blob: *mut hb_blob_t, index: ::std::os::raw::c_uint) -> *mut hb_face_t1047     pub fn hb_face_create(blob: *mut hb_blob_t, index: ::std::os::raw::c_uint) -> *mut hb_face_t;
1048 }
1049 pub type hb_reference_table_func_t = ::std::option::Option<
1050     unsafe extern "C" fn(
1051         face: *mut hb_face_t,
1052         tag: hb_tag_t,
1053         user_data: *mut ::std::os::raw::c_void,
1054     ) -> *mut hb_blob_t,
1055 >;
1056 extern "C" {
hb_face_create_for_tables( reference_table_func: hb_reference_table_func_t, user_data: *mut ::std::os::raw::c_void, destroy: hb_destroy_func_t, ) -> *mut hb_face_t1057     pub fn hb_face_create_for_tables(
1058         reference_table_func: hb_reference_table_func_t,
1059         user_data: *mut ::std::os::raw::c_void,
1060         destroy: hb_destroy_func_t,
1061     ) -> *mut hb_face_t;
1062 }
1063 extern "C" {
hb_face_get_empty() -> *mut hb_face_t1064     pub fn hb_face_get_empty() -> *mut hb_face_t;
1065 }
1066 extern "C" {
hb_face_reference(face: *mut hb_face_t) -> *mut hb_face_t1067     pub fn hb_face_reference(face: *mut hb_face_t) -> *mut hb_face_t;
1068 }
1069 extern "C" {
hb_face_destroy(face: *mut hb_face_t)1070     pub fn hb_face_destroy(face: *mut hb_face_t);
1071 }
1072 extern "C" {
hb_face_set_user_data( face: *mut hb_face_t, key: *mut hb_user_data_key_t, data: *mut ::std::os::raw::c_void, destroy: hb_destroy_func_t, replace: hb_bool_t, ) -> hb_bool_t1073     pub fn hb_face_set_user_data(
1074         face: *mut hb_face_t,
1075         key: *mut hb_user_data_key_t,
1076         data: *mut ::std::os::raw::c_void,
1077         destroy: hb_destroy_func_t,
1078         replace: hb_bool_t,
1079     ) -> hb_bool_t;
1080 }
1081 extern "C" {
hb_face_get_user_data( face: *const hb_face_t, key: *mut hb_user_data_key_t, ) -> *mut ::std::os::raw::c_void1082     pub fn hb_face_get_user_data(
1083         face: *const hb_face_t,
1084         key: *mut hb_user_data_key_t,
1085     ) -> *mut ::std::os::raw::c_void;
1086 }
1087 extern "C" {
hb_face_make_immutable(face: *mut hb_face_t)1088     pub fn hb_face_make_immutable(face: *mut hb_face_t);
1089 }
1090 extern "C" {
hb_face_is_immutable(face: *const hb_face_t) -> hb_bool_t1091     pub fn hb_face_is_immutable(face: *const hb_face_t) -> hb_bool_t;
1092 }
1093 extern "C" {
hb_face_reference_table(face: *const hb_face_t, tag: hb_tag_t) -> *mut hb_blob_t1094     pub fn hb_face_reference_table(face: *const hb_face_t, tag: hb_tag_t) -> *mut hb_blob_t;
1095 }
1096 extern "C" {
hb_face_reference_blob(face: *mut hb_face_t) -> *mut hb_blob_t1097     pub fn hb_face_reference_blob(face: *mut hb_face_t) -> *mut hb_blob_t;
1098 }
1099 extern "C" {
hb_face_set_index(face: *mut hb_face_t, index: ::std::os::raw::c_uint)1100     pub fn hb_face_set_index(face: *mut hb_face_t, index: ::std::os::raw::c_uint);
1101 }
1102 extern "C" {
hb_face_get_index(face: *const hb_face_t) -> ::std::os::raw::c_uint1103     pub fn hb_face_get_index(face: *const hb_face_t) -> ::std::os::raw::c_uint;
1104 }
1105 extern "C" {
hb_face_set_upem(face: *mut hb_face_t, upem: ::std::os::raw::c_uint)1106     pub fn hb_face_set_upem(face: *mut hb_face_t, upem: ::std::os::raw::c_uint);
1107 }
1108 extern "C" {
hb_face_get_upem(face: *const hb_face_t) -> ::std::os::raw::c_uint1109     pub fn hb_face_get_upem(face: *const hb_face_t) -> ::std::os::raw::c_uint;
1110 }
1111 extern "C" {
hb_face_set_glyph_count(face: *mut hb_face_t, glyph_count: ::std::os::raw::c_uint)1112     pub fn hb_face_set_glyph_count(face: *mut hb_face_t, glyph_count: ::std::os::raw::c_uint);
1113 }
1114 extern "C" {
hb_face_get_glyph_count(face: *const hb_face_t) -> ::std::os::raw::c_uint1115     pub fn hb_face_get_glyph_count(face: *const hb_face_t) -> ::std::os::raw::c_uint;
1116 }
1117 extern "C" {
hb_face_get_table_tags( face: *const hb_face_t, start_offset: ::std::os::raw::c_uint, table_count: *mut ::std::os::raw::c_uint, table_tags: *mut hb_tag_t, ) -> ::std::os::raw::c_uint1118     pub fn hb_face_get_table_tags(
1119         face: *const hb_face_t,
1120         start_offset: ::std::os::raw::c_uint,
1121         table_count: *mut ::std::os::raw::c_uint,
1122         table_tags: *mut hb_tag_t,
1123     ) -> ::std::os::raw::c_uint;
1124 }
1125 extern "C" {
hb_face_collect_unicodes(face: *mut hb_face_t, out: *mut hb_set_t)1126     pub fn hb_face_collect_unicodes(face: *mut hb_face_t, out: *mut hb_set_t);
1127 }
1128 extern "C" {
hb_face_collect_variation_selectors(face: *mut hb_face_t, out: *mut hb_set_t)1129     pub fn hb_face_collect_variation_selectors(face: *mut hb_face_t, out: *mut hb_set_t);
1130 }
1131 extern "C" {
hb_face_collect_variation_unicodes( face: *mut hb_face_t, variation_selector: hb_codepoint_t, out: *mut hb_set_t, )1132     pub fn hb_face_collect_variation_unicodes(
1133         face: *mut hb_face_t,
1134         variation_selector: hb_codepoint_t,
1135         out: *mut hb_set_t,
1136     );
1137 }
1138 extern "C" {
hb_face_builder_create() -> *mut hb_face_t1139     pub fn hb_face_builder_create() -> *mut hb_face_t;
1140 }
1141 extern "C" {
hb_face_builder_add_table( face: *mut hb_face_t, tag: hb_tag_t, blob: *mut hb_blob_t, ) -> hb_bool_t1142     pub fn hb_face_builder_add_table(
1143         face: *mut hb_face_t,
1144         tag: hb_tag_t,
1145         blob: *mut hb_blob_t,
1146     ) -> hb_bool_t;
1147 }
1148 #[repr(C)]
1149 #[derive(Debug, Copy, Clone)]
1150 pub struct hb_font_t {
1151     _unused: [u8; 0],
1152 }
1153 #[repr(C)]
1154 #[derive(Debug, Copy, Clone)]
1155 pub struct hb_font_funcs_t {
1156     _unused: [u8; 0],
1157 }
1158 extern "C" {
hb_font_funcs_create() -> *mut hb_font_funcs_t1159     pub fn hb_font_funcs_create() -> *mut hb_font_funcs_t;
1160 }
1161 extern "C" {
hb_font_funcs_get_empty() -> *mut hb_font_funcs_t1162     pub fn hb_font_funcs_get_empty() -> *mut hb_font_funcs_t;
1163 }
1164 extern "C" {
hb_font_funcs_reference(ffuncs: *mut hb_font_funcs_t) -> *mut hb_font_funcs_t1165     pub fn hb_font_funcs_reference(ffuncs: *mut hb_font_funcs_t) -> *mut hb_font_funcs_t;
1166 }
1167 extern "C" {
hb_font_funcs_destroy(ffuncs: *mut hb_font_funcs_t)1168     pub fn hb_font_funcs_destroy(ffuncs: *mut hb_font_funcs_t);
1169 }
1170 extern "C" {
hb_font_funcs_set_user_data( ffuncs: *mut hb_font_funcs_t, key: *mut hb_user_data_key_t, data: *mut ::std::os::raw::c_void, destroy: hb_destroy_func_t, replace: hb_bool_t, ) -> hb_bool_t1171     pub fn hb_font_funcs_set_user_data(
1172         ffuncs: *mut hb_font_funcs_t,
1173         key: *mut hb_user_data_key_t,
1174         data: *mut ::std::os::raw::c_void,
1175         destroy: hb_destroy_func_t,
1176         replace: hb_bool_t,
1177     ) -> hb_bool_t;
1178 }
1179 extern "C" {
hb_font_funcs_get_user_data( ffuncs: *mut hb_font_funcs_t, key: *mut hb_user_data_key_t, ) -> *mut ::std::os::raw::c_void1180     pub fn hb_font_funcs_get_user_data(
1181         ffuncs: *mut hb_font_funcs_t,
1182         key: *mut hb_user_data_key_t,
1183     ) -> *mut ::std::os::raw::c_void;
1184 }
1185 extern "C" {
hb_font_funcs_make_immutable(ffuncs: *mut hb_font_funcs_t)1186     pub fn hb_font_funcs_make_immutable(ffuncs: *mut hb_font_funcs_t);
1187 }
1188 extern "C" {
hb_font_funcs_is_immutable(ffuncs: *mut hb_font_funcs_t) -> hb_bool_t1189     pub fn hb_font_funcs_is_immutable(ffuncs: *mut hb_font_funcs_t) -> hb_bool_t;
1190 }
1191 #[repr(C)]
1192 #[derive(Debug, Copy, Clone)]
1193 pub struct hb_font_extents_t {
1194     pub ascender: hb_position_t,
1195     pub descender: hb_position_t,
1196     pub line_gap: hb_position_t,
1197     pub reserved9: hb_position_t,
1198     pub reserved8: hb_position_t,
1199     pub reserved7: hb_position_t,
1200     pub reserved6: hb_position_t,
1201     pub reserved5: hb_position_t,
1202     pub reserved4: hb_position_t,
1203     pub reserved3: hb_position_t,
1204     pub reserved2: hb_position_t,
1205     pub reserved1: hb_position_t,
1206 }
1207 #[test]
bindgen_test_layout_hb_font_extents_t()1208 fn bindgen_test_layout_hb_font_extents_t() {
1209     assert_eq!(
1210         ::std::mem::size_of::<hb_font_extents_t>(),
1211         48usize,
1212         concat!("Size of: ", stringify!(hb_font_extents_t))
1213     );
1214     assert_eq!(
1215         ::std::mem::align_of::<hb_font_extents_t>(),
1216         4usize,
1217         concat!("Alignment of ", stringify!(hb_font_extents_t))
1218     );
1219     assert_eq!(
1220         unsafe { &(*(::std::ptr::null::<hb_font_extents_t>())).ascender as *const _ as usize },
1221         0usize,
1222         concat!(
1223             "Offset of field: ",
1224             stringify!(hb_font_extents_t),
1225             "::",
1226             stringify!(ascender)
1227         )
1228     );
1229     assert_eq!(
1230         unsafe { &(*(::std::ptr::null::<hb_font_extents_t>())).descender as *const _ as usize },
1231         4usize,
1232         concat!(
1233             "Offset of field: ",
1234             stringify!(hb_font_extents_t),
1235             "::",
1236             stringify!(descender)
1237         )
1238     );
1239     assert_eq!(
1240         unsafe { &(*(::std::ptr::null::<hb_font_extents_t>())).line_gap as *const _ as usize },
1241         8usize,
1242         concat!(
1243             "Offset of field: ",
1244             stringify!(hb_font_extents_t),
1245             "::",
1246             stringify!(line_gap)
1247         )
1248     );
1249     assert_eq!(
1250         unsafe { &(*(::std::ptr::null::<hb_font_extents_t>())).reserved9 as *const _ as usize },
1251         12usize,
1252         concat!(
1253             "Offset of field: ",
1254             stringify!(hb_font_extents_t),
1255             "::",
1256             stringify!(reserved9)
1257         )
1258     );
1259     assert_eq!(
1260         unsafe { &(*(::std::ptr::null::<hb_font_extents_t>())).reserved8 as *const _ as usize },
1261         16usize,
1262         concat!(
1263             "Offset of field: ",
1264             stringify!(hb_font_extents_t),
1265             "::",
1266             stringify!(reserved8)
1267         )
1268     );
1269     assert_eq!(
1270         unsafe { &(*(::std::ptr::null::<hb_font_extents_t>())).reserved7 as *const _ as usize },
1271         20usize,
1272         concat!(
1273             "Offset of field: ",
1274             stringify!(hb_font_extents_t),
1275             "::",
1276             stringify!(reserved7)
1277         )
1278     );
1279     assert_eq!(
1280         unsafe { &(*(::std::ptr::null::<hb_font_extents_t>())).reserved6 as *const _ as usize },
1281         24usize,
1282         concat!(
1283             "Offset of field: ",
1284             stringify!(hb_font_extents_t),
1285             "::",
1286             stringify!(reserved6)
1287         )
1288     );
1289     assert_eq!(
1290         unsafe { &(*(::std::ptr::null::<hb_font_extents_t>())).reserved5 as *const _ as usize },
1291         28usize,
1292         concat!(
1293             "Offset of field: ",
1294             stringify!(hb_font_extents_t),
1295             "::",
1296             stringify!(reserved5)
1297         )
1298     );
1299     assert_eq!(
1300         unsafe { &(*(::std::ptr::null::<hb_font_extents_t>())).reserved4 as *const _ as usize },
1301         32usize,
1302         concat!(
1303             "Offset of field: ",
1304             stringify!(hb_font_extents_t),
1305             "::",
1306             stringify!(reserved4)
1307         )
1308     );
1309     assert_eq!(
1310         unsafe { &(*(::std::ptr::null::<hb_font_extents_t>())).reserved3 as *const _ as usize },
1311         36usize,
1312         concat!(
1313             "Offset of field: ",
1314             stringify!(hb_font_extents_t),
1315             "::",
1316             stringify!(reserved3)
1317         )
1318     );
1319     assert_eq!(
1320         unsafe { &(*(::std::ptr::null::<hb_font_extents_t>())).reserved2 as *const _ as usize },
1321         40usize,
1322         concat!(
1323             "Offset of field: ",
1324             stringify!(hb_font_extents_t),
1325             "::",
1326             stringify!(reserved2)
1327         )
1328     );
1329     assert_eq!(
1330         unsafe { &(*(::std::ptr::null::<hb_font_extents_t>())).reserved1 as *const _ as usize },
1331         44usize,
1332         concat!(
1333             "Offset of field: ",
1334             stringify!(hb_font_extents_t),
1335             "::",
1336             stringify!(reserved1)
1337         )
1338     );
1339 }
1340 #[repr(C)]
1341 #[derive(Debug, Copy, Clone)]
1342 pub struct hb_glyph_extents_t {
1343     pub x_bearing: hb_position_t,
1344     pub y_bearing: hb_position_t,
1345     pub width: hb_position_t,
1346     pub height: hb_position_t,
1347 }
1348 #[test]
bindgen_test_layout_hb_glyph_extents_t()1349 fn bindgen_test_layout_hb_glyph_extents_t() {
1350     assert_eq!(
1351         ::std::mem::size_of::<hb_glyph_extents_t>(),
1352         16usize,
1353         concat!("Size of: ", stringify!(hb_glyph_extents_t))
1354     );
1355     assert_eq!(
1356         ::std::mem::align_of::<hb_glyph_extents_t>(),
1357         4usize,
1358         concat!("Alignment of ", stringify!(hb_glyph_extents_t))
1359     );
1360     assert_eq!(
1361         unsafe { &(*(::std::ptr::null::<hb_glyph_extents_t>())).x_bearing as *const _ as usize },
1362         0usize,
1363         concat!(
1364             "Offset of field: ",
1365             stringify!(hb_glyph_extents_t),
1366             "::",
1367             stringify!(x_bearing)
1368         )
1369     );
1370     assert_eq!(
1371         unsafe { &(*(::std::ptr::null::<hb_glyph_extents_t>())).y_bearing as *const _ as usize },
1372         4usize,
1373         concat!(
1374             "Offset of field: ",
1375             stringify!(hb_glyph_extents_t),
1376             "::",
1377             stringify!(y_bearing)
1378         )
1379     );
1380     assert_eq!(
1381         unsafe { &(*(::std::ptr::null::<hb_glyph_extents_t>())).width as *const _ as usize },
1382         8usize,
1383         concat!(
1384             "Offset of field: ",
1385             stringify!(hb_glyph_extents_t),
1386             "::",
1387             stringify!(width)
1388         )
1389     );
1390     assert_eq!(
1391         unsafe { &(*(::std::ptr::null::<hb_glyph_extents_t>())).height as *const _ as usize },
1392         12usize,
1393         concat!(
1394             "Offset of field: ",
1395             stringify!(hb_glyph_extents_t),
1396             "::",
1397             stringify!(height)
1398         )
1399     );
1400 }
1401 pub type hb_font_get_font_extents_func_t = ::std::option::Option<
1402     unsafe extern "C" fn(
1403         font: *mut hb_font_t,
1404         font_data: *mut ::std::os::raw::c_void,
1405         extents: *mut hb_font_extents_t,
1406         user_data: *mut ::std::os::raw::c_void,
1407     ) -> hb_bool_t,
1408 >;
1409 pub type hb_font_get_font_h_extents_func_t = hb_font_get_font_extents_func_t;
1410 pub type hb_font_get_font_v_extents_func_t = hb_font_get_font_extents_func_t;
1411 pub type hb_font_get_nominal_glyph_func_t = ::std::option::Option<
1412     unsafe extern "C" fn(
1413         font: *mut hb_font_t,
1414         font_data: *mut ::std::os::raw::c_void,
1415         unicode: hb_codepoint_t,
1416         glyph: *mut hb_codepoint_t,
1417         user_data: *mut ::std::os::raw::c_void,
1418     ) -> hb_bool_t,
1419 >;
1420 pub type hb_font_get_variation_glyph_func_t = ::std::option::Option<
1421     unsafe extern "C" fn(
1422         font: *mut hb_font_t,
1423         font_data: *mut ::std::os::raw::c_void,
1424         unicode: hb_codepoint_t,
1425         variation_selector: hb_codepoint_t,
1426         glyph: *mut hb_codepoint_t,
1427         user_data: *mut ::std::os::raw::c_void,
1428     ) -> hb_bool_t,
1429 >;
1430 pub type hb_font_get_nominal_glyphs_func_t = ::std::option::Option<
1431     unsafe extern "C" fn(
1432         font: *mut hb_font_t,
1433         font_data: *mut ::std::os::raw::c_void,
1434         count: ::std::os::raw::c_uint,
1435         first_unicode: *const hb_codepoint_t,
1436         unicode_stride: ::std::os::raw::c_uint,
1437         first_glyph: *mut hb_codepoint_t,
1438         glyph_stride: ::std::os::raw::c_uint,
1439         user_data: *mut ::std::os::raw::c_void,
1440     ) -> ::std::os::raw::c_uint,
1441 >;
1442 pub type hb_font_get_glyph_advance_func_t = ::std::option::Option<
1443     unsafe extern "C" fn(
1444         font: *mut hb_font_t,
1445         font_data: *mut ::std::os::raw::c_void,
1446         glyph: hb_codepoint_t,
1447         user_data: *mut ::std::os::raw::c_void,
1448     ) -> hb_position_t,
1449 >;
1450 pub type hb_font_get_glyph_h_advance_func_t = hb_font_get_glyph_advance_func_t;
1451 pub type hb_font_get_glyph_v_advance_func_t = hb_font_get_glyph_advance_func_t;
1452 pub type hb_font_get_glyph_advances_func_t = ::std::option::Option<
1453     unsafe extern "C" fn(
1454         font: *mut hb_font_t,
1455         font_data: *mut ::std::os::raw::c_void,
1456         count: ::std::os::raw::c_uint,
1457         first_glyph: *const hb_codepoint_t,
1458         glyph_stride: ::std::os::raw::c_uint,
1459         first_advance: *mut hb_position_t,
1460         advance_stride: ::std::os::raw::c_uint,
1461         user_data: *mut ::std::os::raw::c_void,
1462     ),
1463 >;
1464 pub type hb_font_get_glyph_h_advances_func_t = hb_font_get_glyph_advances_func_t;
1465 pub type hb_font_get_glyph_v_advances_func_t = hb_font_get_glyph_advances_func_t;
1466 pub type hb_font_get_glyph_origin_func_t = ::std::option::Option<
1467     unsafe extern "C" fn(
1468         font: *mut hb_font_t,
1469         font_data: *mut ::std::os::raw::c_void,
1470         glyph: hb_codepoint_t,
1471         x: *mut hb_position_t,
1472         y: *mut hb_position_t,
1473         user_data: *mut ::std::os::raw::c_void,
1474     ) -> hb_bool_t,
1475 >;
1476 pub type hb_font_get_glyph_h_origin_func_t = hb_font_get_glyph_origin_func_t;
1477 pub type hb_font_get_glyph_v_origin_func_t = hb_font_get_glyph_origin_func_t;
1478 pub type hb_font_get_glyph_kerning_func_t = ::std::option::Option<
1479     unsafe extern "C" fn(
1480         font: *mut hb_font_t,
1481         font_data: *mut ::std::os::raw::c_void,
1482         first_glyph: hb_codepoint_t,
1483         second_glyph: hb_codepoint_t,
1484         user_data: *mut ::std::os::raw::c_void,
1485     ) -> hb_position_t,
1486 >;
1487 pub type hb_font_get_glyph_h_kerning_func_t = hb_font_get_glyph_kerning_func_t;
1488 pub type hb_font_get_glyph_extents_func_t = ::std::option::Option<
1489     unsafe extern "C" fn(
1490         font: *mut hb_font_t,
1491         font_data: *mut ::std::os::raw::c_void,
1492         glyph: hb_codepoint_t,
1493         extents: *mut hb_glyph_extents_t,
1494         user_data: *mut ::std::os::raw::c_void,
1495     ) -> hb_bool_t,
1496 >;
1497 pub type hb_font_get_glyph_contour_point_func_t = ::std::option::Option<
1498     unsafe extern "C" fn(
1499         font: *mut hb_font_t,
1500         font_data: *mut ::std::os::raw::c_void,
1501         glyph: hb_codepoint_t,
1502         point_index: ::std::os::raw::c_uint,
1503         x: *mut hb_position_t,
1504         y: *mut hb_position_t,
1505         user_data: *mut ::std::os::raw::c_void,
1506     ) -> hb_bool_t,
1507 >;
1508 pub type hb_font_get_glyph_name_func_t = ::std::option::Option<
1509     unsafe extern "C" fn(
1510         font: *mut hb_font_t,
1511         font_data: *mut ::std::os::raw::c_void,
1512         glyph: hb_codepoint_t,
1513         name: *mut ::std::os::raw::c_char,
1514         size: ::std::os::raw::c_uint,
1515         user_data: *mut ::std::os::raw::c_void,
1516     ) -> hb_bool_t,
1517 >;
1518 pub type hb_font_get_glyph_from_name_func_t = ::std::option::Option<
1519     unsafe extern "C" fn(
1520         font: *mut hb_font_t,
1521         font_data: *mut ::std::os::raw::c_void,
1522         name: *const ::std::os::raw::c_char,
1523         len: ::std::os::raw::c_int,
1524         glyph: *mut hb_codepoint_t,
1525         user_data: *mut ::std::os::raw::c_void,
1526     ) -> hb_bool_t,
1527 >;
1528 extern "C" {
1529     /// hb_font_funcs_set_font_h_extents_func:
1530     /// @ffuncs: font functions.
1531     /// @func: (closure user_data) (destroy destroy) (scope notified):
1532     /// @user_data:
1533     /// @destroy:
1534     ///
1535     ///
1536     ///
1537     /// Since: 1.1.2
hb_font_funcs_set_font_h_extents_func( ffuncs: *mut hb_font_funcs_t, func: hb_font_get_font_h_extents_func_t, user_data: *mut ::std::os::raw::c_void, destroy: hb_destroy_func_t, )1538     pub fn hb_font_funcs_set_font_h_extents_func(
1539         ffuncs: *mut hb_font_funcs_t,
1540         func: hb_font_get_font_h_extents_func_t,
1541         user_data: *mut ::std::os::raw::c_void,
1542         destroy: hb_destroy_func_t,
1543     );
1544 }
1545 extern "C" {
1546     /// hb_font_funcs_set_font_v_extents_func:
1547     /// @ffuncs: font functions.
1548     /// @func: (closure user_data) (destroy destroy) (scope notified):
1549     /// @user_data:
1550     /// @destroy:
1551     ///
1552     ///
1553     ///
1554     /// Since: 1.1.2
hb_font_funcs_set_font_v_extents_func( ffuncs: *mut hb_font_funcs_t, func: hb_font_get_font_v_extents_func_t, user_data: *mut ::std::os::raw::c_void, destroy: hb_destroy_func_t, )1555     pub fn hb_font_funcs_set_font_v_extents_func(
1556         ffuncs: *mut hb_font_funcs_t,
1557         func: hb_font_get_font_v_extents_func_t,
1558         user_data: *mut ::std::os::raw::c_void,
1559         destroy: hb_destroy_func_t,
1560     );
1561 }
1562 extern "C" {
1563     /// hb_font_funcs_set_nominal_glyph_func:
1564     /// @ffuncs: font functions.
1565     /// @func: (closure user_data) (destroy destroy) (scope notified):
1566     /// @user_data:
1567     /// @destroy:
1568     ///
1569     ///
1570     ///
1571     /// Since: 1.2.3
hb_font_funcs_set_nominal_glyph_func( ffuncs: *mut hb_font_funcs_t, func: hb_font_get_nominal_glyph_func_t, user_data: *mut ::std::os::raw::c_void, destroy: hb_destroy_func_t, )1572     pub fn hb_font_funcs_set_nominal_glyph_func(
1573         ffuncs: *mut hb_font_funcs_t,
1574         func: hb_font_get_nominal_glyph_func_t,
1575         user_data: *mut ::std::os::raw::c_void,
1576         destroy: hb_destroy_func_t,
1577     );
1578 }
1579 extern "C" {
1580     /// hb_font_funcs_set_nominal_glyphs_func:
1581     /// @ffuncs: font functions.
1582     /// @func: (closure user_data) (destroy destroy) (scope notified):
1583     /// @user_data:
1584     /// @destroy:
1585     ///
1586     ///
1587     ///
1588     /// Since: 2.0.0
hb_font_funcs_set_nominal_glyphs_func( ffuncs: *mut hb_font_funcs_t, func: hb_font_get_nominal_glyphs_func_t, user_data: *mut ::std::os::raw::c_void, destroy: hb_destroy_func_t, )1589     pub fn hb_font_funcs_set_nominal_glyphs_func(
1590         ffuncs: *mut hb_font_funcs_t,
1591         func: hb_font_get_nominal_glyphs_func_t,
1592         user_data: *mut ::std::os::raw::c_void,
1593         destroy: hb_destroy_func_t,
1594     );
1595 }
1596 extern "C" {
1597     /// hb_font_funcs_set_variation_glyph_func:
1598     /// @ffuncs: font functions.
1599     /// @func: (closure user_data) (destroy destroy) (scope notified):
1600     /// @user_data:
1601     /// @destroy:
1602     ///
1603     ///
1604     ///
1605     /// Since: 1.2.3
hb_font_funcs_set_variation_glyph_func( ffuncs: *mut hb_font_funcs_t, func: hb_font_get_variation_glyph_func_t, user_data: *mut ::std::os::raw::c_void, destroy: hb_destroy_func_t, )1606     pub fn hb_font_funcs_set_variation_glyph_func(
1607         ffuncs: *mut hb_font_funcs_t,
1608         func: hb_font_get_variation_glyph_func_t,
1609         user_data: *mut ::std::os::raw::c_void,
1610         destroy: hb_destroy_func_t,
1611     );
1612 }
1613 extern "C" {
1614     /// hb_font_funcs_set_glyph_h_advance_func:
1615     /// @ffuncs: font functions.
1616     /// @func: (closure user_data) (destroy destroy) (scope notified):
1617     /// @user_data:
1618     /// @destroy:
1619     ///
1620     ///
1621     ///
1622     /// Since: 0.9.2
hb_font_funcs_set_glyph_h_advance_func( ffuncs: *mut hb_font_funcs_t, func: hb_font_get_glyph_h_advance_func_t, user_data: *mut ::std::os::raw::c_void, destroy: hb_destroy_func_t, )1623     pub fn hb_font_funcs_set_glyph_h_advance_func(
1624         ffuncs: *mut hb_font_funcs_t,
1625         func: hb_font_get_glyph_h_advance_func_t,
1626         user_data: *mut ::std::os::raw::c_void,
1627         destroy: hb_destroy_func_t,
1628     );
1629 }
1630 extern "C" {
1631     /// hb_font_funcs_set_glyph_v_advance_func:
1632     /// @ffuncs: font functions.
1633     /// @func: (closure user_data) (destroy destroy) (scope notified):
1634     /// @user_data:
1635     /// @destroy:
1636     ///
1637     ///
1638     ///
1639     /// Since: 0.9.2
hb_font_funcs_set_glyph_v_advance_func( ffuncs: *mut hb_font_funcs_t, func: hb_font_get_glyph_v_advance_func_t, user_data: *mut ::std::os::raw::c_void, destroy: hb_destroy_func_t, )1640     pub fn hb_font_funcs_set_glyph_v_advance_func(
1641         ffuncs: *mut hb_font_funcs_t,
1642         func: hb_font_get_glyph_v_advance_func_t,
1643         user_data: *mut ::std::os::raw::c_void,
1644         destroy: hb_destroy_func_t,
1645     );
1646 }
1647 extern "C" {
1648     /// hb_font_funcs_set_glyph_h_advances_func:
1649     /// @ffuncs: font functions.
1650     /// @func: (closure user_data) (destroy destroy) (scope notified):
1651     /// @user_data:
1652     /// @destroy:
1653     ///
1654     ///
1655     ///
1656     /// Since: 1.8.6
hb_font_funcs_set_glyph_h_advances_func( ffuncs: *mut hb_font_funcs_t, func: hb_font_get_glyph_h_advances_func_t, user_data: *mut ::std::os::raw::c_void, destroy: hb_destroy_func_t, )1657     pub fn hb_font_funcs_set_glyph_h_advances_func(
1658         ffuncs: *mut hb_font_funcs_t,
1659         func: hb_font_get_glyph_h_advances_func_t,
1660         user_data: *mut ::std::os::raw::c_void,
1661         destroy: hb_destroy_func_t,
1662     );
1663 }
1664 extern "C" {
1665     /// hb_font_funcs_set_glyph_v_advances_func:
1666     /// @ffuncs: font functions.
1667     /// @func: (closure user_data) (destroy destroy) (scope notified):
1668     /// @user_data:
1669     /// @destroy:
1670     ///
1671     ///
1672     ///
1673     /// Since: 1.8.6
hb_font_funcs_set_glyph_v_advances_func( ffuncs: *mut hb_font_funcs_t, func: hb_font_get_glyph_v_advances_func_t, user_data: *mut ::std::os::raw::c_void, destroy: hb_destroy_func_t, )1674     pub fn hb_font_funcs_set_glyph_v_advances_func(
1675         ffuncs: *mut hb_font_funcs_t,
1676         func: hb_font_get_glyph_v_advances_func_t,
1677         user_data: *mut ::std::os::raw::c_void,
1678         destroy: hb_destroy_func_t,
1679     );
1680 }
1681 extern "C" {
1682     /// hb_font_funcs_set_glyph_h_origin_func:
1683     /// @ffuncs: font functions.
1684     /// @func: (closure user_data) (destroy destroy) (scope notified):
1685     /// @user_data:
1686     /// @destroy:
1687     ///
1688     ///
1689     ///
1690     /// Since: 0.9.2
hb_font_funcs_set_glyph_h_origin_func( ffuncs: *mut hb_font_funcs_t, func: hb_font_get_glyph_h_origin_func_t, user_data: *mut ::std::os::raw::c_void, destroy: hb_destroy_func_t, )1691     pub fn hb_font_funcs_set_glyph_h_origin_func(
1692         ffuncs: *mut hb_font_funcs_t,
1693         func: hb_font_get_glyph_h_origin_func_t,
1694         user_data: *mut ::std::os::raw::c_void,
1695         destroy: hb_destroy_func_t,
1696     );
1697 }
1698 extern "C" {
1699     /// hb_font_funcs_set_glyph_v_origin_func:
1700     /// @ffuncs: font functions.
1701     /// @func: (closure user_data) (destroy destroy) (scope notified):
1702     /// @user_data:
1703     /// @destroy:
1704     ///
1705     ///
1706     ///
1707     /// Since: 0.9.2
hb_font_funcs_set_glyph_v_origin_func( ffuncs: *mut hb_font_funcs_t, func: hb_font_get_glyph_v_origin_func_t, user_data: *mut ::std::os::raw::c_void, destroy: hb_destroy_func_t, )1708     pub fn hb_font_funcs_set_glyph_v_origin_func(
1709         ffuncs: *mut hb_font_funcs_t,
1710         func: hb_font_get_glyph_v_origin_func_t,
1711         user_data: *mut ::std::os::raw::c_void,
1712         destroy: hb_destroy_func_t,
1713     );
1714 }
1715 extern "C" {
1716     /// hb_font_funcs_set_glyph_h_kerning_func:
1717     /// @ffuncs: font functions.
1718     /// @func: (closure user_data) (destroy destroy) (scope notified):
1719     /// @user_data:
1720     /// @destroy:
1721     ///
1722     ///
1723     ///
1724     /// Since: 0.9.2
hb_font_funcs_set_glyph_h_kerning_func( ffuncs: *mut hb_font_funcs_t, func: hb_font_get_glyph_h_kerning_func_t, user_data: *mut ::std::os::raw::c_void, destroy: hb_destroy_func_t, )1725     pub fn hb_font_funcs_set_glyph_h_kerning_func(
1726         ffuncs: *mut hb_font_funcs_t,
1727         func: hb_font_get_glyph_h_kerning_func_t,
1728         user_data: *mut ::std::os::raw::c_void,
1729         destroy: hb_destroy_func_t,
1730     );
1731 }
1732 extern "C" {
1733     /// hb_font_funcs_set_glyph_extents_func:
1734     /// @ffuncs: font functions.
1735     /// @func: (closure user_data) (destroy destroy) (scope notified):
1736     /// @user_data:
1737     /// @destroy:
1738     ///
1739     ///
1740     ///
1741     /// Since: 0.9.2
hb_font_funcs_set_glyph_extents_func( ffuncs: *mut hb_font_funcs_t, func: hb_font_get_glyph_extents_func_t, user_data: *mut ::std::os::raw::c_void, destroy: hb_destroy_func_t, )1742     pub fn hb_font_funcs_set_glyph_extents_func(
1743         ffuncs: *mut hb_font_funcs_t,
1744         func: hb_font_get_glyph_extents_func_t,
1745         user_data: *mut ::std::os::raw::c_void,
1746         destroy: hb_destroy_func_t,
1747     );
1748 }
1749 extern "C" {
1750     /// hb_font_funcs_set_glyph_contour_point_func:
1751     /// @ffuncs: font functions.
1752     /// @func: (closure user_data) (destroy destroy) (scope notified):
1753     /// @user_data:
1754     /// @destroy:
1755     ///
1756     ///
1757     ///
1758     /// Since: 0.9.2
hb_font_funcs_set_glyph_contour_point_func( ffuncs: *mut hb_font_funcs_t, func: hb_font_get_glyph_contour_point_func_t, user_data: *mut ::std::os::raw::c_void, destroy: hb_destroy_func_t, )1759     pub fn hb_font_funcs_set_glyph_contour_point_func(
1760         ffuncs: *mut hb_font_funcs_t,
1761         func: hb_font_get_glyph_contour_point_func_t,
1762         user_data: *mut ::std::os::raw::c_void,
1763         destroy: hb_destroy_func_t,
1764     );
1765 }
1766 extern "C" {
1767     /// hb_font_funcs_set_glyph_name_func:
1768     /// @ffuncs: font functions.
1769     /// @func: (closure user_data) (destroy destroy) (scope notified):
1770     /// @user_data:
1771     /// @destroy:
1772     ///
1773     ///
1774     ///
1775     /// Since: 0.9.2
hb_font_funcs_set_glyph_name_func( ffuncs: *mut hb_font_funcs_t, func: hb_font_get_glyph_name_func_t, user_data: *mut ::std::os::raw::c_void, destroy: hb_destroy_func_t, )1776     pub fn hb_font_funcs_set_glyph_name_func(
1777         ffuncs: *mut hb_font_funcs_t,
1778         func: hb_font_get_glyph_name_func_t,
1779         user_data: *mut ::std::os::raw::c_void,
1780         destroy: hb_destroy_func_t,
1781     );
1782 }
1783 extern "C" {
1784     /// hb_font_funcs_set_glyph_from_name_func:
1785     /// @ffuncs: font functions.
1786     /// @func: (closure user_data) (destroy destroy) (scope notified):
1787     /// @user_data:
1788     /// @destroy:
1789     ///
1790     ///
1791     ///
1792     /// Since: 0.9.2
hb_font_funcs_set_glyph_from_name_func( ffuncs: *mut hb_font_funcs_t, func: hb_font_get_glyph_from_name_func_t, user_data: *mut ::std::os::raw::c_void, destroy: hb_destroy_func_t, )1793     pub fn hb_font_funcs_set_glyph_from_name_func(
1794         ffuncs: *mut hb_font_funcs_t,
1795         func: hb_font_get_glyph_from_name_func_t,
1796         user_data: *mut ::std::os::raw::c_void,
1797         destroy: hb_destroy_func_t,
1798     );
1799 }
1800 extern "C" {
hb_font_get_h_extents( font: *mut hb_font_t, extents: *mut hb_font_extents_t, ) -> hb_bool_t1801     pub fn hb_font_get_h_extents(
1802         font: *mut hb_font_t,
1803         extents: *mut hb_font_extents_t,
1804     ) -> hb_bool_t;
1805 }
1806 extern "C" {
hb_font_get_v_extents( font: *mut hb_font_t, extents: *mut hb_font_extents_t, ) -> hb_bool_t1807     pub fn hb_font_get_v_extents(
1808         font: *mut hb_font_t,
1809         extents: *mut hb_font_extents_t,
1810     ) -> hb_bool_t;
1811 }
1812 extern "C" {
hb_font_get_nominal_glyph( font: *mut hb_font_t, unicode: hb_codepoint_t, glyph: *mut hb_codepoint_t, ) -> hb_bool_t1813     pub fn hb_font_get_nominal_glyph(
1814         font: *mut hb_font_t,
1815         unicode: hb_codepoint_t,
1816         glyph: *mut hb_codepoint_t,
1817     ) -> hb_bool_t;
1818 }
1819 extern "C" {
hb_font_get_variation_glyph( font: *mut hb_font_t, unicode: hb_codepoint_t, variation_selector: hb_codepoint_t, glyph: *mut hb_codepoint_t, ) -> hb_bool_t1820     pub fn hb_font_get_variation_glyph(
1821         font: *mut hb_font_t,
1822         unicode: hb_codepoint_t,
1823         variation_selector: hb_codepoint_t,
1824         glyph: *mut hb_codepoint_t,
1825     ) -> hb_bool_t;
1826 }
1827 extern "C" {
hb_font_get_glyph_h_advance( font: *mut hb_font_t, glyph: hb_codepoint_t, ) -> hb_position_t1828     pub fn hb_font_get_glyph_h_advance(
1829         font: *mut hb_font_t,
1830         glyph: hb_codepoint_t,
1831     ) -> hb_position_t;
1832 }
1833 extern "C" {
hb_font_get_glyph_v_advance( font: *mut hb_font_t, glyph: hb_codepoint_t, ) -> hb_position_t1834     pub fn hb_font_get_glyph_v_advance(
1835         font: *mut hb_font_t,
1836         glyph: hb_codepoint_t,
1837     ) -> hb_position_t;
1838 }
1839 extern "C" {
hb_font_get_glyph_h_advances( font: *mut hb_font_t, count: ::std::os::raw::c_uint, first_glyph: *const hb_codepoint_t, glyph_stride: ::std::os::raw::c_uint, first_advance: *mut hb_position_t, advance_stride: ::std::os::raw::c_uint, )1840     pub fn hb_font_get_glyph_h_advances(
1841         font: *mut hb_font_t,
1842         count: ::std::os::raw::c_uint,
1843         first_glyph: *const hb_codepoint_t,
1844         glyph_stride: ::std::os::raw::c_uint,
1845         first_advance: *mut hb_position_t,
1846         advance_stride: ::std::os::raw::c_uint,
1847     );
1848 }
1849 extern "C" {
hb_font_get_glyph_v_advances( font: *mut hb_font_t, count: ::std::os::raw::c_uint, first_glyph: *const hb_codepoint_t, glyph_stride: ::std::os::raw::c_uint, first_advance: *mut hb_position_t, advance_stride: ::std::os::raw::c_uint, )1850     pub fn hb_font_get_glyph_v_advances(
1851         font: *mut hb_font_t,
1852         count: ::std::os::raw::c_uint,
1853         first_glyph: *const hb_codepoint_t,
1854         glyph_stride: ::std::os::raw::c_uint,
1855         first_advance: *mut hb_position_t,
1856         advance_stride: ::std::os::raw::c_uint,
1857     );
1858 }
1859 extern "C" {
hb_font_get_glyph_h_origin( font: *mut hb_font_t, glyph: hb_codepoint_t, x: *mut hb_position_t, y: *mut hb_position_t, ) -> hb_bool_t1860     pub fn hb_font_get_glyph_h_origin(
1861         font: *mut hb_font_t,
1862         glyph: hb_codepoint_t,
1863         x: *mut hb_position_t,
1864         y: *mut hb_position_t,
1865     ) -> hb_bool_t;
1866 }
1867 extern "C" {
hb_font_get_glyph_v_origin( font: *mut hb_font_t, glyph: hb_codepoint_t, x: *mut hb_position_t, y: *mut hb_position_t, ) -> hb_bool_t1868     pub fn hb_font_get_glyph_v_origin(
1869         font: *mut hb_font_t,
1870         glyph: hb_codepoint_t,
1871         x: *mut hb_position_t,
1872         y: *mut hb_position_t,
1873     ) -> hb_bool_t;
1874 }
1875 extern "C" {
hb_font_get_glyph_h_kerning( font: *mut hb_font_t, left_glyph: hb_codepoint_t, right_glyph: hb_codepoint_t, ) -> hb_position_t1876     pub fn hb_font_get_glyph_h_kerning(
1877         font: *mut hb_font_t,
1878         left_glyph: hb_codepoint_t,
1879         right_glyph: hb_codepoint_t,
1880     ) -> hb_position_t;
1881 }
1882 extern "C" {
hb_font_get_glyph_extents( font: *mut hb_font_t, glyph: hb_codepoint_t, extents: *mut hb_glyph_extents_t, ) -> hb_bool_t1883     pub fn hb_font_get_glyph_extents(
1884         font: *mut hb_font_t,
1885         glyph: hb_codepoint_t,
1886         extents: *mut hb_glyph_extents_t,
1887     ) -> hb_bool_t;
1888 }
1889 extern "C" {
hb_font_get_glyph_contour_point( font: *mut hb_font_t, glyph: hb_codepoint_t, point_index: ::std::os::raw::c_uint, x: *mut hb_position_t, y: *mut hb_position_t, ) -> hb_bool_t1890     pub fn hb_font_get_glyph_contour_point(
1891         font: *mut hb_font_t,
1892         glyph: hb_codepoint_t,
1893         point_index: ::std::os::raw::c_uint,
1894         x: *mut hb_position_t,
1895         y: *mut hb_position_t,
1896     ) -> hb_bool_t;
1897 }
1898 extern "C" {
hb_font_get_glyph_name( font: *mut hb_font_t, glyph: hb_codepoint_t, name: *mut ::std::os::raw::c_char, size: ::std::os::raw::c_uint, ) -> hb_bool_t1899     pub fn hb_font_get_glyph_name(
1900         font: *mut hb_font_t,
1901         glyph: hb_codepoint_t,
1902         name: *mut ::std::os::raw::c_char,
1903         size: ::std::os::raw::c_uint,
1904     ) -> hb_bool_t;
1905 }
1906 extern "C" {
hb_font_get_glyph_from_name( font: *mut hb_font_t, name: *const ::std::os::raw::c_char, len: ::std::os::raw::c_int, glyph: *mut hb_codepoint_t, ) -> hb_bool_t1907     pub fn hb_font_get_glyph_from_name(
1908         font: *mut hb_font_t,
1909         name: *const ::std::os::raw::c_char,
1910         len: ::std::os::raw::c_int,
1911         glyph: *mut hb_codepoint_t,
1912     ) -> hb_bool_t;
1913 }
1914 extern "C" {
hb_font_get_glyph( font: *mut hb_font_t, unicode: hb_codepoint_t, variation_selector: hb_codepoint_t, glyph: *mut hb_codepoint_t, ) -> hb_bool_t1915     pub fn hb_font_get_glyph(
1916         font: *mut hb_font_t,
1917         unicode: hb_codepoint_t,
1918         variation_selector: hb_codepoint_t,
1919         glyph: *mut hb_codepoint_t,
1920     ) -> hb_bool_t;
1921 }
1922 extern "C" {
hb_font_get_extents_for_direction( font: *mut hb_font_t, direction: hb_direction_t, extents: *mut hb_font_extents_t, )1923     pub fn hb_font_get_extents_for_direction(
1924         font: *mut hb_font_t,
1925         direction: hb_direction_t,
1926         extents: *mut hb_font_extents_t,
1927     );
1928 }
1929 extern "C" {
hb_font_get_glyph_advance_for_direction( font: *mut hb_font_t, glyph: hb_codepoint_t, direction: hb_direction_t, x: *mut hb_position_t, y: *mut hb_position_t, )1930     pub fn hb_font_get_glyph_advance_for_direction(
1931         font: *mut hb_font_t,
1932         glyph: hb_codepoint_t,
1933         direction: hb_direction_t,
1934         x: *mut hb_position_t,
1935         y: *mut hb_position_t,
1936     );
1937 }
1938 extern "C" {
hb_font_get_glyph_advances_for_direction( font: *mut hb_font_t, direction: hb_direction_t, count: ::std::os::raw::c_uint, first_glyph: *const hb_codepoint_t, glyph_stride: ::std::os::raw::c_uint, first_advance: *mut hb_position_t, advance_stride: ::std::os::raw::c_uint, )1939     pub fn hb_font_get_glyph_advances_for_direction(
1940         font: *mut hb_font_t,
1941         direction: hb_direction_t,
1942         count: ::std::os::raw::c_uint,
1943         first_glyph: *const hb_codepoint_t,
1944         glyph_stride: ::std::os::raw::c_uint,
1945         first_advance: *mut hb_position_t,
1946         advance_stride: ::std::os::raw::c_uint,
1947     );
1948 }
1949 extern "C" {
hb_font_get_glyph_origin_for_direction( font: *mut hb_font_t, glyph: hb_codepoint_t, direction: hb_direction_t, x: *mut hb_position_t, y: *mut hb_position_t, )1950     pub fn hb_font_get_glyph_origin_for_direction(
1951         font: *mut hb_font_t,
1952         glyph: hb_codepoint_t,
1953         direction: hb_direction_t,
1954         x: *mut hb_position_t,
1955         y: *mut hb_position_t,
1956     );
1957 }
1958 extern "C" {
hb_font_add_glyph_origin_for_direction( font: *mut hb_font_t, glyph: hb_codepoint_t, direction: hb_direction_t, x: *mut hb_position_t, y: *mut hb_position_t, )1959     pub fn hb_font_add_glyph_origin_for_direction(
1960         font: *mut hb_font_t,
1961         glyph: hb_codepoint_t,
1962         direction: hb_direction_t,
1963         x: *mut hb_position_t,
1964         y: *mut hb_position_t,
1965     );
1966 }
1967 extern "C" {
hb_font_subtract_glyph_origin_for_direction( font: *mut hb_font_t, glyph: hb_codepoint_t, direction: hb_direction_t, x: *mut hb_position_t, y: *mut hb_position_t, )1968     pub fn hb_font_subtract_glyph_origin_for_direction(
1969         font: *mut hb_font_t,
1970         glyph: hb_codepoint_t,
1971         direction: hb_direction_t,
1972         x: *mut hb_position_t,
1973         y: *mut hb_position_t,
1974     );
1975 }
1976 extern "C" {
hb_font_get_glyph_kerning_for_direction( font: *mut hb_font_t, first_glyph: hb_codepoint_t, second_glyph: hb_codepoint_t, direction: hb_direction_t, x: *mut hb_position_t, y: *mut hb_position_t, )1977     pub fn hb_font_get_glyph_kerning_for_direction(
1978         font: *mut hb_font_t,
1979         first_glyph: hb_codepoint_t,
1980         second_glyph: hb_codepoint_t,
1981         direction: hb_direction_t,
1982         x: *mut hb_position_t,
1983         y: *mut hb_position_t,
1984     );
1985 }
1986 extern "C" {
hb_font_get_glyph_extents_for_origin( font: *mut hb_font_t, glyph: hb_codepoint_t, direction: hb_direction_t, extents: *mut hb_glyph_extents_t, ) -> hb_bool_t1987     pub fn hb_font_get_glyph_extents_for_origin(
1988         font: *mut hb_font_t,
1989         glyph: hb_codepoint_t,
1990         direction: hb_direction_t,
1991         extents: *mut hb_glyph_extents_t,
1992     ) -> hb_bool_t;
1993 }
1994 extern "C" {
hb_font_get_glyph_contour_point_for_origin( font: *mut hb_font_t, glyph: hb_codepoint_t, point_index: ::std::os::raw::c_uint, direction: hb_direction_t, x: *mut hb_position_t, y: *mut hb_position_t, ) -> hb_bool_t1995     pub fn hb_font_get_glyph_contour_point_for_origin(
1996         font: *mut hb_font_t,
1997         glyph: hb_codepoint_t,
1998         point_index: ::std::os::raw::c_uint,
1999         direction: hb_direction_t,
2000         x: *mut hb_position_t,
2001         y: *mut hb_position_t,
2002     ) -> hb_bool_t;
2003 }
2004 extern "C" {
hb_font_glyph_to_string( font: *mut hb_font_t, glyph: hb_codepoint_t, s: *mut ::std::os::raw::c_char, size: ::std::os::raw::c_uint, )2005     pub fn hb_font_glyph_to_string(
2006         font: *mut hb_font_t,
2007         glyph: hb_codepoint_t,
2008         s: *mut ::std::os::raw::c_char,
2009         size: ::std::os::raw::c_uint,
2010     );
2011 }
2012 extern "C" {
hb_font_glyph_from_string( font: *mut hb_font_t, s: *const ::std::os::raw::c_char, len: ::std::os::raw::c_int, glyph: *mut hb_codepoint_t, ) -> hb_bool_t2013     pub fn hb_font_glyph_from_string(
2014         font: *mut hb_font_t,
2015         s: *const ::std::os::raw::c_char,
2016         len: ::std::os::raw::c_int,
2017         glyph: *mut hb_codepoint_t,
2018     ) -> hb_bool_t;
2019 }
2020 extern "C" {
hb_font_create(face: *mut hb_face_t) -> *mut hb_font_t2021     pub fn hb_font_create(face: *mut hb_face_t) -> *mut hb_font_t;
2022 }
2023 extern "C" {
hb_font_create_sub_font(parent: *mut hb_font_t) -> *mut hb_font_t2024     pub fn hb_font_create_sub_font(parent: *mut hb_font_t) -> *mut hb_font_t;
2025 }
2026 extern "C" {
hb_font_get_empty() -> *mut hb_font_t2027     pub fn hb_font_get_empty() -> *mut hb_font_t;
2028 }
2029 extern "C" {
hb_font_reference(font: *mut hb_font_t) -> *mut hb_font_t2030     pub fn hb_font_reference(font: *mut hb_font_t) -> *mut hb_font_t;
2031 }
2032 extern "C" {
hb_font_destroy(font: *mut hb_font_t)2033     pub fn hb_font_destroy(font: *mut hb_font_t);
2034 }
2035 extern "C" {
hb_font_set_user_data( font: *mut hb_font_t, key: *mut hb_user_data_key_t, data: *mut ::std::os::raw::c_void, destroy: hb_destroy_func_t, replace: hb_bool_t, ) -> hb_bool_t2036     pub fn hb_font_set_user_data(
2037         font: *mut hb_font_t,
2038         key: *mut hb_user_data_key_t,
2039         data: *mut ::std::os::raw::c_void,
2040         destroy: hb_destroy_func_t,
2041         replace: hb_bool_t,
2042     ) -> hb_bool_t;
2043 }
2044 extern "C" {
hb_font_get_user_data( font: *mut hb_font_t, key: *mut hb_user_data_key_t, ) -> *mut ::std::os::raw::c_void2045     pub fn hb_font_get_user_data(
2046         font: *mut hb_font_t,
2047         key: *mut hb_user_data_key_t,
2048     ) -> *mut ::std::os::raw::c_void;
2049 }
2050 extern "C" {
hb_font_make_immutable(font: *mut hb_font_t)2051     pub fn hb_font_make_immutable(font: *mut hb_font_t);
2052 }
2053 extern "C" {
hb_font_is_immutable(font: *mut hb_font_t) -> hb_bool_t2054     pub fn hb_font_is_immutable(font: *mut hb_font_t) -> hb_bool_t;
2055 }
2056 extern "C" {
hb_font_set_parent(font: *mut hb_font_t, parent: *mut hb_font_t)2057     pub fn hb_font_set_parent(font: *mut hb_font_t, parent: *mut hb_font_t);
2058 }
2059 extern "C" {
hb_font_get_parent(font: *mut hb_font_t) -> *mut hb_font_t2060     pub fn hb_font_get_parent(font: *mut hb_font_t) -> *mut hb_font_t;
2061 }
2062 extern "C" {
hb_font_set_face(font: *mut hb_font_t, face: *mut hb_face_t)2063     pub fn hb_font_set_face(font: *mut hb_font_t, face: *mut hb_face_t);
2064 }
2065 extern "C" {
hb_font_get_face(font: *mut hb_font_t) -> *mut hb_face_t2066     pub fn hb_font_get_face(font: *mut hb_font_t) -> *mut hb_face_t;
2067 }
2068 extern "C" {
hb_font_set_funcs( font: *mut hb_font_t, klass: *mut hb_font_funcs_t, font_data: *mut ::std::os::raw::c_void, destroy: hb_destroy_func_t, )2069     pub fn hb_font_set_funcs(
2070         font: *mut hb_font_t,
2071         klass: *mut hb_font_funcs_t,
2072         font_data: *mut ::std::os::raw::c_void,
2073         destroy: hb_destroy_func_t,
2074     );
2075 }
2076 extern "C" {
hb_font_set_funcs_data( font: *mut hb_font_t, font_data: *mut ::std::os::raw::c_void, destroy: hb_destroy_func_t, )2077     pub fn hb_font_set_funcs_data(
2078         font: *mut hb_font_t,
2079         font_data: *mut ::std::os::raw::c_void,
2080         destroy: hb_destroy_func_t,
2081     );
2082 }
2083 extern "C" {
hb_font_set_scale( font: *mut hb_font_t, x_scale: ::std::os::raw::c_int, y_scale: ::std::os::raw::c_int, )2084     pub fn hb_font_set_scale(
2085         font: *mut hb_font_t,
2086         x_scale: ::std::os::raw::c_int,
2087         y_scale: ::std::os::raw::c_int,
2088     );
2089 }
2090 extern "C" {
hb_font_get_scale( font: *mut hb_font_t, x_scale: *mut ::std::os::raw::c_int, y_scale: *mut ::std::os::raw::c_int, )2091     pub fn hb_font_get_scale(
2092         font: *mut hb_font_t,
2093         x_scale: *mut ::std::os::raw::c_int,
2094         y_scale: *mut ::std::os::raw::c_int,
2095     );
2096 }
2097 extern "C" {
hb_font_set_ppem( font: *mut hb_font_t, x_ppem: ::std::os::raw::c_uint, y_ppem: ::std::os::raw::c_uint, )2098     pub fn hb_font_set_ppem(
2099         font: *mut hb_font_t,
2100         x_ppem: ::std::os::raw::c_uint,
2101         y_ppem: ::std::os::raw::c_uint,
2102     );
2103 }
2104 extern "C" {
hb_font_get_ppem( font: *mut hb_font_t, x_ppem: *mut ::std::os::raw::c_uint, y_ppem: *mut ::std::os::raw::c_uint, )2105     pub fn hb_font_get_ppem(
2106         font: *mut hb_font_t,
2107         x_ppem: *mut ::std::os::raw::c_uint,
2108         y_ppem: *mut ::std::os::raw::c_uint,
2109     );
2110 }
2111 extern "C" {
hb_font_set_ptem(font: *mut hb_font_t, ptem: ::std::os::raw::c_float)2112     pub fn hb_font_set_ptem(font: *mut hb_font_t, ptem: ::std::os::raw::c_float);
2113 }
2114 extern "C" {
hb_font_get_ptem(font: *mut hb_font_t) -> ::std::os::raw::c_float2115     pub fn hb_font_get_ptem(font: *mut hb_font_t) -> ::std::os::raw::c_float;
2116 }
2117 extern "C" {
hb_font_set_variations( font: *mut hb_font_t, variations: *const hb_variation_t, variations_length: ::std::os::raw::c_uint, )2118     pub fn hb_font_set_variations(
2119         font: *mut hb_font_t,
2120         variations: *const hb_variation_t,
2121         variations_length: ::std::os::raw::c_uint,
2122     );
2123 }
2124 extern "C" {
hb_font_set_var_coords_design( font: *mut hb_font_t, coords: *const ::std::os::raw::c_float, coords_length: ::std::os::raw::c_uint, )2125     pub fn hb_font_set_var_coords_design(
2126         font: *mut hb_font_t,
2127         coords: *const ::std::os::raw::c_float,
2128         coords_length: ::std::os::raw::c_uint,
2129     );
2130 }
2131 extern "C" {
hb_font_set_var_coords_normalized( font: *mut hb_font_t, coords: *const ::std::os::raw::c_int, coords_length: ::std::os::raw::c_uint, )2132     pub fn hb_font_set_var_coords_normalized(
2133         font: *mut hb_font_t,
2134         coords: *const ::std::os::raw::c_int,
2135         coords_length: ::std::os::raw::c_uint,
2136     );
2137 }
2138 extern "C" {
hb_font_get_var_coords_normalized( font: *mut hb_font_t, length: *mut ::std::os::raw::c_uint, ) -> *const ::std::os::raw::c_int2139     pub fn hb_font_get_var_coords_normalized(
2140         font: *mut hb_font_t,
2141         length: *mut ::std::os::raw::c_uint,
2142     ) -> *const ::std::os::raw::c_int;
2143 }
2144 /// hb_glyph_info_t:
2145 /// @codepoint: either a Unicode code point (before shaping) or a glyph index
2146 ///             (after shaping).
2147 /// @mask:
2148 /// @cluster: the index of the character in the original text that corresponds
2149 ///           to this `hb_glyph_info_t`, or whatever the client passes to
2150 ///           hb_buffer_add(). More than one `hb_glyph_info_t` can have the same
2151 ///           @cluster value, if they resulted from the same character (e.g. one
2152 ///           to many glyph substitution), and when more than one character gets
2153 ///           merged in the same glyph (e.g. many to one glyph substitution) the
2154 ///           `hb_glyph_info_t` will have the smallest cluster value of them.
2155 ///           By default some characters are merged into the same cluster
2156 ///           (e.g. combining marks have the same cluster as their bases)
2157 ///           even if they are separate glyphs, hb_buffer_set_cluster_level()
2158 ///           allow selecting more fine-grained cluster handling.
2159 ///
2160 /// The `hb_glyph_info_t` is the structure that holds information about the
2161 /// glyphs and their relation to input text.
2162 #[repr(C)]
2163 #[derive(Debug, Copy, Clone)]
2164 pub struct hb_glyph_info_t {
2165     pub codepoint: hb_codepoint_t,
2166     pub mask: hb_mask_t,
2167     pub cluster: u32,
2168     pub var1: hb_var_int_t,
2169     pub var2: hb_var_int_t,
2170 }
2171 #[test]
bindgen_test_layout_hb_glyph_info_t()2172 fn bindgen_test_layout_hb_glyph_info_t() {
2173     assert_eq!(
2174         ::std::mem::size_of::<hb_glyph_info_t>(),
2175         20usize,
2176         concat!("Size of: ", stringify!(hb_glyph_info_t))
2177     );
2178     assert_eq!(
2179         ::std::mem::align_of::<hb_glyph_info_t>(),
2180         4usize,
2181         concat!("Alignment of ", stringify!(hb_glyph_info_t))
2182     );
2183     assert_eq!(
2184         unsafe { &(*(::std::ptr::null::<hb_glyph_info_t>())).codepoint as *const _ as usize },
2185         0usize,
2186         concat!(
2187             "Offset of field: ",
2188             stringify!(hb_glyph_info_t),
2189             "::",
2190             stringify!(codepoint)
2191         )
2192     );
2193     assert_eq!(
2194         unsafe { &(*(::std::ptr::null::<hb_glyph_info_t>())).mask as *const _ as usize },
2195         4usize,
2196         concat!(
2197             "Offset of field: ",
2198             stringify!(hb_glyph_info_t),
2199             "::",
2200             stringify!(mask)
2201         )
2202     );
2203     assert_eq!(
2204         unsafe { &(*(::std::ptr::null::<hb_glyph_info_t>())).cluster as *const _ as usize },
2205         8usize,
2206         concat!(
2207             "Offset of field: ",
2208             stringify!(hb_glyph_info_t),
2209             "::",
2210             stringify!(cluster)
2211         )
2212     );
2213     assert_eq!(
2214         unsafe { &(*(::std::ptr::null::<hb_glyph_info_t>())).var1 as *const _ as usize },
2215         12usize,
2216         concat!(
2217             "Offset of field: ",
2218             stringify!(hb_glyph_info_t),
2219             "::",
2220             stringify!(var1)
2221         )
2222     );
2223     assert_eq!(
2224         unsafe { &(*(::std::ptr::null::<hb_glyph_info_t>())).var2 as *const _ as usize },
2225         16usize,
2226         concat!(
2227             "Offset of field: ",
2228             stringify!(hb_glyph_info_t),
2229             "::",
2230             stringify!(var2)
2231         )
2232     );
2233 }
2234 pub const HB_GLYPH_FLAG_UNSAFE_TO_BREAK: hb_glyph_flags_t = 1;
2235 pub const HB_GLYPH_FLAG_DEFINED: hb_glyph_flags_t = 1;
2236 /// hb_glyph_flags_t:
2237 /// @HB_GLYPH_FLAG_UNSAFE_TO_BREAK: Indicates that if input text is broken at the
2238 /// beginning of the cluster this glyph is part of,
2239 /// then both sides need to be re-shaped, as the
2240 /// result might be different.  On the flip side,
2241 /// it means that when this flag is not present,
2242 /// then it's safe to break the glyph-run at the
2243 /// beginning of this cluster, and the two sides
2244 /// represent the exact same result one would get
2245 /// if breaking input text at the beginning of
2246 /// this cluster and shaping the two sides
2247 /// separately.  This can be used to optimize
2248 /// paragraph layout, by avoiding re-shaping
2249 /// of each line after line-breaking, or limiting
2250 /// the reshaping to a small piece around the
2251 /// breaking point only.
2252 /// @HB_GLYPH_FLAG_DEFINED: All the currently defined flags.
2253 ///
2254 /// Since: 1.5.0
2255 pub type hb_glyph_flags_t = u32;
2256 extern "C" {
hb_glyph_info_get_glyph_flags(info: *const hb_glyph_info_t) -> hb_glyph_flags_t2257     pub fn hb_glyph_info_get_glyph_flags(info: *const hb_glyph_info_t) -> hb_glyph_flags_t;
2258 }
2259 /// hb_glyph_position_t:
2260 /// @x_advance: how much the line advances after drawing this glyph when setting
2261 ///             text in horizontal direction.
2262 /// @y_advance: how much the line advances after drawing this glyph when setting
2263 ///             text in vertical direction.
2264 /// @x_offset: how much the glyph moves on the X-axis before drawing it, this
2265 ///            should not affect how much the line advances.
2266 /// @y_offset: how much the glyph moves on the Y-axis before drawing it, this
2267 ///            should not affect how much the line advances.
2268 ///
2269 /// The `hb_glyph_position_t` is the structure that holds the positions of the
2270 /// glyph in both horizontal and vertical directions. All positions in
2271 /// `hb_glyph_position_t` are relative to the current point.
2272 #[repr(C)]
2273 #[derive(Debug, Copy, Clone)]
2274 pub struct hb_glyph_position_t {
2275     pub x_advance: hb_position_t,
2276     pub y_advance: hb_position_t,
2277     pub x_offset: hb_position_t,
2278     pub y_offset: hb_position_t,
2279     pub var: hb_var_int_t,
2280 }
2281 #[test]
bindgen_test_layout_hb_glyph_position_t()2282 fn bindgen_test_layout_hb_glyph_position_t() {
2283     assert_eq!(
2284         ::std::mem::size_of::<hb_glyph_position_t>(),
2285         20usize,
2286         concat!("Size of: ", stringify!(hb_glyph_position_t))
2287     );
2288     assert_eq!(
2289         ::std::mem::align_of::<hb_glyph_position_t>(),
2290         4usize,
2291         concat!("Alignment of ", stringify!(hb_glyph_position_t))
2292     );
2293     assert_eq!(
2294         unsafe { &(*(::std::ptr::null::<hb_glyph_position_t>())).x_advance as *const _ as usize },
2295         0usize,
2296         concat!(
2297             "Offset of field: ",
2298             stringify!(hb_glyph_position_t),
2299             "::",
2300             stringify!(x_advance)
2301         )
2302     );
2303     assert_eq!(
2304         unsafe { &(*(::std::ptr::null::<hb_glyph_position_t>())).y_advance as *const _ as usize },
2305         4usize,
2306         concat!(
2307             "Offset of field: ",
2308             stringify!(hb_glyph_position_t),
2309             "::",
2310             stringify!(y_advance)
2311         )
2312     );
2313     assert_eq!(
2314         unsafe { &(*(::std::ptr::null::<hb_glyph_position_t>())).x_offset as *const _ as usize },
2315         8usize,
2316         concat!(
2317             "Offset of field: ",
2318             stringify!(hb_glyph_position_t),
2319             "::",
2320             stringify!(x_offset)
2321         )
2322     );
2323     assert_eq!(
2324         unsafe { &(*(::std::ptr::null::<hb_glyph_position_t>())).y_offset as *const _ as usize },
2325         12usize,
2326         concat!(
2327             "Offset of field: ",
2328             stringify!(hb_glyph_position_t),
2329             "::",
2330             stringify!(y_offset)
2331         )
2332     );
2333     assert_eq!(
2334         unsafe { &(*(::std::ptr::null::<hb_glyph_position_t>())).var as *const _ as usize },
2335         16usize,
2336         concat!(
2337             "Offset of field: ",
2338             stringify!(hb_glyph_position_t),
2339             "::",
2340             stringify!(var)
2341         )
2342     );
2343 }
2344 /// hb_segment_properties_t:
2345 /// @direction: the `hb_direction_t` of the buffer, see hb_buffer_set_direction().
2346 /// @script: the `hb_script_t` of the buffer, see hb_buffer_set_script().
2347 /// @language: the `hb_language_t` of the buffer, see hb_buffer_set_language().
2348 ///
2349 /// The structure that holds various text properties of an `hb_buffer_t`. Can be
2350 /// set and retrieved using hb_buffer_set_segment_properties() and
2351 /// hb_buffer_get_segment_properties(), respectively.
2352 #[repr(C)]
2353 #[derive(Debug, Copy, Clone)]
2354 pub struct hb_segment_properties_t {
2355     pub direction: hb_direction_t,
2356     pub script: hb_script_t,
2357     pub language: hb_language_t,
2358     pub reserved1: *mut ::std::os::raw::c_void,
2359     pub reserved2: *mut ::std::os::raw::c_void,
2360 }
2361 #[test]
bindgen_test_layout_hb_segment_properties_t()2362 fn bindgen_test_layout_hb_segment_properties_t() {
2363     assert_eq!(
2364         ::std::mem::size_of::<hb_segment_properties_t>(),
2365         32usize,
2366         concat!("Size of: ", stringify!(hb_segment_properties_t))
2367     );
2368     assert_eq!(
2369         ::std::mem::align_of::<hb_segment_properties_t>(),
2370         8usize,
2371         concat!("Alignment of ", stringify!(hb_segment_properties_t))
2372     );
2373     assert_eq!(
2374         unsafe {
2375             &(*(::std::ptr::null::<hb_segment_properties_t>())).direction as *const _ as usize
2376         },
2377         0usize,
2378         concat!(
2379             "Offset of field: ",
2380             stringify!(hb_segment_properties_t),
2381             "::",
2382             stringify!(direction)
2383         )
2384     );
2385     assert_eq!(
2386         unsafe { &(*(::std::ptr::null::<hb_segment_properties_t>())).script as *const _ as usize },
2387         4usize,
2388         concat!(
2389             "Offset of field: ",
2390             stringify!(hb_segment_properties_t),
2391             "::",
2392             stringify!(script)
2393         )
2394     );
2395     assert_eq!(
2396         unsafe {
2397             &(*(::std::ptr::null::<hb_segment_properties_t>())).language as *const _ as usize
2398         },
2399         8usize,
2400         concat!(
2401             "Offset of field: ",
2402             stringify!(hb_segment_properties_t),
2403             "::",
2404             stringify!(language)
2405         )
2406     );
2407     assert_eq!(
2408         unsafe {
2409             &(*(::std::ptr::null::<hb_segment_properties_t>())).reserved1 as *const _ as usize
2410         },
2411         16usize,
2412         concat!(
2413             "Offset of field: ",
2414             stringify!(hb_segment_properties_t),
2415             "::",
2416             stringify!(reserved1)
2417         )
2418     );
2419     assert_eq!(
2420         unsafe {
2421             &(*(::std::ptr::null::<hb_segment_properties_t>())).reserved2 as *const _ as usize
2422         },
2423         24usize,
2424         concat!(
2425             "Offset of field: ",
2426             stringify!(hb_segment_properties_t),
2427             "::",
2428             stringify!(reserved2)
2429         )
2430     );
2431 }
2432 extern "C" {
hb_segment_properties_equal( a: *const hb_segment_properties_t, b: *const hb_segment_properties_t, ) -> hb_bool_t2433     pub fn hb_segment_properties_equal(
2434         a: *const hb_segment_properties_t,
2435         b: *const hb_segment_properties_t,
2436     ) -> hb_bool_t;
2437 }
2438 extern "C" {
hb_segment_properties_hash(p: *const hb_segment_properties_t) -> ::std::os::raw::c_uint2439     pub fn hb_segment_properties_hash(p: *const hb_segment_properties_t) -> ::std::os::raw::c_uint;
2440 }
2441 #[repr(C)]
2442 #[derive(Debug, Copy, Clone)]
2443 pub struct hb_buffer_t {
2444     _unused: [u8; 0],
2445 }
2446 extern "C" {
hb_buffer_create() -> *mut hb_buffer_t2447     pub fn hb_buffer_create() -> *mut hb_buffer_t;
2448 }
2449 extern "C" {
hb_buffer_get_empty() -> *mut hb_buffer_t2450     pub fn hb_buffer_get_empty() -> *mut hb_buffer_t;
2451 }
2452 extern "C" {
hb_buffer_reference(buffer: *mut hb_buffer_t) -> *mut hb_buffer_t2453     pub fn hb_buffer_reference(buffer: *mut hb_buffer_t) -> *mut hb_buffer_t;
2454 }
2455 extern "C" {
hb_buffer_destroy(buffer: *mut hb_buffer_t)2456     pub fn hb_buffer_destroy(buffer: *mut hb_buffer_t);
2457 }
2458 extern "C" {
hb_buffer_set_user_data( buffer: *mut hb_buffer_t, key: *mut hb_user_data_key_t, data: *mut ::std::os::raw::c_void, destroy: hb_destroy_func_t, replace: hb_bool_t, ) -> hb_bool_t2459     pub fn hb_buffer_set_user_data(
2460         buffer: *mut hb_buffer_t,
2461         key: *mut hb_user_data_key_t,
2462         data: *mut ::std::os::raw::c_void,
2463         destroy: hb_destroy_func_t,
2464         replace: hb_bool_t,
2465     ) -> hb_bool_t;
2466 }
2467 extern "C" {
hb_buffer_get_user_data( buffer: *mut hb_buffer_t, key: *mut hb_user_data_key_t, ) -> *mut ::std::os::raw::c_void2468     pub fn hb_buffer_get_user_data(
2469         buffer: *mut hb_buffer_t,
2470         key: *mut hb_user_data_key_t,
2471     ) -> *mut ::std::os::raw::c_void;
2472 }
2473 pub const HB_BUFFER_CONTENT_TYPE_INVALID: hb_buffer_content_type_t = 0;
2474 pub const HB_BUFFER_CONTENT_TYPE_UNICODE: hb_buffer_content_type_t = 1;
2475 pub const HB_BUFFER_CONTENT_TYPE_GLYPHS: hb_buffer_content_type_t = 2;
2476 /// hb_buffer_content_type_t:
2477 /// @HB_BUFFER_CONTENT_TYPE_INVALID: Initial value for new buffer.
2478 /// @HB_BUFFER_CONTENT_TYPE_UNICODE: The buffer contains input characters (before shaping).
2479 /// @HB_BUFFER_CONTENT_TYPE_GLYPHS: The buffer contains output glyphs (after shaping).
2480 pub type hb_buffer_content_type_t = u32;
2481 extern "C" {
hb_buffer_set_content_type( buffer: *mut hb_buffer_t, content_type: hb_buffer_content_type_t, )2482     pub fn hb_buffer_set_content_type(
2483         buffer: *mut hb_buffer_t,
2484         content_type: hb_buffer_content_type_t,
2485     );
2486 }
2487 extern "C" {
hb_buffer_get_content_type(buffer: *mut hb_buffer_t) -> hb_buffer_content_type_t2488     pub fn hb_buffer_get_content_type(buffer: *mut hb_buffer_t) -> hb_buffer_content_type_t;
2489 }
2490 extern "C" {
hb_buffer_set_unicode_funcs( buffer: *mut hb_buffer_t, unicode_funcs: *mut hb_unicode_funcs_t, )2491     pub fn hb_buffer_set_unicode_funcs(
2492         buffer: *mut hb_buffer_t,
2493         unicode_funcs: *mut hb_unicode_funcs_t,
2494     );
2495 }
2496 extern "C" {
hb_buffer_get_unicode_funcs(buffer: *mut hb_buffer_t) -> *mut hb_unicode_funcs_t2497     pub fn hb_buffer_get_unicode_funcs(buffer: *mut hb_buffer_t) -> *mut hb_unicode_funcs_t;
2498 }
2499 extern "C" {
hb_buffer_set_direction(buffer: *mut hb_buffer_t, direction: hb_direction_t)2500     pub fn hb_buffer_set_direction(buffer: *mut hb_buffer_t, direction: hb_direction_t);
2501 }
2502 extern "C" {
hb_buffer_get_direction(buffer: *mut hb_buffer_t) -> hb_direction_t2503     pub fn hb_buffer_get_direction(buffer: *mut hb_buffer_t) -> hb_direction_t;
2504 }
2505 extern "C" {
hb_buffer_set_script(buffer: *mut hb_buffer_t, script: hb_script_t)2506     pub fn hb_buffer_set_script(buffer: *mut hb_buffer_t, script: hb_script_t);
2507 }
2508 extern "C" {
hb_buffer_get_script(buffer: *mut hb_buffer_t) -> hb_script_t2509     pub fn hb_buffer_get_script(buffer: *mut hb_buffer_t) -> hb_script_t;
2510 }
2511 extern "C" {
hb_buffer_set_language(buffer: *mut hb_buffer_t, language: hb_language_t)2512     pub fn hb_buffer_set_language(buffer: *mut hb_buffer_t, language: hb_language_t);
2513 }
2514 extern "C" {
hb_buffer_get_language(buffer: *mut hb_buffer_t) -> hb_language_t2515     pub fn hb_buffer_get_language(buffer: *mut hb_buffer_t) -> hb_language_t;
2516 }
2517 extern "C" {
hb_buffer_set_segment_properties( buffer: *mut hb_buffer_t, props: *const hb_segment_properties_t, )2518     pub fn hb_buffer_set_segment_properties(
2519         buffer: *mut hb_buffer_t,
2520         props: *const hb_segment_properties_t,
2521     );
2522 }
2523 extern "C" {
hb_buffer_get_segment_properties( buffer: *mut hb_buffer_t, props: *mut hb_segment_properties_t, )2524     pub fn hb_buffer_get_segment_properties(
2525         buffer: *mut hb_buffer_t,
2526         props: *mut hb_segment_properties_t,
2527     );
2528 }
2529 extern "C" {
hb_buffer_guess_segment_properties(buffer: *mut hb_buffer_t)2530     pub fn hb_buffer_guess_segment_properties(buffer: *mut hb_buffer_t);
2531 }
2532 pub const HB_BUFFER_FLAG_DEFAULT: hb_buffer_flags_t = 0;
2533 pub const HB_BUFFER_FLAG_BOT: hb_buffer_flags_t = 1;
2534 pub const HB_BUFFER_FLAG_EOT: hb_buffer_flags_t = 2;
2535 pub const HB_BUFFER_FLAG_PRESERVE_DEFAULT_IGNORABLES: hb_buffer_flags_t = 4;
2536 pub const HB_BUFFER_FLAG_REMOVE_DEFAULT_IGNORABLES: hb_buffer_flags_t = 8;
2537 pub const HB_BUFFER_FLAG_DO_NOT_INSERT_DOTTED_CIRCLE: hb_buffer_flags_t = 16;
2538 /// hb_buffer_flags_t:
2539 /// @HB_BUFFER_FLAG_DEFAULT: the default buffer flag.
2540 /// @HB_BUFFER_FLAG_BOT: flag indicating that special handling of the beginning
2541 ///                      of text paragraph can be applied to this buffer. Should usually
2542 ///                      be set, unless you are passing to the buffer only part
2543 ///                      of the text without the full context.
2544 /// @HB_BUFFER_FLAG_EOT: flag indicating that special handling of the end of text
2545 /// paragraph can be applied to this buffer, similar to
2546 /// @HB_BUFFER_FLAG_BOT.
2547 /// @HB_BUFFER_FLAG_PRESERVE_DEFAULT_IGNORABLES:
2548 /// flag indication that character with Default_Ignorable
2549 /// Unicode property should use the corresponding glyph
2550 /// from the font, instead of hiding them (done by
2551 /// replacing them with the space glyph and zeroing the
2552 /// advance width.)  This flag takes precedence over
2553 /// @HB_BUFFER_FLAG_REMOVE_DEFAULT_IGNORABLES.
2554 /// @HB_BUFFER_FLAG_REMOVE_DEFAULT_IGNORABLES:
2555 /// flag indication that character with Default_Ignorable
2556 /// Unicode property should be removed from glyph string
2557 /// instead of hiding them (done by replacing them with the
2558 /// space glyph and zeroing the advance width.)
2559 /// @HB_BUFFER_FLAG_PRESERVE_DEFAULT_IGNORABLES takes
2560 /// precedence over this flag. Since: 1.8.0
2561 /// @HB_BUFFER_FLAG_DO_NOT_INSERT_DOTTED_CIRCLE:
2562 ///    flag indicating that a dotted circle should
2563 ///    not be inserted in the rendering of incorrect
2564 ///    character sequences (such at <0905 093E>). Since: 2.4
2565 ///
2566 /// Since: 0.9.20
2567 pub type hb_buffer_flags_t = u32;
2568 extern "C" {
hb_buffer_set_flags(buffer: *mut hb_buffer_t, flags: hb_buffer_flags_t)2569     pub fn hb_buffer_set_flags(buffer: *mut hb_buffer_t, flags: hb_buffer_flags_t);
2570 }
2571 extern "C" {
hb_buffer_get_flags(buffer: *mut hb_buffer_t) -> hb_buffer_flags_t2572     pub fn hb_buffer_get_flags(buffer: *mut hb_buffer_t) -> hb_buffer_flags_t;
2573 }
2574 pub const HB_BUFFER_CLUSTER_LEVEL_MONOTONE_GRAPHEMES: hb_buffer_cluster_level_t = 0;
2575 pub const HB_BUFFER_CLUSTER_LEVEL_MONOTONE_CHARACTERS: hb_buffer_cluster_level_t = 1;
2576 pub const HB_BUFFER_CLUSTER_LEVEL_CHARACTERS: hb_buffer_cluster_level_t = 2;
2577 pub const HB_BUFFER_CLUSTER_LEVEL_DEFAULT: hb_buffer_cluster_level_t = 0;
2578 /// hb_buffer_cluster_level_t:
2579 /// @HB_BUFFER_CLUSTER_LEVEL_MONOTONE_GRAPHEMES: Return cluster values grouped by graphemes into
2580 /// monotone order.
2581 /// @HB_BUFFER_CLUSTER_LEVEL_MONOTONE_CHARACTERS: Return cluster values grouped into monotone order.
2582 /// @HB_BUFFER_CLUSTER_LEVEL_CHARACTERS: Don't group cluster values.
2583 /// @HB_BUFFER_CLUSTER_LEVEL_DEFAULT: Default cluster level,
2584 /// equal to @HB_BUFFER_CLUSTER_LEVEL_MONOTONE_GRAPHEMES.
2585 ///
2586 /// Since: 0.9.42
2587 pub type hb_buffer_cluster_level_t = u32;
2588 extern "C" {
hb_buffer_set_cluster_level( buffer: *mut hb_buffer_t, cluster_level: hb_buffer_cluster_level_t, )2589     pub fn hb_buffer_set_cluster_level(
2590         buffer: *mut hb_buffer_t,
2591         cluster_level: hb_buffer_cluster_level_t,
2592     );
2593 }
2594 extern "C" {
hb_buffer_get_cluster_level(buffer: *mut hb_buffer_t) -> hb_buffer_cluster_level_t2595     pub fn hb_buffer_get_cluster_level(buffer: *mut hb_buffer_t) -> hb_buffer_cluster_level_t;
2596 }
2597 extern "C" {
hb_buffer_set_replacement_codepoint( buffer: *mut hb_buffer_t, replacement: hb_codepoint_t, )2598     pub fn hb_buffer_set_replacement_codepoint(
2599         buffer: *mut hb_buffer_t,
2600         replacement: hb_codepoint_t,
2601     );
2602 }
2603 extern "C" {
hb_buffer_get_replacement_codepoint(buffer: *mut hb_buffer_t) -> hb_codepoint_t2604     pub fn hb_buffer_get_replacement_codepoint(buffer: *mut hb_buffer_t) -> hb_codepoint_t;
2605 }
2606 extern "C" {
hb_buffer_set_invisible_glyph(buffer: *mut hb_buffer_t, invisible: hb_codepoint_t)2607     pub fn hb_buffer_set_invisible_glyph(buffer: *mut hb_buffer_t, invisible: hb_codepoint_t);
2608 }
2609 extern "C" {
hb_buffer_get_invisible_glyph(buffer: *mut hb_buffer_t) -> hb_codepoint_t2610     pub fn hb_buffer_get_invisible_glyph(buffer: *mut hb_buffer_t) -> hb_codepoint_t;
2611 }
2612 extern "C" {
hb_buffer_reset(buffer: *mut hb_buffer_t)2613     pub fn hb_buffer_reset(buffer: *mut hb_buffer_t);
2614 }
2615 extern "C" {
hb_buffer_clear_contents(buffer: *mut hb_buffer_t)2616     pub fn hb_buffer_clear_contents(buffer: *mut hb_buffer_t);
2617 }
2618 extern "C" {
hb_buffer_pre_allocate( buffer: *mut hb_buffer_t, size: ::std::os::raw::c_uint, ) -> hb_bool_t2619     pub fn hb_buffer_pre_allocate(
2620         buffer: *mut hb_buffer_t,
2621         size: ::std::os::raw::c_uint,
2622     ) -> hb_bool_t;
2623 }
2624 extern "C" {
hb_buffer_allocation_successful(buffer: *mut hb_buffer_t) -> hb_bool_t2625     pub fn hb_buffer_allocation_successful(buffer: *mut hb_buffer_t) -> hb_bool_t;
2626 }
2627 extern "C" {
hb_buffer_reverse(buffer: *mut hb_buffer_t)2628     pub fn hb_buffer_reverse(buffer: *mut hb_buffer_t);
2629 }
2630 extern "C" {
hb_buffer_reverse_range( buffer: *mut hb_buffer_t, start: ::std::os::raw::c_uint, end: ::std::os::raw::c_uint, )2631     pub fn hb_buffer_reverse_range(
2632         buffer: *mut hb_buffer_t,
2633         start: ::std::os::raw::c_uint,
2634         end: ::std::os::raw::c_uint,
2635     );
2636 }
2637 extern "C" {
hb_buffer_reverse_clusters(buffer: *mut hb_buffer_t)2638     pub fn hb_buffer_reverse_clusters(buffer: *mut hb_buffer_t);
2639 }
2640 extern "C" {
hb_buffer_add( buffer: *mut hb_buffer_t, codepoint: hb_codepoint_t, cluster: ::std::os::raw::c_uint, )2641     pub fn hb_buffer_add(
2642         buffer: *mut hb_buffer_t,
2643         codepoint: hb_codepoint_t,
2644         cluster: ::std::os::raw::c_uint,
2645     );
2646 }
2647 extern "C" {
hb_buffer_add_utf8( buffer: *mut hb_buffer_t, text: *const ::std::os::raw::c_char, text_length: ::std::os::raw::c_int, item_offset: ::std::os::raw::c_uint, item_length: ::std::os::raw::c_int, )2648     pub fn hb_buffer_add_utf8(
2649         buffer: *mut hb_buffer_t,
2650         text: *const ::std::os::raw::c_char,
2651         text_length: ::std::os::raw::c_int,
2652         item_offset: ::std::os::raw::c_uint,
2653         item_length: ::std::os::raw::c_int,
2654     );
2655 }
2656 extern "C" {
hb_buffer_add_utf16( buffer: *mut hb_buffer_t, text: *const u16, text_length: ::std::os::raw::c_int, item_offset: ::std::os::raw::c_uint, item_length: ::std::os::raw::c_int, )2657     pub fn hb_buffer_add_utf16(
2658         buffer: *mut hb_buffer_t,
2659         text: *const u16,
2660         text_length: ::std::os::raw::c_int,
2661         item_offset: ::std::os::raw::c_uint,
2662         item_length: ::std::os::raw::c_int,
2663     );
2664 }
2665 extern "C" {
hb_buffer_add_utf32( buffer: *mut hb_buffer_t, text: *const u32, text_length: ::std::os::raw::c_int, item_offset: ::std::os::raw::c_uint, item_length: ::std::os::raw::c_int, )2666     pub fn hb_buffer_add_utf32(
2667         buffer: *mut hb_buffer_t,
2668         text: *const u32,
2669         text_length: ::std::os::raw::c_int,
2670         item_offset: ::std::os::raw::c_uint,
2671         item_length: ::std::os::raw::c_int,
2672     );
2673 }
2674 extern "C" {
hb_buffer_add_latin1( buffer: *mut hb_buffer_t, text: *const u8, text_length: ::std::os::raw::c_int, item_offset: ::std::os::raw::c_uint, item_length: ::std::os::raw::c_int, )2675     pub fn hb_buffer_add_latin1(
2676         buffer: *mut hb_buffer_t,
2677         text: *const u8,
2678         text_length: ::std::os::raw::c_int,
2679         item_offset: ::std::os::raw::c_uint,
2680         item_length: ::std::os::raw::c_int,
2681     );
2682 }
2683 extern "C" {
hb_buffer_add_codepoints( buffer: *mut hb_buffer_t, text: *const hb_codepoint_t, text_length: ::std::os::raw::c_int, item_offset: ::std::os::raw::c_uint, item_length: ::std::os::raw::c_int, )2684     pub fn hb_buffer_add_codepoints(
2685         buffer: *mut hb_buffer_t,
2686         text: *const hb_codepoint_t,
2687         text_length: ::std::os::raw::c_int,
2688         item_offset: ::std::os::raw::c_uint,
2689         item_length: ::std::os::raw::c_int,
2690     );
2691 }
2692 extern "C" {
hb_buffer_append( buffer: *mut hb_buffer_t, source: *mut hb_buffer_t, start: ::std::os::raw::c_uint, end: ::std::os::raw::c_uint, )2693     pub fn hb_buffer_append(
2694         buffer: *mut hb_buffer_t,
2695         source: *mut hb_buffer_t,
2696         start: ::std::os::raw::c_uint,
2697         end: ::std::os::raw::c_uint,
2698     );
2699 }
2700 extern "C" {
hb_buffer_set_length( buffer: *mut hb_buffer_t, length: ::std::os::raw::c_uint, ) -> hb_bool_t2701     pub fn hb_buffer_set_length(
2702         buffer: *mut hb_buffer_t,
2703         length: ::std::os::raw::c_uint,
2704     ) -> hb_bool_t;
2705 }
2706 extern "C" {
hb_buffer_get_length(buffer: *mut hb_buffer_t) -> ::std::os::raw::c_uint2707     pub fn hb_buffer_get_length(buffer: *mut hb_buffer_t) -> ::std::os::raw::c_uint;
2708 }
2709 extern "C" {
hb_buffer_get_glyph_infos( buffer: *mut hb_buffer_t, length: *mut ::std::os::raw::c_uint, ) -> *mut hb_glyph_info_t2710     pub fn hb_buffer_get_glyph_infos(
2711         buffer: *mut hb_buffer_t,
2712         length: *mut ::std::os::raw::c_uint,
2713     ) -> *mut hb_glyph_info_t;
2714 }
2715 extern "C" {
hb_buffer_get_glyph_positions( buffer: *mut hb_buffer_t, length: *mut ::std::os::raw::c_uint, ) -> *mut hb_glyph_position_t2716     pub fn hb_buffer_get_glyph_positions(
2717         buffer: *mut hb_buffer_t,
2718         length: *mut ::std::os::raw::c_uint,
2719     ) -> *mut hb_glyph_position_t;
2720 }
2721 extern "C" {
hb_buffer_normalize_glyphs(buffer: *mut hb_buffer_t)2722     pub fn hb_buffer_normalize_glyphs(buffer: *mut hb_buffer_t);
2723 }
2724 pub const HB_BUFFER_SERIALIZE_FLAG_DEFAULT: hb_buffer_serialize_flags_t = 0;
2725 pub const HB_BUFFER_SERIALIZE_FLAG_NO_CLUSTERS: hb_buffer_serialize_flags_t = 1;
2726 pub const HB_BUFFER_SERIALIZE_FLAG_NO_POSITIONS: hb_buffer_serialize_flags_t = 2;
2727 pub const HB_BUFFER_SERIALIZE_FLAG_NO_GLYPH_NAMES: hb_buffer_serialize_flags_t = 4;
2728 pub const HB_BUFFER_SERIALIZE_FLAG_GLYPH_EXTENTS: hb_buffer_serialize_flags_t = 8;
2729 pub const HB_BUFFER_SERIALIZE_FLAG_GLYPH_FLAGS: hb_buffer_serialize_flags_t = 16;
2730 pub const HB_BUFFER_SERIALIZE_FLAG_NO_ADVANCES: hb_buffer_serialize_flags_t = 32;
2731 /// hb_buffer_serialize_flags_t:
2732 /// @HB_BUFFER_SERIALIZE_FLAG_DEFAULT: serialize glyph names, clusters and positions.
2733 /// @HB_BUFFER_SERIALIZE_FLAG_NO_CLUSTERS: do not serialize glyph cluster.
2734 /// @HB_BUFFER_SERIALIZE_FLAG_NO_POSITIONS: do not serialize glyph position information.
2735 /// @HB_BUFFER_SERIALIZE_FLAG_NO_GLYPH_NAMES: do no serialize glyph name.
2736 /// @HB_BUFFER_SERIALIZE_FLAG_GLYPH_EXTENTS: serialize glyph extents.
2737 /// @HB_BUFFER_SERIALIZE_FLAG_GLYPH_FLAGS: serialize glyph flags. Since: 1.5.0
2738 /// @HB_BUFFER_SERIALIZE_FLAG_NO_ADVANCES: do not serialize glyph advances,
2739 /// glyph offsets will reflect absolute glyph positions. Since: 1.8.0
2740 ///
2741 /// Flags that control what glyph information are serialized in hb_buffer_serialize_glyphs().
2742 ///
2743 /// Since: 0.9.20
2744 pub type hb_buffer_serialize_flags_t = u32;
2745 pub const HB_BUFFER_SERIALIZE_FORMAT_TEXT: hb_buffer_serialize_format_t = 1413830740;
2746 pub const HB_BUFFER_SERIALIZE_FORMAT_JSON: hb_buffer_serialize_format_t = 1246973774;
2747 pub const HB_BUFFER_SERIALIZE_FORMAT_INVALID: hb_buffer_serialize_format_t = 0;
2748 /// hb_buffer_serialize_format_t:
2749 /// @HB_BUFFER_SERIALIZE_FORMAT_TEXT: a human-readable, plain text format.
2750 /// @HB_BUFFER_SERIALIZE_FORMAT_JSON: a machine-readable JSON format.
2751 /// @HB_BUFFER_SERIALIZE_FORMAT_INVALID: invalid format.
2752 ///
2753 /// The buffer serialization and de-serialization format used in
2754 /// hb_buffer_serialize_glyphs() and hb_buffer_deserialize_glyphs().
2755 ///
2756 /// Since: 0.9.2
2757 pub type hb_buffer_serialize_format_t = u32;
2758 extern "C" {
hb_buffer_serialize_format_from_string( str: *const ::std::os::raw::c_char, len: ::std::os::raw::c_int, ) -> hb_buffer_serialize_format_t2759     pub fn hb_buffer_serialize_format_from_string(
2760         str: *const ::std::os::raw::c_char,
2761         len: ::std::os::raw::c_int,
2762     ) -> hb_buffer_serialize_format_t;
2763 }
2764 extern "C" {
hb_buffer_serialize_format_to_string( format: hb_buffer_serialize_format_t, ) -> *const ::std::os::raw::c_char2765     pub fn hb_buffer_serialize_format_to_string(
2766         format: hb_buffer_serialize_format_t,
2767     ) -> *const ::std::os::raw::c_char;
2768 }
2769 extern "C" {
hb_buffer_serialize_list_formats() -> *mut *const ::std::os::raw::c_char2770     pub fn hb_buffer_serialize_list_formats() -> *mut *const ::std::os::raw::c_char;
2771 }
2772 extern "C" {
hb_buffer_serialize_glyphs( buffer: *mut hb_buffer_t, start: ::std::os::raw::c_uint, end: ::std::os::raw::c_uint, buf: *mut ::std::os::raw::c_char, buf_size: ::std::os::raw::c_uint, buf_consumed: *mut ::std::os::raw::c_uint, font: *mut hb_font_t, format: hb_buffer_serialize_format_t, flags: hb_buffer_serialize_flags_t, ) -> ::std::os::raw::c_uint2773     pub fn hb_buffer_serialize_glyphs(
2774         buffer: *mut hb_buffer_t,
2775         start: ::std::os::raw::c_uint,
2776         end: ::std::os::raw::c_uint,
2777         buf: *mut ::std::os::raw::c_char,
2778         buf_size: ::std::os::raw::c_uint,
2779         buf_consumed: *mut ::std::os::raw::c_uint,
2780         font: *mut hb_font_t,
2781         format: hb_buffer_serialize_format_t,
2782         flags: hb_buffer_serialize_flags_t,
2783     ) -> ::std::os::raw::c_uint;
2784 }
2785 extern "C" {
hb_buffer_deserialize_glyphs( buffer: *mut hb_buffer_t, buf: *const ::std::os::raw::c_char, buf_len: ::std::os::raw::c_int, end_ptr: *mut *const ::std::os::raw::c_char, font: *mut hb_font_t, format: hb_buffer_serialize_format_t, ) -> hb_bool_t2786     pub fn hb_buffer_deserialize_glyphs(
2787         buffer: *mut hb_buffer_t,
2788         buf: *const ::std::os::raw::c_char,
2789         buf_len: ::std::os::raw::c_int,
2790         end_ptr: *mut *const ::std::os::raw::c_char,
2791         font: *mut hb_font_t,
2792         format: hb_buffer_serialize_format_t,
2793     ) -> hb_bool_t;
2794 }
2795 pub const HB_BUFFER_DIFF_FLAG_EQUAL: hb_buffer_diff_flags_t = 0;
2796 pub const HB_BUFFER_DIFF_FLAG_CONTENT_TYPE_MISMATCH: hb_buffer_diff_flags_t = 1;
2797 pub const HB_BUFFER_DIFF_FLAG_LENGTH_MISMATCH: hb_buffer_diff_flags_t = 2;
2798 pub const HB_BUFFER_DIFF_FLAG_NOTDEF_PRESENT: hb_buffer_diff_flags_t = 4;
2799 pub const HB_BUFFER_DIFF_FLAG_DOTTED_CIRCLE_PRESENT: hb_buffer_diff_flags_t = 8;
2800 pub const HB_BUFFER_DIFF_FLAG_CODEPOINT_MISMATCH: hb_buffer_diff_flags_t = 16;
2801 pub const HB_BUFFER_DIFF_FLAG_CLUSTER_MISMATCH: hb_buffer_diff_flags_t = 32;
2802 pub const HB_BUFFER_DIFF_FLAG_GLYPH_FLAGS_MISMATCH: hb_buffer_diff_flags_t = 64;
2803 pub const HB_BUFFER_DIFF_FLAG_POSITION_MISMATCH: hb_buffer_diff_flags_t = 128;
2804 pub type hb_buffer_diff_flags_t = u32;
2805 extern "C" {
hb_buffer_diff( buffer: *mut hb_buffer_t, reference: *mut hb_buffer_t, dottedcircle_glyph: hb_codepoint_t, position_fuzz: ::std::os::raw::c_uint, ) -> hb_buffer_diff_flags_t2806     pub fn hb_buffer_diff(
2807         buffer: *mut hb_buffer_t,
2808         reference: *mut hb_buffer_t,
2809         dottedcircle_glyph: hb_codepoint_t,
2810         position_fuzz: ::std::os::raw::c_uint,
2811     ) -> hb_buffer_diff_flags_t;
2812 }
2813 pub type hb_buffer_message_func_t = ::std::option::Option<
2814     unsafe extern "C" fn(
2815         buffer: *mut hb_buffer_t,
2816         font: *mut hb_font_t,
2817         message: *const ::std::os::raw::c_char,
2818         user_data: *mut ::std::os::raw::c_void,
2819     ) -> hb_bool_t,
2820 >;
2821 extern "C" {
hb_buffer_set_message_func( buffer: *mut hb_buffer_t, func: hb_buffer_message_func_t, user_data: *mut ::std::os::raw::c_void, destroy: hb_destroy_func_t, )2822     pub fn hb_buffer_set_message_func(
2823         buffer: *mut hb_buffer_t,
2824         func: hb_buffer_message_func_t,
2825         user_data: *mut ::std::os::raw::c_void,
2826         destroy: hb_destroy_func_t,
2827     );
2828 }
2829 #[repr(C)]
2830 #[derive(Debug, Copy, Clone)]
2831 pub struct hb_map_t {
2832     _unused: [u8; 0],
2833 }
2834 extern "C" {
hb_map_create() -> *mut hb_map_t2835     pub fn hb_map_create() -> *mut hb_map_t;
2836 }
2837 extern "C" {
hb_map_get_empty() -> *mut hb_map_t2838     pub fn hb_map_get_empty() -> *mut hb_map_t;
2839 }
2840 extern "C" {
hb_map_reference(map: *mut hb_map_t) -> *mut hb_map_t2841     pub fn hb_map_reference(map: *mut hb_map_t) -> *mut hb_map_t;
2842 }
2843 extern "C" {
hb_map_destroy(map: *mut hb_map_t)2844     pub fn hb_map_destroy(map: *mut hb_map_t);
2845 }
2846 extern "C" {
hb_map_set_user_data( map: *mut hb_map_t, key: *mut hb_user_data_key_t, data: *mut ::std::os::raw::c_void, destroy: hb_destroy_func_t, replace: hb_bool_t, ) -> hb_bool_t2847     pub fn hb_map_set_user_data(
2848         map: *mut hb_map_t,
2849         key: *mut hb_user_data_key_t,
2850         data: *mut ::std::os::raw::c_void,
2851         destroy: hb_destroy_func_t,
2852         replace: hb_bool_t,
2853     ) -> hb_bool_t;
2854 }
2855 extern "C" {
hb_map_get_user_data( map: *mut hb_map_t, key: *mut hb_user_data_key_t, ) -> *mut ::std::os::raw::c_void2856     pub fn hb_map_get_user_data(
2857         map: *mut hb_map_t,
2858         key: *mut hb_user_data_key_t,
2859     ) -> *mut ::std::os::raw::c_void;
2860 }
2861 extern "C" {
hb_map_allocation_successful(map: *const hb_map_t) -> hb_bool_t2862     pub fn hb_map_allocation_successful(map: *const hb_map_t) -> hb_bool_t;
2863 }
2864 extern "C" {
hb_map_clear(map: *mut hb_map_t)2865     pub fn hb_map_clear(map: *mut hb_map_t);
2866 }
2867 extern "C" {
hb_map_is_empty(map: *const hb_map_t) -> hb_bool_t2868     pub fn hb_map_is_empty(map: *const hb_map_t) -> hb_bool_t;
2869 }
2870 extern "C" {
hb_map_get_population(map: *const hb_map_t) -> ::std::os::raw::c_uint2871     pub fn hb_map_get_population(map: *const hb_map_t) -> ::std::os::raw::c_uint;
2872 }
2873 extern "C" {
hb_map_set(map: *mut hb_map_t, key: hb_codepoint_t, value: hb_codepoint_t)2874     pub fn hb_map_set(map: *mut hb_map_t, key: hb_codepoint_t, value: hb_codepoint_t);
2875 }
2876 extern "C" {
hb_map_get(map: *const hb_map_t, key: hb_codepoint_t) -> hb_codepoint_t2877     pub fn hb_map_get(map: *const hb_map_t, key: hb_codepoint_t) -> hb_codepoint_t;
2878 }
2879 extern "C" {
hb_map_del(map: *mut hb_map_t, key: hb_codepoint_t)2880     pub fn hb_map_del(map: *mut hb_map_t, key: hb_codepoint_t);
2881 }
2882 extern "C" {
hb_map_has(map: *const hb_map_t, key: hb_codepoint_t) -> hb_bool_t2883     pub fn hb_map_has(map: *const hb_map_t, key: hb_codepoint_t) -> hb_bool_t;
2884 }
2885 extern "C" {
hb_shape( font: *mut hb_font_t, buffer: *mut hb_buffer_t, features: *const hb_feature_t, num_features: ::std::os::raw::c_uint, )2886     pub fn hb_shape(
2887         font: *mut hb_font_t,
2888         buffer: *mut hb_buffer_t,
2889         features: *const hb_feature_t,
2890         num_features: ::std::os::raw::c_uint,
2891     );
2892 }
2893 extern "C" {
hb_shape_full( font: *mut hb_font_t, buffer: *mut hb_buffer_t, features: *const hb_feature_t, num_features: ::std::os::raw::c_uint, shaper_list: *const *const ::std::os::raw::c_char, ) -> hb_bool_t2894     pub fn hb_shape_full(
2895         font: *mut hb_font_t,
2896         buffer: *mut hb_buffer_t,
2897         features: *const hb_feature_t,
2898         num_features: ::std::os::raw::c_uint,
2899         shaper_list: *const *const ::std::os::raw::c_char,
2900     ) -> hb_bool_t;
2901 }
2902 extern "C" {
hb_shape_list_shapers() -> *mut *const ::std::os::raw::c_char2903     pub fn hb_shape_list_shapers() -> *mut *const ::std::os::raw::c_char;
2904 }
2905 #[repr(C)]
2906 #[derive(Debug, Copy, Clone)]
2907 pub struct hb_shape_plan_t {
2908     _unused: [u8; 0],
2909 }
2910 extern "C" {
hb_shape_plan_create( face: *mut hb_face_t, props: *const hb_segment_properties_t, user_features: *const hb_feature_t, num_user_features: ::std::os::raw::c_uint, shaper_list: *const *const ::std::os::raw::c_char, ) -> *mut hb_shape_plan_t2911     pub fn hb_shape_plan_create(
2912         face: *mut hb_face_t,
2913         props: *const hb_segment_properties_t,
2914         user_features: *const hb_feature_t,
2915         num_user_features: ::std::os::raw::c_uint,
2916         shaper_list: *const *const ::std::os::raw::c_char,
2917     ) -> *mut hb_shape_plan_t;
2918 }
2919 extern "C" {
hb_shape_plan_create_cached( face: *mut hb_face_t, props: *const hb_segment_properties_t, user_features: *const hb_feature_t, num_user_features: ::std::os::raw::c_uint, shaper_list: *const *const ::std::os::raw::c_char, ) -> *mut hb_shape_plan_t2920     pub fn hb_shape_plan_create_cached(
2921         face: *mut hb_face_t,
2922         props: *const hb_segment_properties_t,
2923         user_features: *const hb_feature_t,
2924         num_user_features: ::std::os::raw::c_uint,
2925         shaper_list: *const *const ::std::os::raw::c_char,
2926     ) -> *mut hb_shape_plan_t;
2927 }
2928 extern "C" {
hb_shape_plan_create2( face: *mut hb_face_t, props: *const hb_segment_properties_t, user_features: *const hb_feature_t, num_user_features: ::std::os::raw::c_uint, coords: *const ::std::os::raw::c_int, num_coords: ::std::os::raw::c_uint, shaper_list: *const *const ::std::os::raw::c_char, ) -> *mut hb_shape_plan_t2929     pub fn hb_shape_plan_create2(
2930         face: *mut hb_face_t,
2931         props: *const hb_segment_properties_t,
2932         user_features: *const hb_feature_t,
2933         num_user_features: ::std::os::raw::c_uint,
2934         coords: *const ::std::os::raw::c_int,
2935         num_coords: ::std::os::raw::c_uint,
2936         shaper_list: *const *const ::std::os::raw::c_char,
2937     ) -> *mut hb_shape_plan_t;
2938 }
2939 extern "C" {
hb_shape_plan_create_cached2( face: *mut hb_face_t, props: *const hb_segment_properties_t, user_features: *const hb_feature_t, num_user_features: ::std::os::raw::c_uint, coords: *const ::std::os::raw::c_int, num_coords: ::std::os::raw::c_uint, shaper_list: *const *const ::std::os::raw::c_char, ) -> *mut hb_shape_plan_t2940     pub fn hb_shape_plan_create_cached2(
2941         face: *mut hb_face_t,
2942         props: *const hb_segment_properties_t,
2943         user_features: *const hb_feature_t,
2944         num_user_features: ::std::os::raw::c_uint,
2945         coords: *const ::std::os::raw::c_int,
2946         num_coords: ::std::os::raw::c_uint,
2947         shaper_list: *const *const ::std::os::raw::c_char,
2948     ) -> *mut hb_shape_plan_t;
2949 }
2950 extern "C" {
hb_shape_plan_get_empty() -> *mut hb_shape_plan_t2951     pub fn hb_shape_plan_get_empty() -> *mut hb_shape_plan_t;
2952 }
2953 extern "C" {
hb_shape_plan_reference(shape_plan: *mut hb_shape_plan_t) -> *mut hb_shape_plan_t2954     pub fn hb_shape_plan_reference(shape_plan: *mut hb_shape_plan_t) -> *mut hb_shape_plan_t;
2955 }
2956 extern "C" {
hb_shape_plan_destroy(shape_plan: *mut hb_shape_plan_t)2957     pub fn hb_shape_plan_destroy(shape_plan: *mut hb_shape_plan_t);
2958 }
2959 extern "C" {
hb_shape_plan_set_user_data( shape_plan: *mut hb_shape_plan_t, key: *mut hb_user_data_key_t, data: *mut ::std::os::raw::c_void, destroy: hb_destroy_func_t, replace: hb_bool_t, ) -> hb_bool_t2960     pub fn hb_shape_plan_set_user_data(
2961         shape_plan: *mut hb_shape_plan_t,
2962         key: *mut hb_user_data_key_t,
2963         data: *mut ::std::os::raw::c_void,
2964         destroy: hb_destroy_func_t,
2965         replace: hb_bool_t,
2966     ) -> hb_bool_t;
2967 }
2968 extern "C" {
hb_shape_plan_get_user_data( shape_plan: *mut hb_shape_plan_t, key: *mut hb_user_data_key_t, ) -> *mut ::std::os::raw::c_void2969     pub fn hb_shape_plan_get_user_data(
2970         shape_plan: *mut hb_shape_plan_t,
2971         key: *mut hb_user_data_key_t,
2972     ) -> *mut ::std::os::raw::c_void;
2973 }
2974 extern "C" {
hb_shape_plan_execute( shape_plan: *mut hb_shape_plan_t, font: *mut hb_font_t, buffer: *mut hb_buffer_t, features: *const hb_feature_t, num_features: ::std::os::raw::c_uint, ) -> hb_bool_t2975     pub fn hb_shape_plan_execute(
2976         shape_plan: *mut hb_shape_plan_t,
2977         font: *mut hb_font_t,
2978         buffer: *mut hb_buffer_t,
2979         features: *const hb_feature_t,
2980         num_features: ::std::os::raw::c_uint,
2981     ) -> hb_bool_t;
2982 }
2983 extern "C" {
hb_shape_plan_get_shaper( shape_plan: *mut hb_shape_plan_t, ) -> *const ::std::os::raw::c_char2984     pub fn hb_shape_plan_get_shaper(
2985         shape_plan: *mut hb_shape_plan_t,
2986     ) -> *const ::std::os::raw::c_char;
2987 }
2988 extern "C" {
hb_version( major: *mut ::std::os::raw::c_uint, minor: *mut ::std::os::raw::c_uint, micro: *mut ::std::os::raw::c_uint, )2989     pub fn hb_version(
2990         major: *mut ::std::os::raw::c_uint,
2991         minor: *mut ::std::os::raw::c_uint,
2992         micro: *mut ::std::os::raw::c_uint,
2993     );
2994 }
2995 extern "C" {
hb_version_string() -> *const ::std::os::raw::c_char2996     pub fn hb_version_string() -> *const ::std::os::raw::c_char;
2997 }
2998 extern "C" {
hb_version_atleast( major: ::std::os::raw::c_uint, minor: ::std::os::raw::c_uint, micro: ::std::os::raw::c_uint, ) -> hb_bool_t2999     pub fn hb_version_atleast(
3000         major: ::std::os::raw::c_uint,
3001         minor: ::std::os::raw::c_uint,
3002         micro: ::std::os::raw::c_uint,
3003     ) -> hb_bool_t;
3004 }
3005 pub const HB_OT_NAME_ID_COPYRIGHT: hb_ot_name_id_t = 0;
3006 pub const HB_OT_NAME_ID_FONT_FAMILY: hb_ot_name_id_t = 1;
3007 pub const HB_OT_NAME_ID_FONT_SUBFAMILY: hb_ot_name_id_t = 2;
3008 pub const HB_OT_NAME_ID_UNIQUE_ID: hb_ot_name_id_t = 3;
3009 pub const HB_OT_NAME_ID_FULL_NAME: hb_ot_name_id_t = 4;
3010 pub const HB_OT_NAME_ID_VERSION_STRING: hb_ot_name_id_t = 5;
3011 pub const HB_OT_NAME_ID_POSTSCRIPT_NAME: hb_ot_name_id_t = 6;
3012 pub const HB_OT_NAME_ID_TRADEMARK: hb_ot_name_id_t = 7;
3013 pub const HB_OT_NAME_ID_MANUFACTURER: hb_ot_name_id_t = 8;
3014 pub const HB_OT_NAME_ID_DESIGNER: hb_ot_name_id_t = 9;
3015 pub const HB_OT_NAME_ID_DESCRIPTION: hb_ot_name_id_t = 10;
3016 pub const HB_OT_NAME_ID_VENDOR_URL: hb_ot_name_id_t = 11;
3017 pub const HB_OT_NAME_ID_DESIGNER_URL: hb_ot_name_id_t = 12;
3018 pub const HB_OT_NAME_ID_LICENSE: hb_ot_name_id_t = 13;
3019 pub const HB_OT_NAME_ID_LICENSE_URL: hb_ot_name_id_t = 14;
3020 pub const HB_OT_NAME_ID_TYPOGRAPHIC_FAMILY: hb_ot_name_id_t = 16;
3021 pub const HB_OT_NAME_ID_TYPOGRAPHIC_SUBFAMILY: hb_ot_name_id_t = 17;
3022 pub const HB_OT_NAME_ID_MAC_FULL_NAME: hb_ot_name_id_t = 18;
3023 pub const HB_OT_NAME_ID_SAMPLE_TEXT: hb_ot_name_id_t = 19;
3024 pub const HB_OT_NAME_ID_CID_FINDFONT_NAME: hb_ot_name_id_t = 20;
3025 pub const HB_OT_NAME_ID_WWS_FAMILY: hb_ot_name_id_t = 21;
3026 pub const HB_OT_NAME_ID_WWS_SUBFAMILY: hb_ot_name_id_t = 22;
3027 pub const HB_OT_NAME_ID_LIGHT_BACKGROUND: hb_ot_name_id_t = 23;
3028 pub const HB_OT_NAME_ID_DARK_BACKGROUND: hb_ot_name_id_t = 24;
3029 pub const HB_OT_NAME_ID_VARIATIONS_PS_PREFIX: hb_ot_name_id_t = 25;
3030 pub const HB_OT_NAME_ID_INVALID: hb_ot_name_id_t = 65535;
3031 /// hb_ot_name_id_t:
3032 /// @HB_OT_NAME_ID_INVALID: Value to represent a nonexistent name ID.
3033 ///
3034 /// An integral type representing an OpenType 'name' table name identifier.
3035 /// There are predefined name IDs, as well as name IDs return from other
3036 /// API.  These can be used to fetch name strings from a font face.
3037 ///
3038 /// Since: 2.0.0
3039 pub type hb_ot_name_id_t = ::std::os::raw::c_uint;
3040 /// hb_ot_name_entry_t:
3041 /// @name_id: name ID
3042 /// @language: language
3043 ///
3044 /// Structure representing a name ID in a particular language.
3045 ///
3046 /// Since: 2.1.0
3047 #[repr(C)]
3048 #[derive(Copy, Clone)]
3049 pub struct hb_ot_name_entry_t {
3050     pub name_id: hb_ot_name_id_t,
3051     pub var: hb_var_int_t,
3052     pub language: hb_language_t,
3053 }
3054 #[test]
bindgen_test_layout_hb_ot_name_entry_t()3055 fn bindgen_test_layout_hb_ot_name_entry_t() {
3056     assert_eq!(
3057         ::std::mem::size_of::<hb_ot_name_entry_t>(),
3058         16usize,
3059         concat!("Size of: ", stringify!(hb_ot_name_entry_t))
3060     );
3061     assert_eq!(
3062         ::std::mem::align_of::<hb_ot_name_entry_t>(),
3063         8usize,
3064         concat!("Alignment of ", stringify!(hb_ot_name_entry_t))
3065     );
3066     assert_eq!(
3067         unsafe { &(*(::std::ptr::null::<hb_ot_name_entry_t>())).name_id as *const _ as usize },
3068         0usize,
3069         concat!(
3070             "Offset of field: ",
3071             stringify!(hb_ot_name_entry_t),
3072             "::",
3073             stringify!(name_id)
3074         )
3075     );
3076     assert_eq!(
3077         unsafe { &(*(::std::ptr::null::<hb_ot_name_entry_t>())).var as *const _ as usize },
3078         4usize,
3079         concat!(
3080             "Offset of field: ",
3081             stringify!(hb_ot_name_entry_t),
3082             "::",
3083             stringify!(var)
3084         )
3085     );
3086     assert_eq!(
3087         unsafe { &(*(::std::ptr::null::<hb_ot_name_entry_t>())).language as *const _ as usize },
3088         8usize,
3089         concat!(
3090             "Offset of field: ",
3091             stringify!(hb_ot_name_entry_t),
3092             "::",
3093             stringify!(language)
3094         )
3095     );
3096 }
3097 extern "C" {
hb_ot_name_list_names( face: *mut hb_face_t, num_entries: *mut ::std::os::raw::c_uint, ) -> *const hb_ot_name_entry_t3098     pub fn hb_ot_name_list_names(
3099         face: *mut hb_face_t,
3100         num_entries: *mut ::std::os::raw::c_uint,
3101     ) -> *const hb_ot_name_entry_t;
3102 }
3103 extern "C" {
hb_ot_name_get_utf8( face: *mut hb_face_t, name_id: hb_ot_name_id_t, language: hb_language_t, text_size: *mut ::std::os::raw::c_uint, text: *mut ::std::os::raw::c_char, ) -> ::std::os::raw::c_uint3104     pub fn hb_ot_name_get_utf8(
3105         face: *mut hb_face_t,
3106         name_id: hb_ot_name_id_t,
3107         language: hb_language_t,
3108         text_size: *mut ::std::os::raw::c_uint,
3109         text: *mut ::std::os::raw::c_char,
3110     ) -> ::std::os::raw::c_uint;
3111 }
3112 extern "C" {
hb_ot_name_get_utf16( face: *mut hb_face_t, name_id: hb_ot_name_id_t, language: hb_language_t, text_size: *mut ::std::os::raw::c_uint, text: *mut u16, ) -> ::std::os::raw::c_uint3113     pub fn hb_ot_name_get_utf16(
3114         face: *mut hb_face_t,
3115         name_id: hb_ot_name_id_t,
3116         language: hb_language_t,
3117         text_size: *mut ::std::os::raw::c_uint,
3118         text: *mut u16,
3119     ) -> ::std::os::raw::c_uint;
3120 }
3121 extern "C" {
hb_ot_name_get_utf32( face: *mut hb_face_t, name_id: hb_ot_name_id_t, language: hb_language_t, text_size: *mut ::std::os::raw::c_uint, text: *mut u32, ) -> ::std::os::raw::c_uint3122     pub fn hb_ot_name_get_utf32(
3123         face: *mut hb_face_t,
3124         name_id: hb_ot_name_id_t,
3125         language: hb_language_t,
3126         text_size: *mut ::std::os::raw::c_uint,
3127         text: *mut u32,
3128     ) -> ::std::os::raw::c_uint;
3129 }
3130 extern "C" {
hb_ot_color_has_palettes(face: *mut hb_face_t) -> hb_bool_t3131     pub fn hb_ot_color_has_palettes(face: *mut hb_face_t) -> hb_bool_t;
3132 }
3133 extern "C" {
hb_ot_color_palette_get_count(face: *mut hb_face_t) -> ::std::os::raw::c_uint3134     pub fn hb_ot_color_palette_get_count(face: *mut hb_face_t) -> ::std::os::raw::c_uint;
3135 }
3136 extern "C" {
hb_ot_color_palette_get_name_id( face: *mut hb_face_t, palette_index: ::std::os::raw::c_uint, ) -> hb_ot_name_id_t3137     pub fn hb_ot_color_palette_get_name_id(
3138         face: *mut hb_face_t,
3139         palette_index: ::std::os::raw::c_uint,
3140     ) -> hb_ot_name_id_t;
3141 }
3142 extern "C" {
hb_ot_color_palette_color_get_name_id( face: *mut hb_face_t, color_index: ::std::os::raw::c_uint, ) -> hb_ot_name_id_t3143     pub fn hb_ot_color_palette_color_get_name_id(
3144         face: *mut hb_face_t,
3145         color_index: ::std::os::raw::c_uint,
3146     ) -> hb_ot_name_id_t;
3147 }
3148 pub const HB_OT_COLOR_PALETTE_FLAG_DEFAULT: hb_ot_color_palette_flags_t = 0;
3149 pub const HB_OT_COLOR_PALETTE_FLAG_USABLE_WITH_LIGHT_BACKGROUND: hb_ot_color_palette_flags_t = 1;
3150 pub const HB_OT_COLOR_PALETTE_FLAG_USABLE_WITH_DARK_BACKGROUND: hb_ot_color_palette_flags_t = 2;
3151 /// hb_ot_color_palette_flags_t:
3152 /// @HB_OT_COLOR_PALETTE_FLAG_DEFAULT: default indicating that there is nothing special
3153 /// to note about a color palette.
3154 /// @HB_OT_COLOR_PALETTE_FLAG_USABLE_WITH_LIGHT_BACKGROUND: flag indicating that the color
3155 /// palette is appropriate to use when displaying the font on a light background such as white.
3156 /// @HB_OT_COLOR_PALETTE_FLAG_USABLE_WITH_DARK_BACKGROUND: flag indicating that the color
3157 /// palette is appropriate to use when displaying the font on a dark background such as black.
3158 ///
3159 /// Since: 2.1.0
3160 pub type hb_ot_color_palette_flags_t = u32;
3161 extern "C" {
hb_ot_color_palette_get_flags( face: *mut hb_face_t, palette_index: ::std::os::raw::c_uint, ) -> hb_ot_color_palette_flags_t3162     pub fn hb_ot_color_palette_get_flags(
3163         face: *mut hb_face_t,
3164         palette_index: ::std::os::raw::c_uint,
3165     ) -> hb_ot_color_palette_flags_t;
3166 }
3167 extern "C" {
hb_ot_color_palette_get_colors( face: *mut hb_face_t, palette_index: ::std::os::raw::c_uint, start_offset: ::std::os::raw::c_uint, color_count: *mut ::std::os::raw::c_uint, colors: *mut hb_color_t, ) -> ::std::os::raw::c_uint3168     pub fn hb_ot_color_palette_get_colors(
3169         face: *mut hb_face_t,
3170         palette_index: ::std::os::raw::c_uint,
3171         start_offset: ::std::os::raw::c_uint,
3172         color_count: *mut ::std::os::raw::c_uint,
3173         colors: *mut hb_color_t,
3174     ) -> ::std::os::raw::c_uint;
3175 }
3176 extern "C" {
hb_ot_color_has_layers(face: *mut hb_face_t) -> hb_bool_t3177     pub fn hb_ot_color_has_layers(face: *mut hb_face_t) -> hb_bool_t;
3178 }
3179 /// hb_ot_color_layer_t:
3180 ///
3181 /// Pairs of glyph and color index.
3182 ///
3183 /// Since: 2.1.0
3184 #[repr(C)]
3185 #[derive(Debug, Copy, Clone)]
3186 pub struct hb_ot_color_layer_t {
3187     pub glyph: hb_codepoint_t,
3188     pub color_index: ::std::os::raw::c_uint,
3189 }
3190 #[test]
bindgen_test_layout_hb_ot_color_layer_t()3191 fn bindgen_test_layout_hb_ot_color_layer_t() {
3192     assert_eq!(
3193         ::std::mem::size_of::<hb_ot_color_layer_t>(),
3194         8usize,
3195         concat!("Size of: ", stringify!(hb_ot_color_layer_t))
3196     );
3197     assert_eq!(
3198         ::std::mem::align_of::<hb_ot_color_layer_t>(),
3199         4usize,
3200         concat!("Alignment of ", stringify!(hb_ot_color_layer_t))
3201     );
3202     assert_eq!(
3203         unsafe { &(*(::std::ptr::null::<hb_ot_color_layer_t>())).glyph as *const _ as usize },
3204         0usize,
3205         concat!(
3206             "Offset of field: ",
3207             stringify!(hb_ot_color_layer_t),
3208             "::",
3209             stringify!(glyph)
3210         )
3211     );
3212     assert_eq!(
3213         unsafe { &(*(::std::ptr::null::<hb_ot_color_layer_t>())).color_index as *const _ as usize },
3214         4usize,
3215         concat!(
3216             "Offset of field: ",
3217             stringify!(hb_ot_color_layer_t),
3218             "::",
3219             stringify!(color_index)
3220         )
3221     );
3222 }
3223 extern "C" {
hb_ot_color_glyph_get_layers( face: *mut hb_face_t, glyph: hb_codepoint_t, start_offset: ::std::os::raw::c_uint, layer_count: *mut ::std::os::raw::c_uint, layers: *mut hb_ot_color_layer_t, ) -> ::std::os::raw::c_uint3224     pub fn hb_ot_color_glyph_get_layers(
3225         face: *mut hb_face_t,
3226         glyph: hb_codepoint_t,
3227         start_offset: ::std::os::raw::c_uint,
3228         layer_count: *mut ::std::os::raw::c_uint,
3229         layers: *mut hb_ot_color_layer_t,
3230     ) -> ::std::os::raw::c_uint;
3231 }
3232 extern "C" {
hb_ot_color_has_svg(face: *mut hb_face_t) -> hb_bool_t3233     pub fn hb_ot_color_has_svg(face: *mut hb_face_t) -> hb_bool_t;
3234 }
3235 extern "C" {
hb_ot_color_glyph_reference_svg( face: *mut hb_face_t, glyph: hb_codepoint_t, ) -> *mut hb_blob_t3236     pub fn hb_ot_color_glyph_reference_svg(
3237         face: *mut hb_face_t,
3238         glyph: hb_codepoint_t,
3239     ) -> *mut hb_blob_t;
3240 }
3241 extern "C" {
hb_ot_color_has_png(face: *mut hb_face_t) -> hb_bool_t3242     pub fn hb_ot_color_has_png(face: *mut hb_face_t) -> hb_bool_t;
3243 }
3244 extern "C" {
hb_ot_color_glyph_reference_png( font: *mut hb_font_t, glyph: hb_codepoint_t, ) -> *mut hb_blob_t3245     pub fn hb_ot_color_glyph_reference_png(
3246         font: *mut hb_font_t,
3247         glyph: hb_codepoint_t,
3248     ) -> *mut hb_blob_t;
3249 }
3250 extern "C" {
hb_ot_font_set_funcs(font: *mut hb_font_t)3251     pub fn hb_ot_font_set_funcs(font: *mut hb_font_t);
3252 }
3253 extern "C" {
hb_ot_tags_from_script_and_language( script: hb_script_t, language: hb_language_t, script_count: *mut ::std::os::raw::c_uint, script_tags: *mut hb_tag_t, language_count: *mut ::std::os::raw::c_uint, language_tags: *mut hb_tag_t, )3254     pub fn hb_ot_tags_from_script_and_language(
3255         script: hb_script_t,
3256         language: hb_language_t,
3257         script_count: *mut ::std::os::raw::c_uint,
3258         script_tags: *mut hb_tag_t,
3259         language_count: *mut ::std::os::raw::c_uint,
3260         language_tags: *mut hb_tag_t,
3261     );
3262 }
3263 extern "C" {
hb_ot_tag_to_script(tag: hb_tag_t) -> hb_script_t3264     pub fn hb_ot_tag_to_script(tag: hb_tag_t) -> hb_script_t;
3265 }
3266 extern "C" {
hb_ot_tag_to_language(tag: hb_tag_t) -> hb_language_t3267     pub fn hb_ot_tag_to_language(tag: hb_tag_t) -> hb_language_t;
3268 }
3269 extern "C" {
hb_ot_tags_to_script_and_language( script_tag: hb_tag_t, language_tag: hb_tag_t, script: *mut hb_script_t, language: *mut hb_language_t, )3270     pub fn hb_ot_tags_to_script_and_language(
3271         script_tag: hb_tag_t,
3272         language_tag: hb_tag_t,
3273         script: *mut hb_script_t,
3274         language: *mut hb_language_t,
3275     );
3276 }
3277 extern "C" {
hb_ot_layout_has_glyph_classes(face: *mut hb_face_t) -> hb_bool_t3278     pub fn hb_ot_layout_has_glyph_classes(face: *mut hb_face_t) -> hb_bool_t;
3279 }
3280 pub const HB_OT_LAYOUT_GLYPH_CLASS_UNCLASSIFIED: hb_ot_layout_glyph_class_t = 0;
3281 pub const HB_OT_LAYOUT_GLYPH_CLASS_BASE_GLYPH: hb_ot_layout_glyph_class_t = 1;
3282 pub const HB_OT_LAYOUT_GLYPH_CLASS_LIGATURE: hb_ot_layout_glyph_class_t = 2;
3283 pub const HB_OT_LAYOUT_GLYPH_CLASS_MARK: hb_ot_layout_glyph_class_t = 3;
3284 pub const HB_OT_LAYOUT_GLYPH_CLASS_COMPONENT: hb_ot_layout_glyph_class_t = 4;
3285 /// hb_ot_layout_glyph_class_t:
3286 /// @HB_OT_LAYOUT_GLYPH_CLASS_UNCLASSIFIED: Glyphs not matching the other classifications
3287 /// @HB_OT_LAYOUT_GLYPH_CLASS_BASE_GLYPH: Spacing, single characters, capable of accepting marks
3288 /// @HB_OT_LAYOUT_GLYPH_CLASS_LIGATURE: Glyphs that represent ligation of multiple characters
3289 /// @HB_OT_LAYOUT_GLYPH_CLASS_MARK: Non-spacing, combining glyphs that represent marks
3290 /// @HB_OT_LAYOUT_GLYPH_CLASS_COMPONENT: Spacing glyphs that represent part of a single character
3291 ///
3292 /// The GDEF classes defined for glyphs.
3293 ///
3294 pub type hb_ot_layout_glyph_class_t = u32;
3295 extern "C" {
hb_ot_layout_get_glyph_class( face: *mut hb_face_t, glyph: hb_codepoint_t, ) -> hb_ot_layout_glyph_class_t3296     pub fn hb_ot_layout_get_glyph_class(
3297         face: *mut hb_face_t,
3298         glyph: hb_codepoint_t,
3299     ) -> hb_ot_layout_glyph_class_t;
3300 }
3301 extern "C" {
hb_ot_layout_get_glyphs_in_class( face: *mut hb_face_t, klass: hb_ot_layout_glyph_class_t, glyphs: *mut hb_set_t, )3302     pub fn hb_ot_layout_get_glyphs_in_class(
3303         face: *mut hb_face_t,
3304         klass: hb_ot_layout_glyph_class_t,
3305         glyphs: *mut hb_set_t,
3306     );
3307 }
3308 extern "C" {
hb_ot_layout_get_attach_points( face: *mut hb_face_t, glyph: hb_codepoint_t, start_offset: ::std::os::raw::c_uint, point_count: *mut ::std::os::raw::c_uint, point_array: *mut ::std::os::raw::c_uint, ) -> ::std::os::raw::c_uint3309     pub fn hb_ot_layout_get_attach_points(
3310         face: *mut hb_face_t,
3311         glyph: hb_codepoint_t,
3312         start_offset: ::std::os::raw::c_uint,
3313         point_count: *mut ::std::os::raw::c_uint,
3314         point_array: *mut ::std::os::raw::c_uint,
3315     ) -> ::std::os::raw::c_uint;
3316 }
3317 extern "C" {
hb_ot_layout_get_ligature_carets( font: *mut hb_font_t, direction: hb_direction_t, glyph: hb_codepoint_t, start_offset: ::std::os::raw::c_uint, caret_count: *mut ::std::os::raw::c_uint, caret_array: *mut hb_position_t, ) -> ::std::os::raw::c_uint3318     pub fn hb_ot_layout_get_ligature_carets(
3319         font: *mut hb_font_t,
3320         direction: hb_direction_t,
3321         glyph: hb_codepoint_t,
3322         start_offset: ::std::os::raw::c_uint,
3323         caret_count: *mut ::std::os::raw::c_uint,
3324         caret_array: *mut hb_position_t,
3325     ) -> ::std::os::raw::c_uint;
3326 }
3327 extern "C" {
hb_ot_layout_table_get_script_tags( face: *mut hb_face_t, table_tag: hb_tag_t, start_offset: ::std::os::raw::c_uint, script_count: *mut ::std::os::raw::c_uint, script_tags: *mut hb_tag_t, ) -> ::std::os::raw::c_uint3328     pub fn hb_ot_layout_table_get_script_tags(
3329         face: *mut hb_face_t,
3330         table_tag: hb_tag_t,
3331         start_offset: ::std::os::raw::c_uint,
3332         script_count: *mut ::std::os::raw::c_uint,
3333         script_tags: *mut hb_tag_t,
3334     ) -> ::std::os::raw::c_uint;
3335 }
3336 extern "C" {
hb_ot_layout_table_find_script( face: *mut hb_face_t, table_tag: hb_tag_t, script_tag: hb_tag_t, script_index: *mut ::std::os::raw::c_uint, ) -> hb_bool_t3337     pub fn hb_ot_layout_table_find_script(
3338         face: *mut hb_face_t,
3339         table_tag: hb_tag_t,
3340         script_tag: hb_tag_t,
3341         script_index: *mut ::std::os::raw::c_uint,
3342     ) -> hb_bool_t;
3343 }
3344 extern "C" {
hb_ot_layout_table_select_script( face: *mut hb_face_t, table_tag: hb_tag_t, script_count: ::std::os::raw::c_uint, script_tags: *const hb_tag_t, script_index: *mut ::std::os::raw::c_uint, chosen_script: *mut hb_tag_t, ) -> hb_bool_t3345     pub fn hb_ot_layout_table_select_script(
3346         face: *mut hb_face_t,
3347         table_tag: hb_tag_t,
3348         script_count: ::std::os::raw::c_uint,
3349         script_tags: *const hb_tag_t,
3350         script_index: *mut ::std::os::raw::c_uint,
3351         chosen_script: *mut hb_tag_t,
3352     ) -> hb_bool_t;
3353 }
3354 extern "C" {
hb_ot_layout_table_get_feature_tags( face: *mut hb_face_t, table_tag: hb_tag_t, start_offset: ::std::os::raw::c_uint, feature_count: *mut ::std::os::raw::c_uint, feature_tags: *mut hb_tag_t, ) -> ::std::os::raw::c_uint3355     pub fn hb_ot_layout_table_get_feature_tags(
3356         face: *mut hb_face_t,
3357         table_tag: hb_tag_t,
3358         start_offset: ::std::os::raw::c_uint,
3359         feature_count: *mut ::std::os::raw::c_uint,
3360         feature_tags: *mut hb_tag_t,
3361     ) -> ::std::os::raw::c_uint;
3362 }
3363 extern "C" {
hb_ot_layout_script_get_language_tags( face: *mut hb_face_t, table_tag: hb_tag_t, script_index: ::std::os::raw::c_uint, start_offset: ::std::os::raw::c_uint, language_count: *mut ::std::os::raw::c_uint, language_tags: *mut hb_tag_t, ) -> ::std::os::raw::c_uint3364     pub fn hb_ot_layout_script_get_language_tags(
3365         face: *mut hb_face_t,
3366         table_tag: hb_tag_t,
3367         script_index: ::std::os::raw::c_uint,
3368         start_offset: ::std::os::raw::c_uint,
3369         language_count: *mut ::std::os::raw::c_uint,
3370         language_tags: *mut hb_tag_t,
3371     ) -> ::std::os::raw::c_uint;
3372 }
3373 extern "C" {
hb_ot_layout_script_select_language( face: *mut hb_face_t, table_tag: hb_tag_t, script_index: ::std::os::raw::c_uint, language_count: ::std::os::raw::c_uint, language_tags: *const hb_tag_t, language_index: *mut ::std::os::raw::c_uint, ) -> hb_bool_t3374     pub fn hb_ot_layout_script_select_language(
3375         face: *mut hb_face_t,
3376         table_tag: hb_tag_t,
3377         script_index: ::std::os::raw::c_uint,
3378         language_count: ::std::os::raw::c_uint,
3379         language_tags: *const hb_tag_t,
3380         language_index: *mut ::std::os::raw::c_uint,
3381     ) -> hb_bool_t;
3382 }
3383 extern "C" {
hb_ot_layout_language_get_required_feature_index( face: *mut hb_face_t, table_tag: hb_tag_t, script_index: ::std::os::raw::c_uint, language_index: ::std::os::raw::c_uint, feature_index: *mut ::std::os::raw::c_uint, ) -> hb_bool_t3384     pub fn hb_ot_layout_language_get_required_feature_index(
3385         face: *mut hb_face_t,
3386         table_tag: hb_tag_t,
3387         script_index: ::std::os::raw::c_uint,
3388         language_index: ::std::os::raw::c_uint,
3389         feature_index: *mut ::std::os::raw::c_uint,
3390     ) -> hb_bool_t;
3391 }
3392 extern "C" {
hb_ot_layout_language_get_required_feature( face: *mut hb_face_t, table_tag: hb_tag_t, script_index: ::std::os::raw::c_uint, language_index: ::std::os::raw::c_uint, feature_index: *mut ::std::os::raw::c_uint, feature_tag: *mut hb_tag_t, ) -> hb_bool_t3393     pub fn hb_ot_layout_language_get_required_feature(
3394         face: *mut hb_face_t,
3395         table_tag: hb_tag_t,
3396         script_index: ::std::os::raw::c_uint,
3397         language_index: ::std::os::raw::c_uint,
3398         feature_index: *mut ::std::os::raw::c_uint,
3399         feature_tag: *mut hb_tag_t,
3400     ) -> hb_bool_t;
3401 }
3402 extern "C" {
hb_ot_layout_language_get_feature_indexes( face: *mut hb_face_t, table_tag: hb_tag_t, script_index: ::std::os::raw::c_uint, language_index: ::std::os::raw::c_uint, start_offset: ::std::os::raw::c_uint, feature_count: *mut ::std::os::raw::c_uint, feature_indexes: *mut ::std::os::raw::c_uint, ) -> ::std::os::raw::c_uint3403     pub fn hb_ot_layout_language_get_feature_indexes(
3404         face: *mut hb_face_t,
3405         table_tag: hb_tag_t,
3406         script_index: ::std::os::raw::c_uint,
3407         language_index: ::std::os::raw::c_uint,
3408         start_offset: ::std::os::raw::c_uint,
3409         feature_count: *mut ::std::os::raw::c_uint,
3410         feature_indexes: *mut ::std::os::raw::c_uint,
3411     ) -> ::std::os::raw::c_uint;
3412 }
3413 extern "C" {
hb_ot_layout_language_get_feature_tags( face: *mut hb_face_t, table_tag: hb_tag_t, script_index: ::std::os::raw::c_uint, language_index: ::std::os::raw::c_uint, start_offset: ::std::os::raw::c_uint, feature_count: *mut ::std::os::raw::c_uint, feature_tags: *mut hb_tag_t, ) -> ::std::os::raw::c_uint3414     pub fn hb_ot_layout_language_get_feature_tags(
3415         face: *mut hb_face_t,
3416         table_tag: hb_tag_t,
3417         script_index: ::std::os::raw::c_uint,
3418         language_index: ::std::os::raw::c_uint,
3419         start_offset: ::std::os::raw::c_uint,
3420         feature_count: *mut ::std::os::raw::c_uint,
3421         feature_tags: *mut hb_tag_t,
3422     ) -> ::std::os::raw::c_uint;
3423 }
3424 extern "C" {
hb_ot_layout_language_find_feature( face: *mut hb_face_t, table_tag: hb_tag_t, script_index: ::std::os::raw::c_uint, language_index: ::std::os::raw::c_uint, feature_tag: hb_tag_t, feature_index: *mut ::std::os::raw::c_uint, ) -> hb_bool_t3425     pub fn hb_ot_layout_language_find_feature(
3426         face: *mut hb_face_t,
3427         table_tag: hb_tag_t,
3428         script_index: ::std::os::raw::c_uint,
3429         language_index: ::std::os::raw::c_uint,
3430         feature_tag: hb_tag_t,
3431         feature_index: *mut ::std::os::raw::c_uint,
3432     ) -> hb_bool_t;
3433 }
3434 extern "C" {
hb_ot_layout_feature_get_lookups( face: *mut hb_face_t, table_tag: hb_tag_t, feature_index: ::std::os::raw::c_uint, start_offset: ::std::os::raw::c_uint, lookup_count: *mut ::std::os::raw::c_uint, lookup_indexes: *mut ::std::os::raw::c_uint, ) -> ::std::os::raw::c_uint3435     pub fn hb_ot_layout_feature_get_lookups(
3436         face: *mut hb_face_t,
3437         table_tag: hb_tag_t,
3438         feature_index: ::std::os::raw::c_uint,
3439         start_offset: ::std::os::raw::c_uint,
3440         lookup_count: *mut ::std::os::raw::c_uint,
3441         lookup_indexes: *mut ::std::os::raw::c_uint,
3442     ) -> ::std::os::raw::c_uint;
3443 }
3444 extern "C" {
hb_ot_layout_table_get_lookup_count( face: *mut hb_face_t, table_tag: hb_tag_t, ) -> ::std::os::raw::c_uint3445     pub fn hb_ot_layout_table_get_lookup_count(
3446         face: *mut hb_face_t,
3447         table_tag: hb_tag_t,
3448     ) -> ::std::os::raw::c_uint;
3449 }
3450 extern "C" {
hb_ot_layout_collect_features( face: *mut hb_face_t, table_tag: hb_tag_t, scripts: *const hb_tag_t, languages: *const hb_tag_t, features: *const hb_tag_t, feature_indexes: *mut hb_set_t, )3451     pub fn hb_ot_layout_collect_features(
3452         face: *mut hb_face_t,
3453         table_tag: hb_tag_t,
3454         scripts: *const hb_tag_t,
3455         languages: *const hb_tag_t,
3456         features: *const hb_tag_t,
3457         feature_indexes: *mut hb_set_t,
3458     );
3459 }
3460 extern "C" {
hb_ot_layout_collect_lookups( face: *mut hb_face_t, table_tag: hb_tag_t, scripts: *const hb_tag_t, languages: *const hb_tag_t, features: *const hb_tag_t, lookup_indexes: *mut hb_set_t, )3461     pub fn hb_ot_layout_collect_lookups(
3462         face: *mut hb_face_t,
3463         table_tag: hb_tag_t,
3464         scripts: *const hb_tag_t,
3465         languages: *const hb_tag_t,
3466         features: *const hb_tag_t,
3467         lookup_indexes: *mut hb_set_t,
3468     );
3469 }
3470 extern "C" {
hb_ot_layout_lookup_collect_glyphs( face: *mut hb_face_t, table_tag: hb_tag_t, lookup_index: ::std::os::raw::c_uint, glyphs_before: *mut hb_set_t, glyphs_input: *mut hb_set_t, glyphs_after: *mut hb_set_t, glyphs_output: *mut hb_set_t, )3471     pub fn hb_ot_layout_lookup_collect_glyphs(
3472         face: *mut hb_face_t,
3473         table_tag: hb_tag_t,
3474         lookup_index: ::std::os::raw::c_uint,
3475         glyphs_before: *mut hb_set_t,
3476         glyphs_input: *mut hb_set_t,
3477         glyphs_after: *mut hb_set_t,
3478         glyphs_output: *mut hb_set_t,
3479     );
3480 }
3481 extern "C" {
hb_ot_layout_table_find_feature_variations( face: *mut hb_face_t, table_tag: hb_tag_t, coords: *const ::std::os::raw::c_int, num_coords: ::std::os::raw::c_uint, variations_index: *mut ::std::os::raw::c_uint, ) -> hb_bool_t3482     pub fn hb_ot_layout_table_find_feature_variations(
3483         face: *mut hb_face_t,
3484         table_tag: hb_tag_t,
3485         coords: *const ::std::os::raw::c_int,
3486         num_coords: ::std::os::raw::c_uint,
3487         variations_index: *mut ::std::os::raw::c_uint,
3488     ) -> hb_bool_t;
3489 }
3490 extern "C" {
hb_ot_layout_feature_with_variations_get_lookups( face: *mut hb_face_t, table_tag: hb_tag_t, feature_index: ::std::os::raw::c_uint, variations_index: ::std::os::raw::c_uint, start_offset: ::std::os::raw::c_uint, lookup_count: *mut ::std::os::raw::c_uint, lookup_indexes: *mut ::std::os::raw::c_uint, ) -> ::std::os::raw::c_uint3491     pub fn hb_ot_layout_feature_with_variations_get_lookups(
3492         face: *mut hb_face_t,
3493         table_tag: hb_tag_t,
3494         feature_index: ::std::os::raw::c_uint,
3495         variations_index: ::std::os::raw::c_uint,
3496         start_offset: ::std::os::raw::c_uint,
3497         lookup_count: *mut ::std::os::raw::c_uint,
3498         lookup_indexes: *mut ::std::os::raw::c_uint,
3499     ) -> ::std::os::raw::c_uint;
3500 }
3501 extern "C" {
hb_ot_layout_has_substitution(face: *mut hb_face_t) -> hb_bool_t3502     pub fn hb_ot_layout_has_substitution(face: *mut hb_face_t) -> hb_bool_t;
3503 }
3504 extern "C" {
hb_ot_layout_lookup_would_substitute( face: *mut hb_face_t, lookup_index: ::std::os::raw::c_uint, glyphs: *const hb_codepoint_t, glyphs_length: ::std::os::raw::c_uint, zero_context: hb_bool_t, ) -> hb_bool_t3505     pub fn hb_ot_layout_lookup_would_substitute(
3506         face: *mut hb_face_t,
3507         lookup_index: ::std::os::raw::c_uint,
3508         glyphs: *const hb_codepoint_t,
3509         glyphs_length: ::std::os::raw::c_uint,
3510         zero_context: hb_bool_t,
3511     ) -> hb_bool_t;
3512 }
3513 extern "C" {
hb_ot_layout_lookup_substitute_closure( face: *mut hb_face_t, lookup_index: ::std::os::raw::c_uint, glyphs: *mut hb_set_t, )3514     pub fn hb_ot_layout_lookup_substitute_closure(
3515         face: *mut hb_face_t,
3516         lookup_index: ::std::os::raw::c_uint,
3517         glyphs: *mut hb_set_t,
3518     );
3519 }
3520 extern "C" {
hb_ot_layout_lookups_substitute_closure( face: *mut hb_face_t, lookups: *const hb_set_t, glyphs: *mut hb_set_t, )3521     pub fn hb_ot_layout_lookups_substitute_closure(
3522         face: *mut hb_face_t,
3523         lookups: *const hb_set_t,
3524         glyphs: *mut hb_set_t,
3525     );
3526 }
3527 extern "C" {
hb_ot_layout_has_positioning(face: *mut hb_face_t) -> hb_bool_t3528     pub fn hb_ot_layout_has_positioning(face: *mut hb_face_t) -> hb_bool_t;
3529 }
3530 extern "C" {
hb_ot_layout_get_size_params( face: *mut hb_face_t, design_size: *mut ::std::os::raw::c_uint, subfamily_id: *mut ::std::os::raw::c_uint, subfamily_name_id: *mut hb_ot_name_id_t, range_start: *mut ::std::os::raw::c_uint, range_end: *mut ::std::os::raw::c_uint, ) -> hb_bool_t3531     pub fn hb_ot_layout_get_size_params(
3532         face: *mut hb_face_t,
3533         design_size: *mut ::std::os::raw::c_uint,
3534         subfamily_id: *mut ::std::os::raw::c_uint,
3535         subfamily_name_id: *mut hb_ot_name_id_t,
3536         range_start: *mut ::std::os::raw::c_uint,
3537         range_end: *mut ::std::os::raw::c_uint,
3538     ) -> hb_bool_t;
3539 }
3540 extern "C" {
hb_ot_layout_feature_get_name_ids( face: *mut hb_face_t, table_tag: hb_tag_t, feature_index: ::std::os::raw::c_uint, label_id: *mut hb_ot_name_id_t, tooltip_id: *mut hb_ot_name_id_t, sample_id: *mut hb_ot_name_id_t, num_named_parameters: *mut ::std::os::raw::c_uint, first_param_id: *mut hb_ot_name_id_t, ) -> hb_bool_t3541     pub fn hb_ot_layout_feature_get_name_ids(
3542         face: *mut hb_face_t,
3543         table_tag: hb_tag_t,
3544         feature_index: ::std::os::raw::c_uint,
3545         label_id: *mut hb_ot_name_id_t,
3546         tooltip_id: *mut hb_ot_name_id_t,
3547         sample_id: *mut hb_ot_name_id_t,
3548         num_named_parameters: *mut ::std::os::raw::c_uint,
3549         first_param_id: *mut hb_ot_name_id_t,
3550     ) -> hb_bool_t;
3551 }
3552 extern "C" {
hb_ot_layout_feature_get_characters( face: *mut hb_face_t, table_tag: hb_tag_t, feature_index: ::std::os::raw::c_uint, start_offset: ::std::os::raw::c_uint, char_count: *mut ::std::os::raw::c_uint, characters: *mut hb_codepoint_t, ) -> ::std::os::raw::c_uint3553     pub fn hb_ot_layout_feature_get_characters(
3554         face: *mut hb_face_t,
3555         table_tag: hb_tag_t,
3556         feature_index: ::std::os::raw::c_uint,
3557         start_offset: ::std::os::raw::c_uint,
3558         char_count: *mut ::std::os::raw::c_uint,
3559         characters: *mut hb_codepoint_t,
3560     ) -> ::std::os::raw::c_uint;
3561 }
3562 pub const HB_OT_LAYOUT_BASELINE_TAG_ROMAN: hb_ot_layout_baseline_tag_t = 1919905134;
3563 pub const HB_OT_LAYOUT_BASELINE_TAG_HANGING: hb_ot_layout_baseline_tag_t = 1751215719;
3564 pub const HB_OT_LAYOUT_BASELINE_TAG_IDEO_FACE_BOTTOM_OR_LEFT: hb_ot_layout_baseline_tag_t =
3565     1768121954;
3566 pub const HB_OT_LAYOUT_BASELINE_TAG_IDEO_FACE_TOP_OR_RIGHT: hb_ot_layout_baseline_tag_t =
3567     1768121972;
3568 pub const HB_OT_LAYOUT_BASELINE_TAG_IDEO_EMBOX_BOTTOM_OR_LEFT: hb_ot_layout_baseline_tag_t =
3569     1768187247;
3570 pub const HB_OT_LAYOUT_BASELINE_TAG_IDEO_EMBOX_TOP_OR_RIGHT: hb_ot_layout_baseline_tag_t =
3571     1768191088;
3572 pub const HB_OT_LAYOUT_BASELINE_TAG_MATH: hb_ot_layout_baseline_tag_t = 1835103336;
3573 pub const _HB_OT_LAYOUT_BASELINE_TAG_MAX_VALUE: hb_ot_layout_baseline_tag_t = 2147483647;
3574 /// hb_ot_layout_baseline_tag_t:
3575 /// @HB_OT_LAYOUT_BASELINE_TAG_ROMAN: The baseline used by alphabetic scripts such as Latin, Cyrillic and Greek.
3576 /// In vertical writing mode, the alphabetic baseline for characters rotated 90 degrees clockwise.
3577 /// (This would not apply to alphabetic characters that remain upright in vertical writing mode, since these
3578 /// characters are not rotated.)
3579 /// @HB_OT_LAYOUT_BASELINE_TAG_HANGING: The hanging baseline. In horizontal direction, this is the horizontal
3580 /// line from which syllables seem, to hang in Tibetan and other similar scripts. In vertical writing mode,
3581 /// for Tibetan (or some other similar script) characters rotated 90 degrees clockwise.
3582 /// @HB_OT_LAYOUT_BASELINE_TAG_IDEO_FACE_BOTTOM_OR_LEFT: Ideographic character face bottom or left edge,
3583 /// if the direction is horizontal or vertical, respectively.
3584 /// @HB_OT_LAYOUT_BASELINE_TAG_IDEO_FACE_TOP_OR_RIGHT: Ideographic character face top or right edge,
3585 /// if the direction is horizontal or vertical, respectively.
3586 /// @HB_OT_LAYOUT_BASELINE_TAG_IDEO_EMBOX_BOTTOM_OR_LEFT: Ideographic em-box bottom or left edge,
3587 /// if the direction is horizontal or vertical, respectively.
3588 /// @HB_OT_LAYOUT_BASELINE_TAG_IDEO_EMBOX_TOP_OR_RIGHT: Ideographic em-box top or right edge baseline,
3589 /// if the direction is horizontal or vertical, respectively.
3590 /// @HB_OT_LAYOUT_BASELINE_TAG_MATH: The baseline about which mathematical characters are centered.
3591 /// In vertical writing mode when mathematical characters rotated 90 degrees clockwise, are centered.
3592 ///
3593 /// Baseline tags from https://docs.microsoft.com/en-us/typography/opentype/spec/baselinetags
3594 ///
3595 /// Since: 2.6.0
3596 pub type hb_ot_layout_baseline_tag_t = u32;
3597 extern "C" {
hb_ot_layout_get_baseline( font: *mut hb_font_t, baseline_tag: hb_ot_layout_baseline_tag_t, direction: hb_direction_t, script_tag: hb_tag_t, language_tag: hb_tag_t, coord: *mut hb_position_t, ) -> hb_bool_t3598     pub fn hb_ot_layout_get_baseline(
3599         font: *mut hb_font_t,
3600         baseline_tag: hb_ot_layout_baseline_tag_t,
3601         direction: hb_direction_t,
3602         script_tag: hb_tag_t,
3603         language_tag: hb_tag_t,
3604         coord: *mut hb_position_t,
3605     ) -> hb_bool_t;
3606 }
3607 pub const HB_OT_MATH_CONSTANT_SCRIPT_PERCENT_SCALE_DOWN: hb_ot_math_constant_t = 0;
3608 pub const HB_OT_MATH_CONSTANT_SCRIPT_SCRIPT_PERCENT_SCALE_DOWN: hb_ot_math_constant_t = 1;
3609 pub const HB_OT_MATH_CONSTANT_DELIMITED_SUB_FORMULA_MIN_HEIGHT: hb_ot_math_constant_t = 2;
3610 pub const HB_OT_MATH_CONSTANT_DISPLAY_OPERATOR_MIN_HEIGHT: hb_ot_math_constant_t = 3;
3611 pub const HB_OT_MATH_CONSTANT_MATH_LEADING: hb_ot_math_constant_t = 4;
3612 pub const HB_OT_MATH_CONSTANT_AXIS_HEIGHT: hb_ot_math_constant_t = 5;
3613 pub const HB_OT_MATH_CONSTANT_ACCENT_BASE_HEIGHT: hb_ot_math_constant_t = 6;
3614 pub const HB_OT_MATH_CONSTANT_FLATTENED_ACCENT_BASE_HEIGHT: hb_ot_math_constant_t = 7;
3615 pub const HB_OT_MATH_CONSTANT_SUBSCRIPT_SHIFT_DOWN: hb_ot_math_constant_t = 8;
3616 pub const HB_OT_MATH_CONSTANT_SUBSCRIPT_TOP_MAX: hb_ot_math_constant_t = 9;
3617 pub const HB_OT_MATH_CONSTANT_SUBSCRIPT_BASELINE_DROP_MIN: hb_ot_math_constant_t = 10;
3618 pub const HB_OT_MATH_CONSTANT_SUPERSCRIPT_SHIFT_UP: hb_ot_math_constant_t = 11;
3619 pub const HB_OT_MATH_CONSTANT_SUPERSCRIPT_SHIFT_UP_CRAMPED: hb_ot_math_constant_t = 12;
3620 pub const HB_OT_MATH_CONSTANT_SUPERSCRIPT_BOTTOM_MIN: hb_ot_math_constant_t = 13;
3621 pub const HB_OT_MATH_CONSTANT_SUPERSCRIPT_BASELINE_DROP_MAX: hb_ot_math_constant_t = 14;
3622 pub const HB_OT_MATH_CONSTANT_SUB_SUPERSCRIPT_GAP_MIN: hb_ot_math_constant_t = 15;
3623 pub const HB_OT_MATH_CONSTANT_SUPERSCRIPT_BOTTOM_MAX_WITH_SUBSCRIPT: hb_ot_math_constant_t = 16;
3624 pub const HB_OT_MATH_CONSTANT_SPACE_AFTER_SCRIPT: hb_ot_math_constant_t = 17;
3625 pub const HB_OT_MATH_CONSTANT_UPPER_LIMIT_GAP_MIN: hb_ot_math_constant_t = 18;
3626 pub const HB_OT_MATH_CONSTANT_UPPER_LIMIT_BASELINE_RISE_MIN: hb_ot_math_constant_t = 19;
3627 pub const HB_OT_MATH_CONSTANT_LOWER_LIMIT_GAP_MIN: hb_ot_math_constant_t = 20;
3628 pub const HB_OT_MATH_CONSTANT_LOWER_LIMIT_BASELINE_DROP_MIN: hb_ot_math_constant_t = 21;
3629 pub const HB_OT_MATH_CONSTANT_STACK_TOP_SHIFT_UP: hb_ot_math_constant_t = 22;
3630 pub const HB_OT_MATH_CONSTANT_STACK_TOP_DISPLAY_STYLE_SHIFT_UP: hb_ot_math_constant_t = 23;
3631 pub const HB_OT_MATH_CONSTANT_STACK_BOTTOM_SHIFT_DOWN: hb_ot_math_constant_t = 24;
3632 pub const HB_OT_MATH_CONSTANT_STACK_BOTTOM_DISPLAY_STYLE_SHIFT_DOWN: hb_ot_math_constant_t = 25;
3633 pub const HB_OT_MATH_CONSTANT_STACK_GAP_MIN: hb_ot_math_constant_t = 26;
3634 pub const HB_OT_MATH_CONSTANT_STACK_DISPLAY_STYLE_GAP_MIN: hb_ot_math_constant_t = 27;
3635 pub const HB_OT_MATH_CONSTANT_STRETCH_STACK_TOP_SHIFT_UP: hb_ot_math_constant_t = 28;
3636 pub const HB_OT_MATH_CONSTANT_STRETCH_STACK_BOTTOM_SHIFT_DOWN: hb_ot_math_constant_t = 29;
3637 pub const HB_OT_MATH_CONSTANT_STRETCH_STACK_GAP_ABOVE_MIN: hb_ot_math_constant_t = 30;
3638 pub const HB_OT_MATH_CONSTANT_STRETCH_STACK_GAP_BELOW_MIN: hb_ot_math_constant_t = 31;
3639 pub const HB_OT_MATH_CONSTANT_FRACTION_NUMERATOR_SHIFT_UP: hb_ot_math_constant_t = 32;
3640 pub const HB_OT_MATH_CONSTANT_FRACTION_NUMERATOR_DISPLAY_STYLE_SHIFT_UP: hb_ot_math_constant_t = 33;
3641 pub const HB_OT_MATH_CONSTANT_FRACTION_DENOMINATOR_SHIFT_DOWN: hb_ot_math_constant_t = 34;
3642 pub const HB_OT_MATH_CONSTANT_FRACTION_DENOMINATOR_DISPLAY_STYLE_SHIFT_DOWN: hb_ot_math_constant_t =
3643     35;
3644 pub const HB_OT_MATH_CONSTANT_FRACTION_NUMERATOR_GAP_MIN: hb_ot_math_constant_t = 36;
3645 pub const HB_OT_MATH_CONSTANT_FRACTION_NUM_DISPLAY_STYLE_GAP_MIN: hb_ot_math_constant_t = 37;
3646 pub const HB_OT_MATH_CONSTANT_FRACTION_RULE_THICKNESS: hb_ot_math_constant_t = 38;
3647 pub const HB_OT_MATH_CONSTANT_FRACTION_DENOMINATOR_GAP_MIN: hb_ot_math_constant_t = 39;
3648 pub const HB_OT_MATH_CONSTANT_FRACTION_DENOM_DISPLAY_STYLE_GAP_MIN: hb_ot_math_constant_t = 40;
3649 pub const HB_OT_MATH_CONSTANT_SKEWED_FRACTION_HORIZONTAL_GAP: hb_ot_math_constant_t = 41;
3650 pub const HB_OT_MATH_CONSTANT_SKEWED_FRACTION_VERTICAL_GAP: hb_ot_math_constant_t = 42;
3651 pub const HB_OT_MATH_CONSTANT_OVERBAR_VERTICAL_GAP: hb_ot_math_constant_t = 43;
3652 pub const HB_OT_MATH_CONSTANT_OVERBAR_RULE_THICKNESS: hb_ot_math_constant_t = 44;
3653 pub const HB_OT_MATH_CONSTANT_OVERBAR_EXTRA_ASCENDER: hb_ot_math_constant_t = 45;
3654 pub const HB_OT_MATH_CONSTANT_UNDERBAR_VERTICAL_GAP: hb_ot_math_constant_t = 46;
3655 pub const HB_OT_MATH_CONSTANT_UNDERBAR_RULE_THICKNESS: hb_ot_math_constant_t = 47;
3656 pub const HB_OT_MATH_CONSTANT_UNDERBAR_EXTRA_DESCENDER: hb_ot_math_constant_t = 48;
3657 pub const HB_OT_MATH_CONSTANT_RADICAL_VERTICAL_GAP: hb_ot_math_constant_t = 49;
3658 pub const HB_OT_MATH_CONSTANT_RADICAL_DISPLAY_STYLE_VERTICAL_GAP: hb_ot_math_constant_t = 50;
3659 pub const HB_OT_MATH_CONSTANT_RADICAL_RULE_THICKNESS: hb_ot_math_constant_t = 51;
3660 pub const HB_OT_MATH_CONSTANT_RADICAL_EXTRA_ASCENDER: hb_ot_math_constant_t = 52;
3661 pub const HB_OT_MATH_CONSTANT_RADICAL_KERN_BEFORE_DEGREE: hb_ot_math_constant_t = 53;
3662 pub const HB_OT_MATH_CONSTANT_RADICAL_KERN_AFTER_DEGREE: hb_ot_math_constant_t = 54;
3663 pub const HB_OT_MATH_CONSTANT_RADICAL_DEGREE_BOTTOM_RAISE_PERCENT: hb_ot_math_constant_t = 55;
3664 /// hb_ot_math_constant_t:
3665 ///
3666 /// The 'MATH' table constants specified at
3667 /// https://docs.microsoft.com/en-us/typography/opentype/spec/math
3668 ///
3669 /// Since: 1.3.3
3670 pub type hb_ot_math_constant_t = u32;
3671 pub const HB_OT_MATH_KERN_TOP_RIGHT: hb_ot_math_kern_t = 0;
3672 pub const HB_OT_MATH_KERN_TOP_LEFT: hb_ot_math_kern_t = 1;
3673 pub const HB_OT_MATH_KERN_BOTTOM_RIGHT: hb_ot_math_kern_t = 2;
3674 pub const HB_OT_MATH_KERN_BOTTOM_LEFT: hb_ot_math_kern_t = 3;
3675 /// hb_ot_math_kern_t:
3676 ///
3677 /// The math kerning-table types defined for the four corners
3678 /// of a glyph.
3679 ///
3680 /// Since: 1.3.3
3681 pub type hb_ot_math_kern_t = u32;
3682 /// hb_ot_math_glyph_variant_t:
3683 /// @glyph: The glyph index of the variant
3684 /// @advance: The advance width of the variant
3685 ///
3686 /// Data type to hold math-variant information for a glyph.
3687 ///
3688 /// Since: 1.3.3
3689 #[repr(C)]
3690 #[derive(Debug, Copy, Clone)]
3691 pub struct hb_ot_math_glyph_variant_t {
3692     pub glyph: hb_codepoint_t,
3693     pub advance: hb_position_t,
3694 }
3695 #[test]
bindgen_test_layout_hb_ot_math_glyph_variant_t()3696 fn bindgen_test_layout_hb_ot_math_glyph_variant_t() {
3697     assert_eq!(
3698         ::std::mem::size_of::<hb_ot_math_glyph_variant_t>(),
3699         8usize,
3700         concat!("Size of: ", stringify!(hb_ot_math_glyph_variant_t))
3701     );
3702     assert_eq!(
3703         ::std::mem::align_of::<hb_ot_math_glyph_variant_t>(),
3704         4usize,
3705         concat!("Alignment of ", stringify!(hb_ot_math_glyph_variant_t))
3706     );
3707     assert_eq!(
3708         unsafe {
3709             &(*(::std::ptr::null::<hb_ot_math_glyph_variant_t>())).glyph as *const _ as usize
3710         },
3711         0usize,
3712         concat!(
3713             "Offset of field: ",
3714             stringify!(hb_ot_math_glyph_variant_t),
3715             "::",
3716             stringify!(glyph)
3717         )
3718     );
3719     assert_eq!(
3720         unsafe {
3721             &(*(::std::ptr::null::<hb_ot_math_glyph_variant_t>())).advance as *const _ as usize
3722         },
3723         4usize,
3724         concat!(
3725             "Offset of field: ",
3726             stringify!(hb_ot_math_glyph_variant_t),
3727             "::",
3728             stringify!(advance)
3729         )
3730     );
3731 }
3732 pub const HB_OT_MATH_GLYPH_PART_FLAG_EXTENDER: hb_ot_math_glyph_part_flags_t = 1;
3733 /// hb_ot_math_glyph_part_flags_t:
3734 ///
3735 /// Flags for math glyph parts.
3736 ///
3737 /// Since: 1.3.3
3738 pub type hb_ot_math_glyph_part_flags_t = u32;
3739 /// hb_ot_math_glyph_part_t:
3740 /// @glyph: The glyph index of the variant part
3741 /// @start_connector_length: The length of the connector on the starting side of the variant part
3742 /// @end_connector_length: The length of the connector on the ending side of the variant part
3743 /// @full_advance: The total advance of the part
3744 /// @flags: `hb_ot_math_glyph_part_flags_t` flags for the part
3745 ///
3746 /// Data type to hold information for a "part" component of a math-variant glyph.
3747 /// Large variants for stretchable math glyphs (such as parentheses) can be constructed
3748 /// on the fly from parts.
3749 ///
3750 /// Since: 1.3.3
3751 #[repr(C)]
3752 #[derive(Debug, Copy, Clone)]
3753 pub struct hb_ot_math_glyph_part_t {
3754     pub glyph: hb_codepoint_t,
3755     pub start_connector_length: hb_position_t,
3756     pub end_connector_length: hb_position_t,
3757     pub full_advance: hb_position_t,
3758     pub flags: hb_ot_math_glyph_part_flags_t,
3759 }
3760 #[test]
bindgen_test_layout_hb_ot_math_glyph_part_t()3761 fn bindgen_test_layout_hb_ot_math_glyph_part_t() {
3762     assert_eq!(
3763         ::std::mem::size_of::<hb_ot_math_glyph_part_t>(),
3764         20usize,
3765         concat!("Size of: ", stringify!(hb_ot_math_glyph_part_t))
3766     );
3767     assert_eq!(
3768         ::std::mem::align_of::<hb_ot_math_glyph_part_t>(),
3769         4usize,
3770         concat!("Alignment of ", stringify!(hb_ot_math_glyph_part_t))
3771     );
3772     assert_eq!(
3773         unsafe { &(*(::std::ptr::null::<hb_ot_math_glyph_part_t>())).glyph as *const _ as usize },
3774         0usize,
3775         concat!(
3776             "Offset of field: ",
3777             stringify!(hb_ot_math_glyph_part_t),
3778             "::",
3779             stringify!(glyph)
3780         )
3781     );
3782     assert_eq!(
3783         unsafe {
3784             &(*(::std::ptr::null::<hb_ot_math_glyph_part_t>())).start_connector_length as *const _
3785                 as usize
3786         },
3787         4usize,
3788         concat!(
3789             "Offset of field: ",
3790             stringify!(hb_ot_math_glyph_part_t),
3791             "::",
3792             stringify!(start_connector_length)
3793         )
3794     );
3795     assert_eq!(
3796         unsafe {
3797             &(*(::std::ptr::null::<hb_ot_math_glyph_part_t>())).end_connector_length as *const _
3798                 as usize
3799         },
3800         8usize,
3801         concat!(
3802             "Offset of field: ",
3803             stringify!(hb_ot_math_glyph_part_t),
3804             "::",
3805             stringify!(end_connector_length)
3806         )
3807     );
3808     assert_eq!(
3809         unsafe {
3810             &(*(::std::ptr::null::<hb_ot_math_glyph_part_t>())).full_advance as *const _ as usize
3811         },
3812         12usize,
3813         concat!(
3814             "Offset of field: ",
3815             stringify!(hb_ot_math_glyph_part_t),
3816             "::",
3817             stringify!(full_advance)
3818         )
3819     );
3820     assert_eq!(
3821         unsafe { &(*(::std::ptr::null::<hb_ot_math_glyph_part_t>())).flags as *const _ as usize },
3822         16usize,
3823         concat!(
3824             "Offset of field: ",
3825             stringify!(hb_ot_math_glyph_part_t),
3826             "::",
3827             stringify!(flags)
3828         )
3829     );
3830 }
3831 extern "C" {
hb_ot_math_has_data(face: *mut hb_face_t) -> hb_bool_t3832     pub fn hb_ot_math_has_data(face: *mut hb_face_t) -> hb_bool_t;
3833 }
3834 extern "C" {
hb_ot_math_get_constant( font: *mut hb_font_t, constant: hb_ot_math_constant_t, ) -> hb_position_t3835     pub fn hb_ot_math_get_constant(
3836         font: *mut hb_font_t,
3837         constant: hb_ot_math_constant_t,
3838     ) -> hb_position_t;
3839 }
3840 extern "C" {
hb_ot_math_get_glyph_italics_correction( font: *mut hb_font_t, glyph: hb_codepoint_t, ) -> hb_position_t3841     pub fn hb_ot_math_get_glyph_italics_correction(
3842         font: *mut hb_font_t,
3843         glyph: hb_codepoint_t,
3844     ) -> hb_position_t;
3845 }
3846 extern "C" {
hb_ot_math_get_glyph_top_accent_attachment( font: *mut hb_font_t, glyph: hb_codepoint_t, ) -> hb_position_t3847     pub fn hb_ot_math_get_glyph_top_accent_attachment(
3848         font: *mut hb_font_t,
3849         glyph: hb_codepoint_t,
3850     ) -> hb_position_t;
3851 }
3852 extern "C" {
hb_ot_math_is_glyph_extended_shape( face: *mut hb_face_t, glyph: hb_codepoint_t, ) -> hb_bool_t3853     pub fn hb_ot_math_is_glyph_extended_shape(
3854         face: *mut hb_face_t,
3855         glyph: hb_codepoint_t,
3856     ) -> hb_bool_t;
3857 }
3858 extern "C" {
hb_ot_math_get_glyph_kerning( font: *mut hb_font_t, glyph: hb_codepoint_t, kern: hb_ot_math_kern_t, correction_height: hb_position_t, ) -> hb_position_t3859     pub fn hb_ot_math_get_glyph_kerning(
3860         font: *mut hb_font_t,
3861         glyph: hb_codepoint_t,
3862         kern: hb_ot_math_kern_t,
3863         correction_height: hb_position_t,
3864     ) -> hb_position_t;
3865 }
3866 extern "C" {
hb_ot_math_get_glyph_variants( font: *mut hb_font_t, glyph: hb_codepoint_t, direction: hb_direction_t, start_offset: ::std::os::raw::c_uint, variants_count: *mut ::std::os::raw::c_uint, variants: *mut hb_ot_math_glyph_variant_t, ) -> ::std::os::raw::c_uint3867     pub fn hb_ot_math_get_glyph_variants(
3868         font: *mut hb_font_t,
3869         glyph: hb_codepoint_t,
3870         direction: hb_direction_t,
3871         start_offset: ::std::os::raw::c_uint,
3872         variants_count: *mut ::std::os::raw::c_uint,
3873         variants: *mut hb_ot_math_glyph_variant_t,
3874     ) -> ::std::os::raw::c_uint;
3875 }
3876 extern "C" {
hb_ot_math_get_min_connector_overlap( font: *mut hb_font_t, direction: hb_direction_t, ) -> hb_position_t3877     pub fn hb_ot_math_get_min_connector_overlap(
3878         font: *mut hb_font_t,
3879         direction: hb_direction_t,
3880     ) -> hb_position_t;
3881 }
3882 extern "C" {
hb_ot_math_get_glyph_assembly( font: *mut hb_font_t, glyph: hb_codepoint_t, direction: hb_direction_t, start_offset: ::std::os::raw::c_uint, parts_count: *mut ::std::os::raw::c_uint, parts: *mut hb_ot_math_glyph_part_t, italics_correction: *mut hb_position_t, ) -> ::std::os::raw::c_uint3883     pub fn hb_ot_math_get_glyph_assembly(
3884         font: *mut hb_font_t,
3885         glyph: hb_codepoint_t,
3886         direction: hb_direction_t,
3887         start_offset: ::std::os::raw::c_uint,
3888         parts_count: *mut ::std::os::raw::c_uint,
3889         parts: *mut hb_ot_math_glyph_part_t,
3890         italics_correction: *mut hb_position_t,
3891     ) -> ::std::os::raw::c_uint;
3892 }
3893 pub const HB_OT_META_TAG_DESIGN_LANGUAGES: hb_ot_meta_tag_t = 1684827751;
3894 pub const HB_OT_META_TAG_SUPPORTED_LANGUAGES: hb_ot_meta_tag_t = 1936485991;
3895 pub const _HB_OT_META_TAG_MAX_VALUE: hb_ot_meta_tag_t = 2147483647;
3896 /// hb_ot_meta_tag_t:
3897 /// @HB_OT_META_TAG_DESIGN_LANGUAGES: Design languages. Text, using only
3898 /// Basic Latin (ASCII) characters. Indicates languages and/or scripts
3899 /// for the user audiences that the font was primarily designed for.
3900 /// @HB_OT_META_TAG_SUPPORTED_LANGUAGES: Supported languages. Text, using
3901 /// only Basic Latin (ASCII) characters. Indicates languages and/or scripts
3902 /// that the font is declared to be capable of supporting.
3903 ///
3904 /// Known metadata tags from https://docs.microsoft.com/en-us/typography/opentype/spec/meta
3905 ///
3906 /// Since: 2.6.0
3907 pub type hb_ot_meta_tag_t = u32;
3908 extern "C" {
hb_ot_meta_get_entry_tags( face: *mut hb_face_t, start_offset: ::std::os::raw::c_uint, entries_count: *mut ::std::os::raw::c_uint, entries: *mut hb_ot_meta_tag_t, ) -> ::std::os::raw::c_uint3909     pub fn hb_ot_meta_get_entry_tags(
3910         face: *mut hb_face_t,
3911         start_offset: ::std::os::raw::c_uint,
3912         entries_count: *mut ::std::os::raw::c_uint,
3913         entries: *mut hb_ot_meta_tag_t,
3914     ) -> ::std::os::raw::c_uint;
3915 }
3916 extern "C" {
hb_ot_meta_reference_entry( face: *mut hb_face_t, meta_tag: hb_ot_meta_tag_t, ) -> *mut hb_blob_t3917     pub fn hb_ot_meta_reference_entry(
3918         face: *mut hb_face_t,
3919         meta_tag: hb_ot_meta_tag_t,
3920     ) -> *mut hb_blob_t;
3921 }
3922 pub const HB_OT_METRICS_TAG_HORIZONTAL_ASCENDER: hb_ot_metrics_tag_t = 1751216995;
3923 pub const HB_OT_METRICS_TAG_HORIZONTAL_DESCENDER: hb_ot_metrics_tag_t = 1751413603;
3924 pub const HB_OT_METRICS_TAG_HORIZONTAL_LINE_GAP: hb_ot_metrics_tag_t = 1751934832;
3925 pub const HB_OT_METRICS_TAG_HORIZONTAL_CLIPPING_ASCENT: hb_ot_metrics_tag_t = 1751346273;
3926 pub const HB_OT_METRICS_TAG_HORIZONTAL_CLIPPING_DESCENT: hb_ot_metrics_tag_t = 1751346276;
3927 pub const HB_OT_METRICS_TAG_VERTICAL_ASCENDER: hb_ot_metrics_tag_t = 1986098019;
3928 pub const HB_OT_METRICS_TAG_VERTICAL_DESCENDER: hb_ot_metrics_tag_t = 1986294627;
3929 pub const HB_OT_METRICS_TAG_VERTICAL_LINE_GAP: hb_ot_metrics_tag_t = 1986815856;
3930 pub const HB_OT_METRICS_TAG_HORIZONTAL_CARET_RISE: hb_ot_metrics_tag_t = 1751347827;
3931 pub const HB_OT_METRICS_TAG_HORIZONTAL_CARET_RUN: hb_ot_metrics_tag_t = 1751347822;
3932 pub const HB_OT_METRICS_TAG_HORIZONTAL_CARET_OFFSET: hb_ot_metrics_tag_t = 1751347046;
3933 pub const HB_OT_METRICS_TAG_VERTICAL_CARET_RISE: hb_ot_metrics_tag_t = 1986228851;
3934 pub const HB_OT_METRICS_TAG_VERTICAL_CARET_RUN: hb_ot_metrics_tag_t = 1986228846;
3935 pub const HB_OT_METRICS_TAG_VERTICAL_CARET_OFFSET: hb_ot_metrics_tag_t = 1986228070;
3936 pub const HB_OT_METRICS_TAG_X_HEIGHT: hb_ot_metrics_tag_t = 2020108148;
3937 pub const HB_OT_METRICS_TAG_CAP_HEIGHT: hb_ot_metrics_tag_t = 1668311156;
3938 pub const HB_OT_METRICS_TAG_SUBSCRIPT_EM_X_SIZE: hb_ot_metrics_tag_t = 1935833203;
3939 pub const HB_OT_METRICS_TAG_SUBSCRIPT_EM_Y_SIZE: hb_ot_metrics_tag_t = 1935833459;
3940 pub const HB_OT_METRICS_TAG_SUBSCRIPT_EM_X_OFFSET: hb_ot_metrics_tag_t = 1935833199;
3941 pub const HB_OT_METRICS_TAG_SUBSCRIPT_EM_Y_OFFSET: hb_ot_metrics_tag_t = 1935833455;
3942 pub const HB_OT_METRICS_TAG_SUPERSCRIPT_EM_X_SIZE: hb_ot_metrics_tag_t = 1936750707;
3943 pub const HB_OT_METRICS_TAG_SUPERSCRIPT_EM_Y_SIZE: hb_ot_metrics_tag_t = 1936750963;
3944 pub const HB_OT_METRICS_TAG_SUPERSCRIPT_EM_X_OFFSET: hb_ot_metrics_tag_t = 1936750703;
3945 pub const HB_OT_METRICS_TAG_SUPERSCRIPT_EM_Y_OFFSET: hb_ot_metrics_tag_t = 1936750959;
3946 pub const HB_OT_METRICS_TAG_STRIKEOUT_SIZE: hb_ot_metrics_tag_t = 1937011315;
3947 pub const HB_OT_METRICS_TAG_STRIKEOUT_OFFSET: hb_ot_metrics_tag_t = 1937011311;
3948 pub const HB_OT_METRICS_TAG_UNDERLINE_SIZE: hb_ot_metrics_tag_t = 1970168947;
3949 pub const HB_OT_METRICS_TAG_UNDERLINE_OFFSET: hb_ot_metrics_tag_t = 1970168943;
3950 pub const _HB_OT_METRICS_TAG_MAX_VALUE: hb_ot_metrics_tag_t = 2147483647;
3951 /// hb_ot_metrics_tag_t:
3952 /// @HB_OT_METRICS_TAG_HORIZONTAL_ASCENDER: horizontal ascender.
3953 /// @HB_OT_METRICS_TAG_HORIZONTAL_DESCENDER: horizontal descender.
3954 /// @HB_OT_METRICS_TAG_HORIZONTAL_LINE_GAP: horizontal line gap.
3955 /// @HB_OT_METRICS_TAG_HORIZONTAL_CLIPPING_ASCENT: horizontal clipping ascent.
3956 /// @HB_OT_METRICS_TAG_HORIZONTAL_CLIPPING_DESCENT: horizontal clipping descent.
3957 /// @HB_OT_METRICS_TAG_VERTICAL_ASCENDER: vertical ascender.
3958 /// @HB_OT_METRICS_TAG_VERTICAL_DESCENDER: vertical descender.
3959 /// @HB_OT_METRICS_TAG_VERTICAL_LINE_GAP: vertical line gap.
3960 /// @HB_OT_METRICS_TAG_HORIZONTAL_CARET_RISE: horizontal caret rise.
3961 /// @HB_OT_METRICS_TAG_HORIZONTAL_CARET_RUN: horizontal caret run.
3962 /// @HB_OT_METRICS_TAG_HORIZONTAL_CARET_OFFSET: horizontal caret offset.
3963 /// @HB_OT_METRICS_TAG_VERTICAL_CARET_RISE: vertical caret rise.
3964 /// @HB_OT_METRICS_TAG_VERTICAL_CARET_RUN: vertical caret run.
3965 /// @HB_OT_METRICS_TAG_VERTICAL_CARET_OFFSET: vertical caret offset.
3966 /// @HB_OT_METRICS_TAG_X_HEIGHT: x height.
3967 /// @HB_OT_METRICS_TAG_CAP_HEIGHT: cap height.
3968 /// @HB_OT_METRICS_TAG_SUBSCRIPT_EM_X_SIZE: subscript em x size.
3969 /// @HB_OT_METRICS_TAG_SUBSCRIPT_EM_Y_SIZE: subscript em y size.
3970 /// @HB_OT_METRICS_TAG_SUBSCRIPT_EM_X_OFFSET: subscript em x offset.
3971 /// @HB_OT_METRICS_TAG_SUBSCRIPT_EM_Y_OFFSET: subscript em y offset.
3972 /// @HB_OT_METRICS_TAG_SUPERSCRIPT_EM_X_SIZE: superscript em x size.
3973 /// @HB_OT_METRICS_TAG_SUPERSCRIPT_EM_Y_SIZE: superscript em y size.
3974 /// @HB_OT_METRICS_TAG_SUPERSCRIPT_EM_X_OFFSET: superscript em x offset.
3975 /// @HB_OT_METRICS_TAG_SUPERSCRIPT_EM_Y_OFFSET: superscript em y offset.
3976 /// @HB_OT_METRICS_TAG_STRIKEOUT_SIZE: strikeout size.
3977 /// @HB_OT_METRICS_TAG_STRIKEOUT_OFFSET: strikeout offset.
3978 /// @HB_OT_METRICS_TAG_UNDERLINE_SIZE: underline size.
3979 /// @HB_OT_METRICS_TAG_UNDERLINE_OFFSET: underline offset.
3980 ///
3981 /// From https://docs.microsoft.com/en-us/typography/opentype/spec/mvar#value-tags
3982 ///
3983 /// Since: 2.6.0
3984 pub type hb_ot_metrics_tag_t = u32;
3985 extern "C" {
hb_ot_metrics_get_position( font: *mut hb_font_t, metrics_tag: hb_ot_metrics_tag_t, position: *mut hb_position_t, ) -> hb_bool_t3986     pub fn hb_ot_metrics_get_position(
3987         font: *mut hb_font_t,
3988         metrics_tag: hb_ot_metrics_tag_t,
3989         position: *mut hb_position_t,
3990     ) -> hb_bool_t;
3991 }
3992 extern "C" {
hb_ot_metrics_get_variation( font: *mut hb_font_t, metrics_tag: hb_ot_metrics_tag_t, ) -> ::std::os::raw::c_float3993     pub fn hb_ot_metrics_get_variation(
3994         font: *mut hb_font_t,
3995         metrics_tag: hb_ot_metrics_tag_t,
3996     ) -> ::std::os::raw::c_float;
3997 }
3998 extern "C" {
hb_ot_metrics_get_x_variation( font: *mut hb_font_t, metrics_tag: hb_ot_metrics_tag_t, ) -> hb_position_t3999     pub fn hb_ot_metrics_get_x_variation(
4000         font: *mut hb_font_t,
4001         metrics_tag: hb_ot_metrics_tag_t,
4002     ) -> hb_position_t;
4003 }
4004 extern "C" {
hb_ot_metrics_get_y_variation( font: *mut hb_font_t, metrics_tag: hb_ot_metrics_tag_t, ) -> hb_position_t4005     pub fn hb_ot_metrics_get_y_variation(
4006         font: *mut hb_font_t,
4007         metrics_tag: hb_ot_metrics_tag_t,
4008     ) -> hb_position_t;
4009 }
4010 extern "C" {
hb_ot_shape_glyphs_closure( font: *mut hb_font_t, buffer: *mut hb_buffer_t, features: *const hb_feature_t, num_features: ::std::os::raw::c_uint, glyphs: *mut hb_set_t, )4011     pub fn hb_ot_shape_glyphs_closure(
4012         font: *mut hb_font_t,
4013         buffer: *mut hb_buffer_t,
4014         features: *const hb_feature_t,
4015         num_features: ::std::os::raw::c_uint,
4016         glyphs: *mut hb_set_t,
4017     );
4018 }
4019 extern "C" {
hb_ot_shape_plan_collect_lookups( shape_plan: *mut hb_shape_plan_t, table_tag: hb_tag_t, lookup_indexes: *mut hb_set_t, )4020     pub fn hb_ot_shape_plan_collect_lookups(
4021         shape_plan: *mut hb_shape_plan_t,
4022         table_tag: hb_tag_t,
4023         lookup_indexes: *mut hb_set_t,
4024     );
4025 }
4026 extern "C" {
hb_ot_var_has_data(face: *mut hb_face_t) -> hb_bool_t4027     pub fn hb_ot_var_has_data(face: *mut hb_face_t) -> hb_bool_t;
4028 }
4029 extern "C" {
hb_ot_var_get_axis_count(face: *mut hb_face_t) -> ::std::os::raw::c_uint4030     pub fn hb_ot_var_get_axis_count(face: *mut hb_face_t) -> ::std::os::raw::c_uint;
4031 }
4032 pub const HB_OT_VAR_AXIS_FLAG_HIDDEN: hb_ot_var_axis_flags_t = 1;
4033 pub const _HB_OT_VAR_AXIS_FLAG_MAX_VALUE: hb_ot_var_axis_flags_t = 2147483647;
4034 /// hb_ot_var_axis_flags_t:
4035 /// @HB_OT_VAR_AXIS_FLAG_HIDDEN: The axis should not be exposed directly in user interfaces.
4036 ///
4037 /// Since: 2.2.0
4038 pub type hb_ot_var_axis_flags_t = u32;
4039 /// hb_ot_var_axis_info_t:
4040 ///
4041 /// Since: 2.2.0
4042 #[repr(C)]
4043 #[derive(Debug, Copy, Clone)]
4044 pub struct hb_ot_var_axis_info_t {
4045     pub axis_index: ::std::os::raw::c_uint,
4046     pub tag: hb_tag_t,
4047     pub name_id: hb_ot_name_id_t,
4048     pub flags: hb_ot_var_axis_flags_t,
4049     pub min_value: ::std::os::raw::c_float,
4050     pub default_value: ::std::os::raw::c_float,
4051     pub max_value: ::std::os::raw::c_float,
4052     pub reserved: ::std::os::raw::c_uint,
4053 }
4054 #[test]
bindgen_test_layout_hb_ot_var_axis_info_t()4055 fn bindgen_test_layout_hb_ot_var_axis_info_t() {
4056     assert_eq!(
4057         ::std::mem::size_of::<hb_ot_var_axis_info_t>(),
4058         32usize,
4059         concat!("Size of: ", stringify!(hb_ot_var_axis_info_t))
4060     );
4061     assert_eq!(
4062         ::std::mem::align_of::<hb_ot_var_axis_info_t>(),
4063         4usize,
4064         concat!("Alignment of ", stringify!(hb_ot_var_axis_info_t))
4065     );
4066     assert_eq!(
4067         unsafe {
4068             &(*(::std::ptr::null::<hb_ot_var_axis_info_t>())).axis_index as *const _ as usize
4069         },
4070         0usize,
4071         concat!(
4072             "Offset of field: ",
4073             stringify!(hb_ot_var_axis_info_t),
4074             "::",
4075             stringify!(axis_index)
4076         )
4077     );
4078     assert_eq!(
4079         unsafe { &(*(::std::ptr::null::<hb_ot_var_axis_info_t>())).tag as *const _ as usize },
4080         4usize,
4081         concat!(
4082             "Offset of field: ",
4083             stringify!(hb_ot_var_axis_info_t),
4084             "::",
4085             stringify!(tag)
4086         )
4087     );
4088     assert_eq!(
4089         unsafe { &(*(::std::ptr::null::<hb_ot_var_axis_info_t>())).name_id as *const _ as usize },
4090         8usize,
4091         concat!(
4092             "Offset of field: ",
4093             stringify!(hb_ot_var_axis_info_t),
4094             "::",
4095             stringify!(name_id)
4096         )
4097     );
4098     assert_eq!(
4099         unsafe { &(*(::std::ptr::null::<hb_ot_var_axis_info_t>())).flags as *const _ as usize },
4100         12usize,
4101         concat!(
4102             "Offset of field: ",
4103             stringify!(hb_ot_var_axis_info_t),
4104             "::",
4105             stringify!(flags)
4106         )
4107     );
4108     assert_eq!(
4109         unsafe { &(*(::std::ptr::null::<hb_ot_var_axis_info_t>())).min_value as *const _ as usize },
4110         16usize,
4111         concat!(
4112             "Offset of field: ",
4113             stringify!(hb_ot_var_axis_info_t),
4114             "::",
4115             stringify!(min_value)
4116         )
4117     );
4118     assert_eq!(
4119         unsafe {
4120             &(*(::std::ptr::null::<hb_ot_var_axis_info_t>())).default_value as *const _ as usize
4121         },
4122         20usize,
4123         concat!(
4124             "Offset of field: ",
4125             stringify!(hb_ot_var_axis_info_t),
4126             "::",
4127             stringify!(default_value)
4128         )
4129     );
4130     assert_eq!(
4131         unsafe { &(*(::std::ptr::null::<hb_ot_var_axis_info_t>())).max_value as *const _ as usize },
4132         24usize,
4133         concat!(
4134             "Offset of field: ",
4135             stringify!(hb_ot_var_axis_info_t),
4136             "::",
4137             stringify!(max_value)
4138         )
4139     );
4140     assert_eq!(
4141         unsafe { &(*(::std::ptr::null::<hb_ot_var_axis_info_t>())).reserved as *const _ as usize },
4142         28usize,
4143         concat!(
4144             "Offset of field: ",
4145             stringify!(hb_ot_var_axis_info_t),
4146             "::",
4147             stringify!(reserved)
4148         )
4149     );
4150 }
4151 extern "C" {
hb_ot_var_get_axis_infos( face: *mut hb_face_t, start_offset: ::std::os::raw::c_uint, axes_count: *mut ::std::os::raw::c_uint, axes_array: *mut hb_ot_var_axis_info_t, ) -> ::std::os::raw::c_uint4152     pub fn hb_ot_var_get_axis_infos(
4153         face: *mut hb_face_t,
4154         start_offset: ::std::os::raw::c_uint,
4155         axes_count: *mut ::std::os::raw::c_uint,
4156         axes_array: *mut hb_ot_var_axis_info_t,
4157     ) -> ::std::os::raw::c_uint;
4158 }
4159 extern "C" {
hb_ot_var_find_axis_info( face: *mut hb_face_t, axis_tag: hb_tag_t, axis_info: *mut hb_ot_var_axis_info_t, ) -> hb_bool_t4160     pub fn hb_ot_var_find_axis_info(
4161         face: *mut hb_face_t,
4162         axis_tag: hb_tag_t,
4163         axis_info: *mut hb_ot_var_axis_info_t,
4164     ) -> hb_bool_t;
4165 }
4166 extern "C" {
hb_ot_var_get_named_instance_count(face: *mut hb_face_t) -> ::std::os::raw::c_uint4167     pub fn hb_ot_var_get_named_instance_count(face: *mut hb_face_t) -> ::std::os::raw::c_uint;
4168 }
4169 extern "C" {
hb_ot_var_named_instance_get_subfamily_name_id( face: *mut hb_face_t, instance_index: ::std::os::raw::c_uint, ) -> hb_ot_name_id_t4170     pub fn hb_ot_var_named_instance_get_subfamily_name_id(
4171         face: *mut hb_face_t,
4172         instance_index: ::std::os::raw::c_uint,
4173     ) -> hb_ot_name_id_t;
4174 }
4175 extern "C" {
hb_ot_var_named_instance_get_postscript_name_id( face: *mut hb_face_t, instance_index: ::std::os::raw::c_uint, ) -> hb_ot_name_id_t4176     pub fn hb_ot_var_named_instance_get_postscript_name_id(
4177         face: *mut hb_face_t,
4178         instance_index: ::std::os::raw::c_uint,
4179     ) -> hb_ot_name_id_t;
4180 }
4181 extern "C" {
hb_ot_var_named_instance_get_design_coords( face: *mut hb_face_t, instance_index: ::std::os::raw::c_uint, coords_length: *mut ::std::os::raw::c_uint, coords: *mut ::std::os::raw::c_float, ) -> ::std::os::raw::c_uint4182     pub fn hb_ot_var_named_instance_get_design_coords(
4183         face: *mut hb_face_t,
4184         instance_index: ::std::os::raw::c_uint,
4185         coords_length: *mut ::std::os::raw::c_uint,
4186         coords: *mut ::std::os::raw::c_float,
4187     ) -> ::std::os::raw::c_uint;
4188 }
4189 extern "C" {
hb_ot_var_normalize_variations( face: *mut hb_face_t, variations: *const hb_variation_t, variations_length: ::std::os::raw::c_uint, coords: *mut ::std::os::raw::c_int, coords_length: ::std::os::raw::c_uint, )4190     pub fn hb_ot_var_normalize_variations(
4191         face: *mut hb_face_t,
4192         variations: *const hb_variation_t,
4193         variations_length: ::std::os::raw::c_uint,
4194         coords: *mut ::std::os::raw::c_int,
4195         coords_length: ::std::os::raw::c_uint,
4196     );
4197 }
4198 extern "C" {
hb_ot_var_normalize_coords( face: *mut hb_face_t, coords_length: ::std::os::raw::c_uint, design_coords: *const ::std::os::raw::c_float, normalized_coords: *mut ::std::os::raw::c_int, )4199     pub fn hb_ot_var_normalize_coords(
4200         face: *mut hb_face_t,
4201         coords_length: ::std::os::raw::c_uint,
4202         design_coords: *const ::std::os::raw::c_float,
4203         normalized_coords: *mut ::std::os::raw::c_int,
4204     );
4205 }
4206 pub const HB_AAT_LAYOUT_FEATURE_TYPE_INVALID: hb_aat_layout_feature_type_t = 65535;
4207 pub const HB_AAT_LAYOUT_FEATURE_TYPE_ALL_TYPOGRAPHIC: hb_aat_layout_feature_type_t = 0;
4208 pub const HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES: hb_aat_layout_feature_type_t = 1;
4209 pub const HB_AAT_LAYOUT_FEATURE_TYPE_CURISVE_CONNECTION: hb_aat_layout_feature_type_t = 2;
4210 pub const HB_AAT_LAYOUT_FEATURE_TYPE_LETTER_CASE: hb_aat_layout_feature_type_t = 3;
4211 pub const HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_SUBSTITUTION: hb_aat_layout_feature_type_t = 4;
4212 pub const HB_AAT_LAYOUT_FEATURE_TYPE_LINGUISTIC_REARRANGEMENT: hb_aat_layout_feature_type_t = 5;
4213 pub const HB_AAT_LAYOUT_FEATURE_TYPE_NUMBER_SPACING: hb_aat_layout_feature_type_t = 6;
4214 pub const HB_AAT_LAYOUT_FEATURE_TYPE_SMART_SWASH_TYPE: hb_aat_layout_feature_type_t = 8;
4215 pub const HB_AAT_LAYOUT_FEATURE_TYPE_DIACRITICS_TYPE: hb_aat_layout_feature_type_t = 9;
4216 pub const HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_POSITION: hb_aat_layout_feature_type_t = 10;
4217 pub const HB_AAT_LAYOUT_FEATURE_TYPE_FRACTIONS: hb_aat_layout_feature_type_t = 11;
4218 pub const HB_AAT_LAYOUT_FEATURE_TYPE_OVERLAPPING_CHARACTERS_TYPE: hb_aat_layout_feature_type_t = 13;
4219 pub const HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS: hb_aat_layout_feature_type_t = 14;
4220 pub const HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS: hb_aat_layout_feature_type_t = 15;
4221 pub const HB_AAT_LAYOUT_FEATURE_TYPE_ORNAMENT_SETS_TYPE: hb_aat_layout_feature_type_t = 16;
4222 pub const HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_ALTERNATIVES: hb_aat_layout_feature_type_t = 17;
4223 pub const HB_AAT_LAYOUT_FEATURE_TYPE_DESIGN_COMPLEXITY_TYPE: hb_aat_layout_feature_type_t = 18;
4224 pub const HB_AAT_LAYOUT_FEATURE_TYPE_STYLE_OPTIONS: hb_aat_layout_feature_type_t = 19;
4225 pub const HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE: hb_aat_layout_feature_type_t = 20;
4226 pub const HB_AAT_LAYOUT_FEATURE_TYPE_NUMBER_CASE: hb_aat_layout_feature_type_t = 21;
4227 pub const HB_AAT_LAYOUT_FEATURE_TYPE_TEXT_SPACING: hb_aat_layout_feature_type_t = 22;
4228 pub const HB_AAT_LAYOUT_FEATURE_TYPE_TRANSLITERATION: hb_aat_layout_feature_type_t = 23;
4229 pub const HB_AAT_LAYOUT_FEATURE_TYPE_ANNOTATION_TYPE: hb_aat_layout_feature_type_t = 24;
4230 pub const HB_AAT_LAYOUT_FEATURE_TYPE_KANA_SPACING_TYPE: hb_aat_layout_feature_type_t = 25;
4231 pub const HB_AAT_LAYOUT_FEATURE_TYPE_IDEOGRAPHIC_SPACING_TYPE: hb_aat_layout_feature_type_t = 26;
4232 pub const HB_AAT_LAYOUT_FEATURE_TYPE_UNICODE_DECOMPOSITION_TYPE: hb_aat_layout_feature_type_t = 27;
4233 pub const HB_AAT_LAYOUT_FEATURE_TYPE_RUBY_KANA: hb_aat_layout_feature_type_t = 28;
4234 pub const HB_AAT_LAYOUT_FEATURE_TYPE_CJK_SYMBOL_ALTERNATIVES_TYPE: hb_aat_layout_feature_type_t =
4235     29;
4236 pub const HB_AAT_LAYOUT_FEATURE_TYPE_IDEOGRAPHIC_ALTERNATIVES_TYPE: hb_aat_layout_feature_type_t =
4237     30;
4238 pub const HB_AAT_LAYOUT_FEATURE_TYPE_CJK_VERTICAL_ROMAN_PLACEMENT_TYPE:
4239     hb_aat_layout_feature_type_t = 31;
4240 pub const HB_AAT_LAYOUT_FEATURE_TYPE_ITALIC_CJK_ROMAN: hb_aat_layout_feature_type_t = 32;
4241 pub const HB_AAT_LAYOUT_FEATURE_TYPE_CASE_SENSITIVE_LAYOUT: hb_aat_layout_feature_type_t = 33;
4242 pub const HB_AAT_LAYOUT_FEATURE_TYPE_ALTERNATE_KANA: hb_aat_layout_feature_type_t = 34;
4243 pub const HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES: hb_aat_layout_feature_type_t = 35;
4244 pub const HB_AAT_LAYOUT_FEATURE_TYPE_CONTEXTUAL_ALTERNATIVES: hb_aat_layout_feature_type_t = 36;
4245 pub const HB_AAT_LAYOUT_FEATURE_TYPE_LOWER_CASE: hb_aat_layout_feature_type_t = 37;
4246 pub const HB_AAT_LAYOUT_FEATURE_TYPE_UPPER_CASE: hb_aat_layout_feature_type_t = 38;
4247 pub const HB_AAT_LAYOUT_FEATURE_TYPE_LANGUAGE_TAG_TYPE: hb_aat_layout_feature_type_t = 39;
4248 pub const HB_AAT_LAYOUT_FEATURE_TYPE_CJK_ROMAN_SPACING_TYPE: hb_aat_layout_feature_type_t = 103;
4249 pub const _HB_AAT_LAYOUT_FEATURE_TYPE_MAX_VALUE: hb_aat_layout_feature_type_t = 2147483647;
4250 /// hb_aat_layout_feature_type_t:
4251 ///
4252 ///
4253 /// Since: 2.2.0
4254 pub type hb_aat_layout_feature_type_t = u32;
4255 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_INVALID: hb_aat_layout_feature_selector_t = 65535;
4256 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_ALL_TYPE_FEATURES_ON: hb_aat_layout_feature_selector_t = 0;
4257 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_ALL_TYPE_FEATURES_OFF: hb_aat_layout_feature_selector_t =
4258     1;
4259 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_REQUIRED_LIGATURES_ON: hb_aat_layout_feature_selector_t =
4260     0;
4261 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_REQUIRED_LIGATURES_OFF: hb_aat_layout_feature_selector_t =
4262     1;
4263 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_COMMON_LIGATURES_ON: hb_aat_layout_feature_selector_t = 2;
4264 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_COMMON_LIGATURES_OFF: hb_aat_layout_feature_selector_t = 3;
4265 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_RARE_LIGATURES_ON: hb_aat_layout_feature_selector_t = 4;
4266 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_RARE_LIGATURES_OFF: hb_aat_layout_feature_selector_t = 5;
4267 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_LOGOS_ON: hb_aat_layout_feature_selector_t = 6;
4268 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_LOGOS_OFF: hb_aat_layout_feature_selector_t = 7;
4269 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_REBUS_PICTURES_ON: hb_aat_layout_feature_selector_t = 8;
4270 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_REBUS_PICTURES_OFF: hb_aat_layout_feature_selector_t = 9;
4271 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_DIPHTHONG_LIGATURES_ON: hb_aat_layout_feature_selector_t =
4272     10;
4273 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_DIPHTHONG_LIGATURES_OFF: hb_aat_layout_feature_selector_t =
4274     11;
4275 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_SQUARED_LIGATURES_ON: hb_aat_layout_feature_selector_t =
4276     12;
4277 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_SQUARED_LIGATURES_OFF: hb_aat_layout_feature_selector_t =
4278     13;
4279 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_ABBREV_SQUARED_LIGATURES_ON:
4280     hb_aat_layout_feature_selector_t = 14;
4281 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_ABBREV_SQUARED_LIGATURES_OFF:
4282     hb_aat_layout_feature_selector_t = 15;
4283 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_SYMBOL_LIGATURES_ON: hb_aat_layout_feature_selector_t = 16;
4284 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_SYMBOL_LIGATURES_OFF: hb_aat_layout_feature_selector_t =
4285     17;
4286 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_CONTEXTUAL_LIGATURES_ON: hb_aat_layout_feature_selector_t =
4287     18;
4288 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_CONTEXTUAL_LIGATURES_OFF:
4289     hb_aat_layout_feature_selector_t = 19;
4290 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_HISTORICAL_LIGATURES_ON: hb_aat_layout_feature_selector_t =
4291     20;
4292 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_HISTORICAL_LIGATURES_OFF:
4293     hb_aat_layout_feature_selector_t = 21;
4294 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_UNCONNECTED: hb_aat_layout_feature_selector_t = 0;
4295 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_PARTIALLY_CONNECTED: hb_aat_layout_feature_selector_t = 1;
4296 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_CURSIVE: hb_aat_layout_feature_selector_t = 2;
4297 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_UPPER_AND_LOWER_CASE: hb_aat_layout_feature_selector_t = 0;
4298 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_ALL_CAPS: hb_aat_layout_feature_selector_t = 1;
4299 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_ALL_LOWER_CASE: hb_aat_layout_feature_selector_t = 2;
4300 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_SMALL_CAPS: hb_aat_layout_feature_selector_t = 3;
4301 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_INITIAL_CAPS: hb_aat_layout_feature_selector_t = 4;
4302 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_INITIAL_CAPS_AND_SMALL_CAPS:
4303     hb_aat_layout_feature_selector_t = 5;
4304 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_SUBSTITUTE_VERTICAL_FORMS_ON:
4305     hb_aat_layout_feature_selector_t = 0;
4306 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_SUBSTITUTE_VERTICAL_FORMS_OFF:
4307     hb_aat_layout_feature_selector_t = 1;
4308 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_LINGUISTIC_REARRANGEMENT_ON:
4309     hb_aat_layout_feature_selector_t = 0;
4310 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_LINGUISTIC_REARRANGEMENT_OFF:
4311     hb_aat_layout_feature_selector_t = 1;
4312 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_MONOSPACED_NUMBERS: hb_aat_layout_feature_selector_t = 0;
4313 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_PROPORTIONAL_NUMBERS: hb_aat_layout_feature_selector_t = 1;
4314 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_THIRD_WIDTH_NUMBERS: hb_aat_layout_feature_selector_t = 2;
4315 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_QUARTER_WIDTH_NUMBERS: hb_aat_layout_feature_selector_t =
4316     3;
4317 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_WORD_INITIAL_SWASHES_ON: hb_aat_layout_feature_selector_t =
4318     0;
4319 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_WORD_INITIAL_SWASHES_OFF:
4320     hb_aat_layout_feature_selector_t = 1;
4321 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_WORD_FINAL_SWASHES_ON: hb_aat_layout_feature_selector_t =
4322     2;
4323 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_WORD_FINAL_SWASHES_OFF: hb_aat_layout_feature_selector_t =
4324     3;
4325 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_LINE_INITIAL_SWASHES_ON: hb_aat_layout_feature_selector_t =
4326     4;
4327 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_LINE_INITIAL_SWASHES_OFF:
4328     hb_aat_layout_feature_selector_t = 5;
4329 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_LINE_FINAL_SWASHES_ON: hb_aat_layout_feature_selector_t =
4330     6;
4331 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_LINE_FINAL_SWASHES_OFF: hb_aat_layout_feature_selector_t =
4332     7;
4333 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_NON_FINAL_SWASHES_ON: hb_aat_layout_feature_selector_t = 8;
4334 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_NON_FINAL_SWASHES_OFF: hb_aat_layout_feature_selector_t =
4335     9;
4336 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_SHOW_DIACRITICS: hb_aat_layout_feature_selector_t = 0;
4337 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_HIDE_DIACRITICS: hb_aat_layout_feature_selector_t = 1;
4338 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_DECOMPOSE_DIACRITICS: hb_aat_layout_feature_selector_t = 2;
4339 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_NORMAL_POSITION: hb_aat_layout_feature_selector_t = 0;
4340 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_SUPERIORS: hb_aat_layout_feature_selector_t = 1;
4341 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_INFERIORS: hb_aat_layout_feature_selector_t = 2;
4342 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_ORDINALS: hb_aat_layout_feature_selector_t = 3;
4343 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_SCIENTIFIC_INFERIORS: hb_aat_layout_feature_selector_t = 4;
4344 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_FRACTIONS: hb_aat_layout_feature_selector_t = 0;
4345 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_VERTICAL_FRACTIONS: hb_aat_layout_feature_selector_t = 1;
4346 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_DIAGONAL_FRACTIONS: hb_aat_layout_feature_selector_t = 2;
4347 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_PREVENT_OVERLAP_ON: hb_aat_layout_feature_selector_t = 0;
4348 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_PREVENT_OVERLAP_OFF: hb_aat_layout_feature_selector_t = 1;
4349 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_HYPHENS_TO_EM_DASH_ON: hb_aat_layout_feature_selector_t =
4350     0;
4351 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_HYPHENS_TO_EM_DASH_OFF: hb_aat_layout_feature_selector_t =
4352     1;
4353 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_HYPHEN_TO_EN_DASH_ON: hb_aat_layout_feature_selector_t = 2;
4354 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_HYPHEN_TO_EN_DASH_OFF: hb_aat_layout_feature_selector_t =
4355     3;
4356 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_SLASHED_ZERO_ON: hb_aat_layout_feature_selector_t = 4;
4357 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_SLASHED_ZERO_OFF: hb_aat_layout_feature_selector_t = 5;
4358 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_FORM_INTERROBANG_ON: hb_aat_layout_feature_selector_t = 6;
4359 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_FORM_INTERROBANG_OFF: hb_aat_layout_feature_selector_t = 7;
4360 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_SMART_QUOTES_ON: hb_aat_layout_feature_selector_t = 8;
4361 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_SMART_QUOTES_OFF: hb_aat_layout_feature_selector_t = 9;
4362 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_PERIODS_TO_ELLIPSIS_ON: hb_aat_layout_feature_selector_t =
4363     10;
4364 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_PERIODS_TO_ELLIPSIS_OFF: hb_aat_layout_feature_selector_t =
4365     11;
4366 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_HYPHEN_TO_MINUS_ON: hb_aat_layout_feature_selector_t = 0;
4367 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_HYPHEN_TO_MINUS_OFF: hb_aat_layout_feature_selector_t = 1;
4368 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_ASTERISK_TO_MULTIPLY_ON: hb_aat_layout_feature_selector_t =
4369     2;
4370 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_ASTERISK_TO_MULTIPLY_OFF:
4371     hb_aat_layout_feature_selector_t = 3;
4372 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_SLASH_TO_DIVIDE_ON: hb_aat_layout_feature_selector_t = 4;
4373 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_SLASH_TO_DIVIDE_OFF: hb_aat_layout_feature_selector_t = 5;
4374 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_INEQUALITY_LIGATURES_ON: hb_aat_layout_feature_selector_t =
4375     6;
4376 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_INEQUALITY_LIGATURES_OFF:
4377     hb_aat_layout_feature_selector_t = 7;
4378 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_EXPONENTS_ON: hb_aat_layout_feature_selector_t = 8;
4379 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_EXPONENTS_OFF: hb_aat_layout_feature_selector_t = 9;
4380 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_MATHEMATICAL_GREEK_ON: hb_aat_layout_feature_selector_t =
4381     10;
4382 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_MATHEMATICAL_GREEK_OFF: hb_aat_layout_feature_selector_t =
4383     11;
4384 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_ORNAMENTS: hb_aat_layout_feature_selector_t = 0;
4385 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_DINGBATS: hb_aat_layout_feature_selector_t = 1;
4386 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_PI_CHARACTERS: hb_aat_layout_feature_selector_t = 2;
4387 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_FLEURONS: hb_aat_layout_feature_selector_t = 3;
4388 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_DECORATIVE_BORDERS: hb_aat_layout_feature_selector_t = 4;
4389 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_INTERNATIONAL_SYMBOLS: hb_aat_layout_feature_selector_t =
4390     5;
4391 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_MATH_SYMBOLS: hb_aat_layout_feature_selector_t = 6;
4392 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_ALTERNATES: hb_aat_layout_feature_selector_t = 0;
4393 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_DESIGN_LEVEL1: hb_aat_layout_feature_selector_t = 0;
4394 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_DESIGN_LEVEL2: hb_aat_layout_feature_selector_t = 1;
4395 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_DESIGN_LEVEL3: hb_aat_layout_feature_selector_t = 2;
4396 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_DESIGN_LEVEL4: hb_aat_layout_feature_selector_t = 3;
4397 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_DESIGN_LEVEL5: hb_aat_layout_feature_selector_t = 4;
4398 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_STYLE_OPTIONS: hb_aat_layout_feature_selector_t = 0;
4399 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_DISPLAY_TEXT: hb_aat_layout_feature_selector_t = 1;
4400 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_ENGRAVED_TEXT: hb_aat_layout_feature_selector_t = 2;
4401 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_ILLUMINATED_CAPS: hb_aat_layout_feature_selector_t = 3;
4402 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_TITLING_CAPS: hb_aat_layout_feature_selector_t = 4;
4403 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_TALL_CAPS: hb_aat_layout_feature_selector_t = 5;
4404 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_TRADITIONAL_CHARACTERS: hb_aat_layout_feature_selector_t =
4405     0;
4406 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_SIMPLIFIED_CHARACTERS: hb_aat_layout_feature_selector_t =
4407     1;
4408 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_JIS1978_CHARACTERS: hb_aat_layout_feature_selector_t = 2;
4409 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_JIS1983_CHARACTERS: hb_aat_layout_feature_selector_t = 3;
4410 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_JIS1990_CHARACTERS: hb_aat_layout_feature_selector_t = 4;
4411 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_TRADITIONAL_ALT_ONE: hb_aat_layout_feature_selector_t = 5;
4412 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_TRADITIONAL_ALT_TWO: hb_aat_layout_feature_selector_t = 6;
4413 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_TRADITIONAL_ALT_THREE: hb_aat_layout_feature_selector_t =
4414     7;
4415 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_TRADITIONAL_ALT_FOUR: hb_aat_layout_feature_selector_t = 8;
4416 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_TRADITIONAL_ALT_FIVE: hb_aat_layout_feature_selector_t = 9;
4417 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_EXPERT_CHARACTERS: hb_aat_layout_feature_selector_t = 10;
4418 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_JIS2004_CHARACTERS: hb_aat_layout_feature_selector_t = 11;
4419 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_HOJO_CHARACTERS: hb_aat_layout_feature_selector_t = 12;
4420 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_NLCCHARACTERS: hb_aat_layout_feature_selector_t = 13;
4421 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_TRADITIONAL_NAMES_CHARACTERS:
4422     hb_aat_layout_feature_selector_t = 14;
4423 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_LOWER_CASE_NUMBERS: hb_aat_layout_feature_selector_t = 0;
4424 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_UPPER_CASE_NUMBERS: hb_aat_layout_feature_selector_t = 1;
4425 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_PROPORTIONAL_TEXT: hb_aat_layout_feature_selector_t = 0;
4426 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_MONOSPACED_TEXT: hb_aat_layout_feature_selector_t = 1;
4427 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_HALF_WIDTH_TEXT: hb_aat_layout_feature_selector_t = 2;
4428 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_THIRD_WIDTH_TEXT: hb_aat_layout_feature_selector_t = 3;
4429 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_QUARTER_WIDTH_TEXT: hb_aat_layout_feature_selector_t = 4;
4430 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_ALT_PROPORTIONAL_TEXT: hb_aat_layout_feature_selector_t =
4431     5;
4432 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_ALT_HALF_WIDTH_TEXT: hb_aat_layout_feature_selector_t = 6;
4433 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_TRANSLITERATION: hb_aat_layout_feature_selector_t = 0;
4434 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_HANJA_TO_HANGUL: hb_aat_layout_feature_selector_t = 1;
4435 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_HIRAGANA_TO_KATAKANA: hb_aat_layout_feature_selector_t = 2;
4436 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_KATAKANA_TO_HIRAGANA: hb_aat_layout_feature_selector_t = 3;
4437 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_KANA_TO_ROMANIZATION: hb_aat_layout_feature_selector_t = 4;
4438 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_ROMANIZATION_TO_HIRAGANA:
4439     hb_aat_layout_feature_selector_t = 5;
4440 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_ROMANIZATION_TO_KATAKANA:
4441     hb_aat_layout_feature_selector_t = 6;
4442 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_HANJA_TO_HANGUL_ALT_ONE: hb_aat_layout_feature_selector_t =
4443     7;
4444 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_HANJA_TO_HANGUL_ALT_TWO: hb_aat_layout_feature_selector_t =
4445     8;
4446 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_HANJA_TO_HANGUL_ALT_THREE:
4447     hb_aat_layout_feature_selector_t = 9;
4448 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_ANNOTATION: hb_aat_layout_feature_selector_t = 0;
4449 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_BOX_ANNOTATION: hb_aat_layout_feature_selector_t = 1;
4450 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_ROUNDED_BOX_ANNOTATION: hb_aat_layout_feature_selector_t =
4451     2;
4452 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_CIRCLE_ANNOTATION: hb_aat_layout_feature_selector_t = 3;
4453 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_INVERTED_CIRCLE_ANNOTATION:
4454     hb_aat_layout_feature_selector_t = 4;
4455 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_PARENTHESIS_ANNOTATION: hb_aat_layout_feature_selector_t =
4456     5;
4457 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_PERIOD_ANNOTATION: hb_aat_layout_feature_selector_t = 6;
4458 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_ROMAN_NUMERAL_ANNOTATION:
4459     hb_aat_layout_feature_selector_t = 7;
4460 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_DIAMOND_ANNOTATION: hb_aat_layout_feature_selector_t = 8;
4461 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_INVERTED_BOX_ANNOTATION: hb_aat_layout_feature_selector_t =
4462     9;
4463 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_INVERTED_ROUNDED_BOX_ANNOTATION:
4464     hb_aat_layout_feature_selector_t = 10;
4465 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_FULL_WIDTH_KANA: hb_aat_layout_feature_selector_t = 0;
4466 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_PROPORTIONAL_KANA: hb_aat_layout_feature_selector_t = 1;
4467 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_FULL_WIDTH_IDEOGRAPHS: hb_aat_layout_feature_selector_t =
4468     0;
4469 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_PROPORTIONAL_IDEOGRAPHS: hb_aat_layout_feature_selector_t =
4470     1;
4471 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_HALF_WIDTH_IDEOGRAPHS: hb_aat_layout_feature_selector_t =
4472     2;
4473 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_CANONICAL_COMPOSITION_ON:
4474     hb_aat_layout_feature_selector_t = 0;
4475 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_CANONICAL_COMPOSITION_OFF:
4476     hb_aat_layout_feature_selector_t = 1;
4477 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_COMPATIBILITY_COMPOSITION_ON:
4478     hb_aat_layout_feature_selector_t = 2;
4479 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_COMPATIBILITY_COMPOSITION_OFF:
4480     hb_aat_layout_feature_selector_t = 3;
4481 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_TRANSCODING_COMPOSITION_ON:
4482     hb_aat_layout_feature_selector_t = 4;
4483 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_TRANSCODING_COMPOSITION_OFF:
4484     hb_aat_layout_feature_selector_t = 5;
4485 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_RUBY_KANA: hb_aat_layout_feature_selector_t = 0;
4486 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_RUBY_KANA: hb_aat_layout_feature_selector_t = 1;
4487 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_RUBY_KANA_ON: hb_aat_layout_feature_selector_t = 2;
4488 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_RUBY_KANA_OFF: hb_aat_layout_feature_selector_t = 3;
4489 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_CJK_SYMBOL_ALTERNATIVES:
4490     hb_aat_layout_feature_selector_t = 0;
4491 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_SYMBOL_ALT_ONE: hb_aat_layout_feature_selector_t = 1;
4492 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_SYMBOL_ALT_TWO: hb_aat_layout_feature_selector_t = 2;
4493 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_SYMBOL_ALT_THREE: hb_aat_layout_feature_selector_t = 3;
4494 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_SYMBOL_ALT_FOUR: hb_aat_layout_feature_selector_t = 4;
4495 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_SYMBOL_ALT_FIVE: hb_aat_layout_feature_selector_t = 5;
4496 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_IDEOGRAPHIC_ALTERNATIVES:
4497     hb_aat_layout_feature_selector_t = 0;
4498 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_IDEOGRAPHIC_ALT_ONE: hb_aat_layout_feature_selector_t = 1;
4499 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_IDEOGRAPHIC_ALT_TWO: hb_aat_layout_feature_selector_t = 2;
4500 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_IDEOGRAPHIC_ALT_THREE: hb_aat_layout_feature_selector_t =
4501     3;
4502 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_IDEOGRAPHIC_ALT_FOUR: hb_aat_layout_feature_selector_t = 4;
4503 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_IDEOGRAPHIC_ALT_FIVE: hb_aat_layout_feature_selector_t = 5;
4504 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_VERTICAL_ROMAN_CENTERED:
4505     hb_aat_layout_feature_selector_t = 0;
4506 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_VERTICAL_ROMAN_HBASELINE:
4507     hb_aat_layout_feature_selector_t = 1;
4508 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_CJK_ITALIC_ROMAN: hb_aat_layout_feature_selector_t = 0;
4509 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_ITALIC_ROMAN: hb_aat_layout_feature_selector_t = 1;
4510 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_ITALIC_ROMAN_ON: hb_aat_layout_feature_selector_t = 2;
4511 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_ITALIC_ROMAN_OFF: hb_aat_layout_feature_selector_t = 3;
4512 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_CASE_SENSITIVE_LAYOUT_ON:
4513     hb_aat_layout_feature_selector_t = 0;
4514 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_CASE_SENSITIVE_LAYOUT_OFF:
4515     hb_aat_layout_feature_selector_t = 1;
4516 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_CASE_SENSITIVE_SPACING_ON:
4517     hb_aat_layout_feature_selector_t = 2;
4518 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_CASE_SENSITIVE_SPACING_OFF:
4519     hb_aat_layout_feature_selector_t = 3;
4520 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_ALTERNATE_HORIZ_KANA_ON: hb_aat_layout_feature_selector_t =
4521     0;
4522 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_ALTERNATE_HORIZ_KANA_OFF:
4523     hb_aat_layout_feature_selector_t = 1;
4524 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_ALTERNATE_VERT_KANA_ON: hb_aat_layout_feature_selector_t =
4525     2;
4526 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_ALTERNATE_VERT_KANA_OFF: hb_aat_layout_feature_selector_t =
4527     3;
4528 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_STYLISTIC_ALTERNATES: hb_aat_layout_feature_selector_t =
4529     0;
4530 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_ONE_ON: hb_aat_layout_feature_selector_t = 2;
4531 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_ONE_OFF: hb_aat_layout_feature_selector_t =
4532     3;
4533 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TWO_ON: hb_aat_layout_feature_selector_t = 4;
4534 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TWO_OFF: hb_aat_layout_feature_selector_t =
4535     5;
4536 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_THREE_ON: hb_aat_layout_feature_selector_t =
4537     6;
4538 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_THREE_OFF: hb_aat_layout_feature_selector_t =
4539     7;
4540 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FOUR_ON: hb_aat_layout_feature_selector_t =
4541     8;
4542 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FOUR_OFF: hb_aat_layout_feature_selector_t =
4543     9;
4544 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FIVE_ON: hb_aat_layout_feature_selector_t =
4545     10;
4546 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FIVE_OFF: hb_aat_layout_feature_selector_t =
4547     11;
4548 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SIX_ON: hb_aat_layout_feature_selector_t =
4549     12;
4550 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SIX_OFF: hb_aat_layout_feature_selector_t =
4551     13;
4552 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SEVEN_ON: hb_aat_layout_feature_selector_t =
4553     14;
4554 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SEVEN_OFF: hb_aat_layout_feature_selector_t =
4555     15;
4556 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_EIGHT_ON: hb_aat_layout_feature_selector_t =
4557     16;
4558 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_EIGHT_OFF: hb_aat_layout_feature_selector_t =
4559     17;
4560 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_NINE_ON: hb_aat_layout_feature_selector_t =
4561     18;
4562 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_NINE_OFF: hb_aat_layout_feature_selector_t =
4563     19;
4564 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TEN_ON: hb_aat_layout_feature_selector_t =
4565     20;
4566 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TEN_OFF: hb_aat_layout_feature_selector_t =
4567     21;
4568 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_ELEVEN_ON: hb_aat_layout_feature_selector_t =
4569     22;
4570 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_ELEVEN_OFF:
4571     hb_aat_layout_feature_selector_t = 23;
4572 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TWELVE_ON: hb_aat_layout_feature_selector_t =
4573     24;
4574 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TWELVE_OFF:
4575     hb_aat_layout_feature_selector_t = 25;
4576 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_THIRTEEN_ON:
4577     hb_aat_layout_feature_selector_t = 26;
4578 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_THIRTEEN_OFF:
4579     hb_aat_layout_feature_selector_t = 27;
4580 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FOURTEEN_ON:
4581     hb_aat_layout_feature_selector_t = 28;
4582 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FOURTEEN_OFF:
4583     hb_aat_layout_feature_selector_t = 29;
4584 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FIFTEEN_ON:
4585     hb_aat_layout_feature_selector_t = 30;
4586 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FIFTEEN_OFF:
4587     hb_aat_layout_feature_selector_t = 31;
4588 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SIXTEEN_ON:
4589     hb_aat_layout_feature_selector_t = 32;
4590 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SIXTEEN_OFF:
4591     hb_aat_layout_feature_selector_t = 33;
4592 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SEVENTEEN_ON:
4593     hb_aat_layout_feature_selector_t = 34;
4594 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SEVENTEEN_OFF:
4595     hb_aat_layout_feature_selector_t = 35;
4596 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_EIGHTEEN_ON:
4597     hb_aat_layout_feature_selector_t = 36;
4598 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_EIGHTEEN_OFF:
4599     hb_aat_layout_feature_selector_t = 37;
4600 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_NINETEEN_ON:
4601     hb_aat_layout_feature_selector_t = 38;
4602 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_NINETEEN_OFF:
4603     hb_aat_layout_feature_selector_t = 39;
4604 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TWENTY_ON: hb_aat_layout_feature_selector_t =
4605     40;
4606 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TWENTY_OFF:
4607     hb_aat_layout_feature_selector_t = 41;
4608 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_CONTEXTUAL_ALTERNATES_ON:
4609     hb_aat_layout_feature_selector_t = 0;
4610 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_CONTEXTUAL_ALTERNATES_OFF:
4611     hb_aat_layout_feature_selector_t = 1;
4612 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_SWASH_ALTERNATES_ON: hb_aat_layout_feature_selector_t = 2;
4613 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_SWASH_ALTERNATES_OFF: hb_aat_layout_feature_selector_t = 3;
4614 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_CONTEXTUAL_SWASH_ALTERNATES_ON:
4615     hb_aat_layout_feature_selector_t = 4;
4616 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_CONTEXTUAL_SWASH_ALTERNATES_OFF:
4617     hb_aat_layout_feature_selector_t = 5;
4618 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_DEFAULT_LOWER_CASE: hb_aat_layout_feature_selector_t = 0;
4619 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_LOWER_CASE_SMALL_CAPS: hb_aat_layout_feature_selector_t =
4620     1;
4621 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_LOWER_CASE_PETITE_CAPS: hb_aat_layout_feature_selector_t =
4622     2;
4623 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_DEFAULT_UPPER_CASE: hb_aat_layout_feature_selector_t = 0;
4624 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_UPPER_CASE_SMALL_CAPS: hb_aat_layout_feature_selector_t =
4625     1;
4626 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_UPPER_CASE_PETITE_CAPS: hb_aat_layout_feature_selector_t =
4627     2;
4628 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_HALF_WIDTH_CJK_ROMAN: hb_aat_layout_feature_selector_t = 0;
4629 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_PROPORTIONAL_CJK_ROMAN: hb_aat_layout_feature_selector_t =
4630     1;
4631 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_DEFAULT_CJK_ROMAN: hb_aat_layout_feature_selector_t = 2;
4632 pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_FULL_WIDTH_CJK_ROMAN: hb_aat_layout_feature_selector_t = 3;
4633 pub const _HB_AAT_LAYOUT_FEATURE_SELECTOR_MAX_VALUE: hb_aat_layout_feature_selector_t = 2147483647;
4634 /// hb_aat_layout_feature_selector_t:
4635 ///
4636 ///
4637 /// Since: 2.2.0
4638 pub type hb_aat_layout_feature_selector_t = u32;
4639 extern "C" {
hb_aat_layout_get_feature_types( face: *mut hb_face_t, start_offset: ::std::os::raw::c_uint, feature_count: *mut ::std::os::raw::c_uint, features: *mut hb_aat_layout_feature_type_t, ) -> ::std::os::raw::c_uint4640     pub fn hb_aat_layout_get_feature_types(
4641         face: *mut hb_face_t,
4642         start_offset: ::std::os::raw::c_uint,
4643         feature_count: *mut ::std::os::raw::c_uint,
4644         features: *mut hb_aat_layout_feature_type_t,
4645     ) -> ::std::os::raw::c_uint;
4646 }
4647 extern "C" {
hb_aat_layout_feature_type_get_name_id( face: *mut hb_face_t, feature_type: hb_aat_layout_feature_type_t, ) -> hb_ot_name_id_t4648     pub fn hb_aat_layout_feature_type_get_name_id(
4649         face: *mut hb_face_t,
4650         feature_type: hb_aat_layout_feature_type_t,
4651     ) -> hb_ot_name_id_t;
4652 }
4653 #[repr(C)]
4654 #[derive(Debug, Copy, Clone)]
4655 pub struct hb_aat_layout_feature_selector_info_t {
4656     pub name_id: hb_ot_name_id_t,
4657     pub enable: hb_aat_layout_feature_selector_t,
4658     pub disable: hb_aat_layout_feature_selector_t,
4659     pub reserved: ::std::os::raw::c_uint,
4660 }
4661 #[test]
bindgen_test_layout_hb_aat_layout_feature_selector_info_t()4662 fn bindgen_test_layout_hb_aat_layout_feature_selector_info_t() {
4663     assert_eq!(
4664         ::std::mem::size_of::<hb_aat_layout_feature_selector_info_t>(),
4665         16usize,
4666         concat!(
4667             "Size of: ",
4668             stringify!(hb_aat_layout_feature_selector_info_t)
4669         )
4670     );
4671     assert_eq!(
4672         ::std::mem::align_of::<hb_aat_layout_feature_selector_info_t>(),
4673         4usize,
4674         concat!(
4675             "Alignment of ",
4676             stringify!(hb_aat_layout_feature_selector_info_t)
4677         )
4678     );
4679     assert_eq!(
4680         unsafe {
4681             &(*(::std::ptr::null::<hb_aat_layout_feature_selector_info_t>())).name_id as *const _
4682                 as usize
4683         },
4684         0usize,
4685         concat!(
4686             "Offset of field: ",
4687             stringify!(hb_aat_layout_feature_selector_info_t),
4688             "::",
4689             stringify!(name_id)
4690         )
4691     );
4692     assert_eq!(
4693         unsafe {
4694             &(*(::std::ptr::null::<hb_aat_layout_feature_selector_info_t>())).enable as *const _
4695                 as usize
4696         },
4697         4usize,
4698         concat!(
4699             "Offset of field: ",
4700             stringify!(hb_aat_layout_feature_selector_info_t),
4701             "::",
4702             stringify!(enable)
4703         )
4704     );
4705     assert_eq!(
4706         unsafe {
4707             &(*(::std::ptr::null::<hb_aat_layout_feature_selector_info_t>())).disable as *const _
4708                 as usize
4709         },
4710         8usize,
4711         concat!(
4712             "Offset of field: ",
4713             stringify!(hb_aat_layout_feature_selector_info_t),
4714             "::",
4715             stringify!(disable)
4716         )
4717     );
4718     assert_eq!(
4719         unsafe {
4720             &(*(::std::ptr::null::<hb_aat_layout_feature_selector_info_t>())).reserved as *const _
4721                 as usize
4722         },
4723         12usize,
4724         concat!(
4725             "Offset of field: ",
4726             stringify!(hb_aat_layout_feature_selector_info_t),
4727             "::",
4728             stringify!(reserved)
4729         )
4730     );
4731 }
4732 extern "C" {
hb_aat_layout_feature_type_get_selector_infos( face: *mut hb_face_t, feature_type: hb_aat_layout_feature_type_t, start_offset: ::std::os::raw::c_uint, selector_count: *mut ::std::os::raw::c_uint, selectors: *mut hb_aat_layout_feature_selector_info_t, default_index: *mut ::std::os::raw::c_uint, ) -> ::std::os::raw::c_uint4733     pub fn hb_aat_layout_feature_type_get_selector_infos(
4734         face: *mut hb_face_t,
4735         feature_type: hb_aat_layout_feature_type_t,
4736         start_offset: ::std::os::raw::c_uint,
4737         selector_count: *mut ::std::os::raw::c_uint,
4738         selectors: *mut hb_aat_layout_feature_selector_info_t,
4739         default_index: *mut ::std::os::raw::c_uint,
4740     ) -> ::std::os::raw::c_uint;
4741 }
4742 extern "C" {
hb_aat_layout_has_substitution(face: *mut hb_face_t) -> hb_bool_t4743     pub fn hb_aat_layout_has_substitution(face: *mut hb_face_t) -> hb_bool_t;
4744 }
4745 extern "C" {
hb_aat_layout_has_positioning(face: *mut hb_face_t) -> hb_bool_t4746     pub fn hb_aat_layout_has_positioning(face: *mut hb_face_t) -> hb_bool_t;
4747 }
4748 extern "C" {
hb_aat_layout_has_tracking(face: *mut hb_face_t) -> hb_bool_t4749     pub fn hb_aat_layout_has_tracking(face: *mut hb_face_t) -> hb_bool_t;
4750 }
4751