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