1#[doc = " hb_bool_t:\n\n Data type for booleans.\n"]
4pub type hb_bool_t = ::std::os::raw::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: ::std::mem::MaybeUninit<_hb_var_int_t> = ::std::mem::MaybeUninit::uninit();
24 let ptr = UNINIT.as_ptr();
25 assert_eq!(
26 ::std::mem::size_of::<_hb_var_int_t>(),
27 4usize,
28 concat!("Size of: ", stringify!(_hb_var_int_t))
29 );
30 assert_eq!(
31 ::std::mem::align_of::<_hb_var_int_t>(),
32 4usize,
33 concat!("Alignment of ", stringify!(_hb_var_int_t))
34 );
35 assert_eq!(
36 unsafe { ::std::ptr::addr_of!((*ptr).u32_) as usize - ptr as usize },
37 0usize,
38 concat!("Offset of field: ", stringify!(_hb_var_int_t), "::", stringify!(u32_))
39 );
40 assert_eq!(
41 unsafe { ::std::ptr::addr_of!((*ptr).i32_) as usize - ptr as usize },
42 0usize,
43 concat!("Offset of field: ", stringify!(_hb_var_int_t), "::", stringify!(i32_))
44 );
45 assert_eq!(
46 unsafe { ::std::ptr::addr_of!((*ptr).u16_) as usize - ptr as usize },
47 0usize,
48 concat!("Offset of field: ", stringify!(_hb_var_int_t), "::", stringify!(u16_))
49 );
50 assert_eq!(
51 unsafe { ::std::ptr::addr_of!((*ptr).i16_) as usize - ptr as usize },
52 0usize,
53 concat!("Offset of field: ", stringify!(_hb_var_int_t), "::", stringify!(i16_))
54 );
55 assert_eq!(
56 unsafe { ::std::ptr::addr_of!((*ptr).u8_) as usize - ptr as usize },
57 0usize,
58 concat!("Offset of field: ", stringify!(_hb_var_int_t), "::", stringify!(u8_))
59 );
60 assert_eq!(
61 unsafe { ::std::ptr::addr_of!((*ptr).i8_) as usize - ptr as usize },
62 0usize,
63 concat!("Offset of field: ", stringify!(_hb_var_int_t), "::", stringify!(i8_))
64 );
65}
66pub type hb_var_int_t = _hb_var_int_t;
67#[repr(C)]
68#[derive(Copy, Clone)]
69pub union _hb_var_num_t {
70 pub f: f32,
71 pub u32_: u32,
72 pub i32_: i32,
73 pub u16_: [u16; 2usize],
74 pub i16_: [i16; 2usize],
75 pub u8_: [u8; 4usize],
76 pub i8_: [i8; 4usize],
77}
78#[test]
79fn bindgen_test_layout__hb_var_num_t() {
80 const UNINIT: ::std::mem::MaybeUninit<_hb_var_num_t> = ::std::mem::MaybeUninit::uninit();
81 let ptr = UNINIT.as_ptr();
82 assert_eq!(
83 ::std::mem::size_of::<_hb_var_num_t>(),
84 4usize,
85 concat!("Size of: ", stringify!(_hb_var_num_t))
86 );
87 assert_eq!(
88 ::std::mem::align_of::<_hb_var_num_t>(),
89 4usize,
90 concat!("Alignment of ", stringify!(_hb_var_num_t))
91 );
92 assert_eq!(
93 unsafe { ::std::ptr::addr_of!((*ptr).f) as usize - ptr as usize },
94 0usize,
95 concat!("Offset of field: ", stringify!(_hb_var_num_t), "::", stringify!(f))
96 );
97 assert_eq!(
98 unsafe { ::std::ptr::addr_of!((*ptr).u32_) as usize - ptr as usize },
99 0usize,
100 concat!("Offset of field: ", stringify!(_hb_var_num_t), "::", stringify!(u32_))
101 );
102 assert_eq!(
103 unsafe { ::std::ptr::addr_of!((*ptr).i32_) as usize - ptr as usize },
104 0usize,
105 concat!("Offset of field: ", stringify!(_hb_var_num_t), "::", stringify!(i32_))
106 );
107 assert_eq!(
108 unsafe { ::std::ptr::addr_of!((*ptr).u16_) as usize - ptr as usize },
109 0usize,
110 concat!("Offset of field: ", stringify!(_hb_var_num_t), "::", stringify!(u16_))
111 );
112 assert_eq!(
113 unsafe { ::std::ptr::addr_of!((*ptr).i16_) as usize - ptr as usize },
114 0usize,
115 concat!("Offset of field: ", stringify!(_hb_var_num_t), "::", stringify!(i16_))
116 );
117 assert_eq!(
118 unsafe { ::std::ptr::addr_of!((*ptr).u8_) as usize - ptr as usize },
119 0usize,
120 concat!("Offset of field: ", stringify!(_hb_var_num_t), "::", stringify!(u8_))
121 );
122 assert_eq!(
123 unsafe { ::std::ptr::addr_of!((*ptr).i8_) as usize - ptr as usize },
124 0usize,
125 concat!("Offset of field: ", stringify!(_hb_var_num_t), "::", stringify!(i8_))
126 );
127}
128pub type hb_var_num_t = _hb_var_num_t;
129#[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"]
130pub type hb_tag_t = u32;
131extern "C" {
132 pub fn hb_tag_from_string(
133 str_: *const ::std::os::raw::c_char,
134 len: ::std::os::raw::c_int,
135 ) -> hb_tag_t;
136}
137extern "C" {
138 pub fn hb_tag_to_string(tag: hb_tag_t, buf: *mut ::std::os::raw::c_char);
139}
140pub const hb_direction_t_HB_DIRECTION_INVALID: hb_direction_t = 0;
141pub const hb_direction_t_HB_DIRECTION_LTR: hb_direction_t = 4;
142pub const hb_direction_t_HB_DIRECTION_RTL: hb_direction_t = 5;
143pub const hb_direction_t_HB_DIRECTION_TTB: hb_direction_t = 6;
144pub const hb_direction_t_HB_DIRECTION_BTT: hb_direction_t = 7;
145#[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"]
146pub type hb_direction_t = ::std::os::raw::c_uint;
147extern "C" {
148 pub fn hb_direction_from_string(
149 str_: *const ::std::os::raw::c_char,
150 len: ::std::os::raw::c_int,
151 ) -> hb_direction_t;
152}
153extern "C" {
154 pub fn hb_direction_to_string(direction: hb_direction_t) -> *const ::std::os::raw::c_char;
155}
156#[repr(C)]
157#[derive(Debug, Copy, Clone)]
158pub struct hb_language_impl_t {
159 _unused: [u8; 0],
160}
161#[doc = " hb_language_t:\n\n Data type for languages. Each #hb_language_t corresponds to a BCP 47\n language tag.\n"]
162pub type hb_language_t = *const hb_language_impl_t;
163extern "C" {
164 pub fn hb_language_from_string(
165 str_: *const ::std::os::raw::c_char,
166 len: ::std::os::raw::c_int,
167 ) -> hb_language_t;
168}
169extern "C" {
170 pub fn hb_language_to_string(language: hb_language_t) -> *const ::std::os::raw::c_char;
171}
172extern "C" {
173 pub fn hb_language_get_default() -> hb_language_t;
174}
175extern "C" {
176 pub fn hb_language_matches(language: hb_language_t, specific: hb_language_t) -> hb_bool_t;
177}
178pub const hb_script_t_HB_SCRIPT_COMMON: hb_script_t = 1517910393;
179pub const hb_script_t_HB_SCRIPT_INHERITED: hb_script_t = 1516858984;
180pub const hb_script_t_HB_SCRIPT_UNKNOWN: hb_script_t = 1517976186;
181pub const hb_script_t_HB_SCRIPT_ARABIC: hb_script_t = 1098015074;
182pub const hb_script_t_HB_SCRIPT_ARMENIAN: hb_script_t = 1098018158;
183pub const hb_script_t_HB_SCRIPT_BENGALI: hb_script_t = 1113943655;
184pub const hb_script_t_HB_SCRIPT_CYRILLIC: hb_script_t = 1132032620;
185pub const hb_script_t_HB_SCRIPT_DEVANAGARI: hb_script_t = 1147500129;
186pub const hb_script_t_HB_SCRIPT_GEORGIAN: hb_script_t = 1197830002;
187pub const hb_script_t_HB_SCRIPT_GREEK: hb_script_t = 1198679403;
188pub const hb_script_t_HB_SCRIPT_GUJARATI: hb_script_t = 1198877298;
189pub const hb_script_t_HB_SCRIPT_GURMUKHI: hb_script_t = 1198879349;
190pub const hb_script_t_HB_SCRIPT_HANGUL: hb_script_t = 1214344807;
191pub const hb_script_t_HB_SCRIPT_HAN: hb_script_t = 1214344809;
192pub const hb_script_t_HB_SCRIPT_HEBREW: hb_script_t = 1214603890;
193pub const hb_script_t_HB_SCRIPT_HIRAGANA: hb_script_t = 1214870113;
194pub const hb_script_t_HB_SCRIPT_KANNADA: hb_script_t = 1265525857;
195pub const hb_script_t_HB_SCRIPT_KATAKANA: hb_script_t = 1264676449;
196pub const hb_script_t_HB_SCRIPT_LAO: hb_script_t = 1281453935;
197pub const hb_script_t_HB_SCRIPT_LATIN: hb_script_t = 1281455214;
198pub const hb_script_t_HB_SCRIPT_MALAYALAM: hb_script_t = 1298954605;
199pub const hb_script_t_HB_SCRIPT_ORIYA: hb_script_t = 1332902241;
200pub const hb_script_t_HB_SCRIPT_TAMIL: hb_script_t = 1415671148;
201pub const hb_script_t_HB_SCRIPT_TELUGU: hb_script_t = 1415933045;
202pub const hb_script_t_HB_SCRIPT_THAI: hb_script_t = 1416126825;
203pub const hb_script_t_HB_SCRIPT_TIBETAN: hb_script_t = 1416192628;
204pub const hb_script_t_HB_SCRIPT_BOPOMOFO: hb_script_t = 1114599535;
205pub const hb_script_t_HB_SCRIPT_BRAILLE: hb_script_t = 1114792297;
206pub const hb_script_t_HB_SCRIPT_CANADIAN_SYLLABICS: hb_script_t = 1130458739;
207pub const hb_script_t_HB_SCRIPT_CHEROKEE: hb_script_t = 1130915186;
208pub const hb_script_t_HB_SCRIPT_ETHIOPIC: hb_script_t = 1165256809;
209pub const hb_script_t_HB_SCRIPT_KHMER: hb_script_t = 1265134962;
210pub const hb_script_t_HB_SCRIPT_MONGOLIAN: hb_script_t = 1299148391;
211pub const hb_script_t_HB_SCRIPT_MYANMAR: hb_script_t = 1299803506;
212pub const hb_script_t_HB_SCRIPT_OGHAM: hb_script_t = 1332175213;
213pub const hb_script_t_HB_SCRIPT_RUNIC: hb_script_t = 1383427698;
214pub const hb_script_t_HB_SCRIPT_SINHALA: hb_script_t = 1399418472;
215pub const hb_script_t_HB_SCRIPT_SYRIAC: hb_script_t = 1400468067;
216pub const hb_script_t_HB_SCRIPT_THAANA: hb_script_t = 1416126817;
217pub const hb_script_t_HB_SCRIPT_YI: hb_script_t = 1500080489;
218pub const hb_script_t_HB_SCRIPT_DESERET: hb_script_t = 1148416628;
219pub const hb_script_t_HB_SCRIPT_GOTHIC: hb_script_t = 1198486632;
220pub const hb_script_t_HB_SCRIPT_OLD_ITALIC: hb_script_t = 1232363884;
221pub const hb_script_t_HB_SCRIPT_BUHID: hb_script_t = 1114990692;
222pub const hb_script_t_HB_SCRIPT_HANUNOO: hb_script_t = 1214344815;
223pub const hb_script_t_HB_SCRIPT_TAGALOG: hb_script_t = 1416064103;
224pub const hb_script_t_HB_SCRIPT_TAGBANWA: hb_script_t = 1415669602;
225pub const hb_script_t_HB_SCRIPT_CYPRIOT: hb_script_t = 1131442804;
226pub const hb_script_t_HB_SCRIPT_LIMBU: hb_script_t = 1281977698;
227pub const hb_script_t_HB_SCRIPT_LINEAR_B: hb_script_t = 1281977954;
228pub const hb_script_t_HB_SCRIPT_OSMANYA: hb_script_t = 1332964705;
229pub const hb_script_t_HB_SCRIPT_SHAVIAN: hb_script_t = 1399349623;
230pub const hb_script_t_HB_SCRIPT_TAI_LE: hb_script_t = 1415670885;
231pub const hb_script_t_HB_SCRIPT_UGARITIC: hb_script_t = 1432838514;
232pub const hb_script_t_HB_SCRIPT_BUGINESE: hb_script_t = 1114990441;
233pub const hb_script_t_HB_SCRIPT_COPTIC: hb_script_t = 1131376756;
234pub const hb_script_t_HB_SCRIPT_GLAGOLITIC: hb_script_t = 1198285159;
235pub const hb_script_t_HB_SCRIPT_KHAROSHTHI: hb_script_t = 1265131890;
236pub const hb_script_t_HB_SCRIPT_NEW_TAI_LUE: hb_script_t = 1415670901;
237pub const hb_script_t_HB_SCRIPT_OLD_PERSIAN: hb_script_t = 1483761007;
238pub const hb_script_t_HB_SCRIPT_SYLOTI_NAGRI: hb_script_t = 1400466543;
239pub const hb_script_t_HB_SCRIPT_TIFINAGH: hb_script_t = 1415999079;
240pub const hb_script_t_HB_SCRIPT_BALINESE: hb_script_t = 1113681001;
241pub const hb_script_t_HB_SCRIPT_CUNEIFORM: hb_script_t = 1483961720;
242pub const hb_script_t_HB_SCRIPT_NKO: hb_script_t = 1315663727;
243pub const hb_script_t_HB_SCRIPT_PHAGS_PA: hb_script_t = 1349017959;
244pub const hb_script_t_HB_SCRIPT_PHOENICIAN: hb_script_t = 1349021304;
245pub const hb_script_t_HB_SCRIPT_CARIAN: hb_script_t = 1130459753;
246pub const hb_script_t_HB_SCRIPT_CHAM: hb_script_t = 1130914157;
247pub const hb_script_t_HB_SCRIPT_KAYAH_LI: hb_script_t = 1264675945;
248pub const hb_script_t_HB_SCRIPT_LEPCHA: hb_script_t = 1281716323;
249pub const hb_script_t_HB_SCRIPT_LYCIAN: hb_script_t = 1283023721;
250pub const hb_script_t_HB_SCRIPT_LYDIAN: hb_script_t = 1283023977;
251pub const hb_script_t_HB_SCRIPT_OL_CHIKI: hb_script_t = 1332503403;
252pub const hb_script_t_HB_SCRIPT_REJANG: hb_script_t = 1382706791;
253pub const hb_script_t_HB_SCRIPT_SAURASHTRA: hb_script_t = 1398895986;
254pub const hb_script_t_HB_SCRIPT_SUNDANESE: hb_script_t = 1400204900;
255pub const hb_script_t_HB_SCRIPT_VAI: hb_script_t = 1449224553;
256pub const hb_script_t_HB_SCRIPT_AVESTAN: hb_script_t = 1098281844;
257pub const hb_script_t_HB_SCRIPT_BAMUM: hb_script_t = 1113681269;
258pub const hb_script_t_HB_SCRIPT_EGYPTIAN_HIEROGLYPHS: hb_script_t = 1164409200;
259pub const hb_script_t_HB_SCRIPT_IMPERIAL_ARAMAIC: hb_script_t = 1098018153;
260pub const hb_script_t_HB_SCRIPT_INSCRIPTIONAL_PAHLAVI: hb_script_t = 1349020777;
261pub const hb_script_t_HB_SCRIPT_INSCRIPTIONAL_PARTHIAN: hb_script_t = 1349678185;
262pub const hb_script_t_HB_SCRIPT_JAVANESE: hb_script_t = 1247901281;
263pub const hb_script_t_HB_SCRIPT_KAITHI: hb_script_t = 1265920105;
264pub const hb_script_t_HB_SCRIPT_LISU: hb_script_t = 1281979253;
265pub const hb_script_t_HB_SCRIPT_MEETEI_MAYEK: hb_script_t = 1299473769;
266pub const hb_script_t_HB_SCRIPT_OLD_SOUTH_ARABIAN: hb_script_t = 1398895202;
267pub const hb_script_t_HB_SCRIPT_OLD_TURKIC: hb_script_t = 1332898664;
268pub const hb_script_t_HB_SCRIPT_SAMARITAN: hb_script_t = 1398893938;
269pub const hb_script_t_HB_SCRIPT_TAI_THAM: hb_script_t = 1281453665;
270pub const hb_script_t_HB_SCRIPT_TAI_VIET: hb_script_t = 1415673460;
271pub const hb_script_t_HB_SCRIPT_BATAK: hb_script_t = 1113683051;
272pub const hb_script_t_HB_SCRIPT_BRAHMI: hb_script_t = 1114792296;
273pub const hb_script_t_HB_SCRIPT_MANDAIC: hb_script_t = 1298230884;
274pub const hb_script_t_HB_SCRIPT_CHAKMA: hb_script_t = 1130457965;
275pub const hb_script_t_HB_SCRIPT_MEROITIC_CURSIVE: hb_script_t = 1298494051;
276pub const hb_script_t_HB_SCRIPT_MEROITIC_HIEROGLYPHS: hb_script_t = 1298494063;
277pub const hb_script_t_HB_SCRIPT_MIAO: hb_script_t = 1349284452;
278pub const hb_script_t_HB_SCRIPT_SHARADA: hb_script_t = 1399353956;
279pub const hb_script_t_HB_SCRIPT_SORA_SOMPENG: hb_script_t = 1399812705;
280pub const hb_script_t_HB_SCRIPT_TAKRI: hb_script_t = 1415670642;
281pub const hb_script_t_HB_SCRIPT_BASSA_VAH: hb_script_t = 1113682803;
282pub const hb_script_t_HB_SCRIPT_CAUCASIAN_ALBANIAN: hb_script_t = 1097295970;
283pub const hb_script_t_HB_SCRIPT_DUPLOYAN: hb_script_t = 1148547180;
284pub const hb_script_t_HB_SCRIPT_ELBASAN: hb_script_t = 1164730977;
285pub const hb_script_t_HB_SCRIPT_GRANTHA: hb_script_t = 1198678382;
286pub const hb_script_t_HB_SCRIPT_KHOJKI: hb_script_t = 1265135466;
287pub const hb_script_t_HB_SCRIPT_KHUDAWADI: hb_script_t = 1399418468;
288pub const hb_script_t_HB_SCRIPT_LINEAR_A: hb_script_t = 1281977953;
289pub const hb_script_t_HB_SCRIPT_MAHAJANI: hb_script_t = 1298229354;
290pub const hb_script_t_HB_SCRIPT_MANICHAEAN: hb_script_t = 1298230889;
291pub const hb_script_t_HB_SCRIPT_MENDE_KIKAKUI: hb_script_t = 1298493028;
292pub const hb_script_t_HB_SCRIPT_MODI: hb_script_t = 1299145833;
293pub const hb_script_t_HB_SCRIPT_MRO: hb_script_t = 1299345263;
294pub const hb_script_t_HB_SCRIPT_NABATAEAN: hb_script_t = 1315070324;
295pub const hb_script_t_HB_SCRIPT_OLD_NORTH_ARABIAN: hb_script_t = 1315009122;
296pub const hb_script_t_HB_SCRIPT_OLD_PERMIC: hb_script_t = 1348825709;
297pub const hb_script_t_HB_SCRIPT_PAHAWH_HMONG: hb_script_t = 1215131239;
298pub const hb_script_t_HB_SCRIPT_PALMYRENE: hb_script_t = 1348562029;
299pub const hb_script_t_HB_SCRIPT_PAU_CIN_HAU: hb_script_t = 1348564323;
300pub const hb_script_t_HB_SCRIPT_PSALTER_PAHLAVI: hb_script_t = 1349020784;
301pub const hb_script_t_HB_SCRIPT_SIDDHAM: hb_script_t = 1399415908;
302pub const hb_script_t_HB_SCRIPT_TIRHUTA: hb_script_t = 1416196712;
303pub const hb_script_t_HB_SCRIPT_WARANG_CITI: hb_script_t = 1466004065;
304pub const hb_script_t_HB_SCRIPT_AHOM: hb_script_t = 1097363309;
305pub const hb_script_t_HB_SCRIPT_ANATOLIAN_HIEROGLYPHS: hb_script_t = 1215067511;
306pub const hb_script_t_HB_SCRIPT_HATRAN: hb_script_t = 1214346354;
307pub const hb_script_t_HB_SCRIPT_MULTANI: hb_script_t = 1299541108;
308pub const hb_script_t_HB_SCRIPT_OLD_HUNGARIAN: hb_script_t = 1215655527;
309pub const hb_script_t_HB_SCRIPT_SIGNWRITING: hb_script_t = 1399287415;
310pub const hb_script_t_HB_SCRIPT_ADLAM: hb_script_t = 1097100397;
311pub const hb_script_t_HB_SCRIPT_BHAIKSUKI: hb_script_t = 1114139507;
312pub const hb_script_t_HB_SCRIPT_MARCHEN: hb_script_t = 1298231907;
313pub const hb_script_t_HB_SCRIPT_OSAGE: hb_script_t = 1332963173;
314pub const hb_script_t_HB_SCRIPT_TANGUT: hb_script_t = 1415671399;
315pub const hb_script_t_HB_SCRIPT_NEWA: hb_script_t = 1315272545;
316pub const hb_script_t_HB_SCRIPT_MASARAM_GONDI: hb_script_t = 1198485101;
317pub const hb_script_t_HB_SCRIPT_NUSHU: hb_script_t = 1316186229;
318pub const hb_script_t_HB_SCRIPT_SOYOMBO: hb_script_t = 1399814511;
319pub const hb_script_t_HB_SCRIPT_ZANABAZAR_SQUARE: hb_script_t = 1516334690;
320pub const hb_script_t_HB_SCRIPT_DOGRA: hb_script_t = 1148151666;
321pub const hb_script_t_HB_SCRIPT_GUNJALA_GONDI: hb_script_t = 1198485095;
322pub const hb_script_t_HB_SCRIPT_HANIFI_ROHINGYA: hb_script_t = 1383032935;
323pub const hb_script_t_HB_SCRIPT_MAKASAR: hb_script_t = 1298230113;
324pub const hb_script_t_HB_SCRIPT_MEDEFAIDRIN: hb_script_t = 1298490470;
325pub const hb_script_t_HB_SCRIPT_OLD_SOGDIAN: hb_script_t = 1399809903;
326pub const hb_script_t_HB_SCRIPT_SOGDIAN: hb_script_t = 1399809892;
327pub const hb_script_t_HB_SCRIPT_ELYMAIC: hb_script_t = 1164736877;
328pub const hb_script_t_HB_SCRIPT_NANDINAGARI: hb_script_t = 1315008100;
329pub const hb_script_t_HB_SCRIPT_NYIAKENG_PUACHUE_HMONG: hb_script_t = 1215131248;
330pub const hb_script_t_HB_SCRIPT_WANCHO: hb_script_t = 1466132591;
331pub const hb_script_t_HB_SCRIPT_CHORASMIAN: hb_script_t = 1130918515;
332pub const hb_script_t_HB_SCRIPT_DIVES_AKURU: hb_script_t = 1147756907;
333pub const hb_script_t_HB_SCRIPT_KHITAN_SMALL_SCRIPT: hb_script_t = 1265202291;
334pub const hb_script_t_HB_SCRIPT_YEZIDI: hb_script_t = 1499822697;
335pub const hb_script_t_HB_SCRIPT_CYPRO_MINOAN: hb_script_t = 1131441518;
336pub const hb_script_t_HB_SCRIPT_OLD_UYGHUR: hb_script_t = 1333094258;
337pub const hb_script_t_HB_SCRIPT_TANGSA: hb_script_t = 1416524641;
338pub const hb_script_t_HB_SCRIPT_TOTO: hb_script_t = 1416590447;
339pub const hb_script_t_HB_SCRIPT_VITHKUQI: hb_script_t = 1449751656;
340pub const hb_script_t_HB_SCRIPT_MATH: hb_script_t = 1517122664;
341pub const hb_script_t_HB_SCRIPT_KAWI: hb_script_t = 1264678761;
342pub const hb_script_t_HB_SCRIPT_NAG_MUNDARI: hb_script_t = 1315006317;
343pub const hb_script_t_HB_SCRIPT_INVALID: hb_script_t = 0;
344pub const hb_script_t__HB_SCRIPT_MAX_VALUE: hb_script_t = 2147483647;
345pub const hb_script_t__HB_SCRIPT_MAX_VALUE_SIGNED: hb_script_t = 2147483647;
346#[doc = " hb_script_t:\n @HB_SCRIPT_COMMON: `Zyyy`\n @HB_SCRIPT_INHERITED: `Zinh`\n @HB_SCRIPT_UNKNOWN: `Zzzz`\n @HB_SCRIPT_ARABIC: `Arab`\n @HB_SCRIPT_ARMENIAN: `Armn`\n @HB_SCRIPT_BENGALI: `Beng`\n @HB_SCRIPT_CYRILLIC: `Cyrl`\n @HB_SCRIPT_DEVANAGARI: `Deva`\n @HB_SCRIPT_GEORGIAN: `Geor`\n @HB_SCRIPT_GREEK: `Grek`\n @HB_SCRIPT_GUJARATI: `Gujr`\n @HB_SCRIPT_GURMUKHI: `Guru`\n @HB_SCRIPT_HANGUL: `Hang`\n @HB_SCRIPT_HAN: `Hani`\n @HB_SCRIPT_HEBREW: `Hebr`\n @HB_SCRIPT_HIRAGANA: `Hira`\n @HB_SCRIPT_KANNADA: `Knda`\n @HB_SCRIPT_KATAKANA: `Kana`\n @HB_SCRIPT_LAO: `Laoo`\n @HB_SCRIPT_LATIN: `Latn`\n @HB_SCRIPT_MALAYALAM: `Mlym`\n @HB_SCRIPT_ORIYA: `Orya`\n @HB_SCRIPT_TAMIL: `Taml`\n @HB_SCRIPT_TELUGU: `Telu`\n @HB_SCRIPT_THAI: `Thai`\n @HB_SCRIPT_TIBETAN: `Tibt`\n @HB_SCRIPT_BOPOMOFO: `Bopo`\n @HB_SCRIPT_BRAILLE: `Brai`\n @HB_SCRIPT_CANADIAN_SYLLABICS: `Cans`\n @HB_SCRIPT_CHEROKEE: `Cher`\n @HB_SCRIPT_ETHIOPIC: `Ethi`\n @HB_SCRIPT_KHMER: `Khmr`\n @HB_SCRIPT_MONGOLIAN: `Mong`\n @HB_SCRIPT_MYANMAR: `Mymr`\n @HB_SCRIPT_OGHAM: `Ogam`\n @HB_SCRIPT_RUNIC: `Runr`\n @HB_SCRIPT_SINHALA: `Sinh`\n @HB_SCRIPT_SYRIAC: `Syrc`\n @HB_SCRIPT_THAANA: `Thaa`\n @HB_SCRIPT_YI: `Yiii`\n @HB_SCRIPT_DESERET: `Dsrt`\n @HB_SCRIPT_GOTHIC: `Goth`\n @HB_SCRIPT_OLD_ITALIC: `Ital`\n @HB_SCRIPT_BUHID: `Buhd`\n @HB_SCRIPT_HANUNOO: `Hano`\n @HB_SCRIPT_TAGALOG: `Tglg`\n @HB_SCRIPT_TAGBANWA: `Tagb`\n @HB_SCRIPT_CYPRIOT: `Cprt`\n @HB_SCRIPT_LIMBU: `Limb`\n @HB_SCRIPT_LINEAR_B: `Linb`\n @HB_SCRIPT_OSMANYA: `Osma`\n @HB_SCRIPT_SHAVIAN: `Shaw`\n @HB_SCRIPT_TAI_LE: `Tale`\n @HB_SCRIPT_UGARITIC: `Ugar`\n @HB_SCRIPT_BUGINESE: `Bugi`\n @HB_SCRIPT_COPTIC: `Copt`\n @HB_SCRIPT_GLAGOLITIC: `Glag`\n @HB_SCRIPT_KHAROSHTHI: `Khar`\n @HB_SCRIPT_NEW_TAI_LUE: `Talu`\n @HB_SCRIPT_OLD_PERSIAN: `Xpeo`\n @HB_SCRIPT_SYLOTI_NAGRI: `Sylo`\n @HB_SCRIPT_TIFINAGH: `Tfng`\n @HB_SCRIPT_BALINESE: `Bali`\n @HB_SCRIPT_CUNEIFORM: `Xsux`\n @HB_SCRIPT_NKO: `Nkoo`\n @HB_SCRIPT_PHAGS_PA: `Phag`\n @HB_SCRIPT_PHOENICIAN: `Phnx`\n @HB_SCRIPT_CARIAN: `Cari`\n @HB_SCRIPT_CHAM: `Cham`\n @HB_SCRIPT_KAYAH_LI: `Kali`\n @HB_SCRIPT_LEPCHA: `Lepc`\n @HB_SCRIPT_LYCIAN: `Lyci`\n @HB_SCRIPT_LYDIAN: `Lydi`\n @HB_SCRIPT_OL_CHIKI: `Olck`\n @HB_SCRIPT_REJANG: `Rjng`\n @HB_SCRIPT_SAURASHTRA: `Saur`\n @HB_SCRIPT_SUNDANESE: `Sund`\n @HB_SCRIPT_VAI: `Vaii`\n @HB_SCRIPT_AVESTAN: `Avst`\n @HB_SCRIPT_BAMUM: `Bamu`\n @HB_SCRIPT_EGYPTIAN_HIEROGLYPHS: `Egyp`\n @HB_SCRIPT_IMPERIAL_ARAMAIC: `Armi`\n @HB_SCRIPT_INSCRIPTIONAL_PAHLAVI: `Phli`\n @HB_SCRIPT_INSCRIPTIONAL_PARTHIAN: `Prti`\n @HB_SCRIPT_JAVANESE: `Java`\n @HB_SCRIPT_KAITHI: `Kthi`\n @HB_SCRIPT_LISU: `Lisu`\n @HB_SCRIPT_MEETEI_MAYEK: `Mtei`\n @HB_SCRIPT_OLD_SOUTH_ARABIAN: `Sarb`\n @HB_SCRIPT_OLD_TURKIC: `Orkh`\n @HB_SCRIPT_SAMARITAN: `Samr`\n @HB_SCRIPT_TAI_THAM: `Lana`\n @HB_SCRIPT_TAI_VIET: `Tavt`\n @HB_SCRIPT_BATAK: `Batk`\n @HB_SCRIPT_BRAHMI: `Brah`\n @HB_SCRIPT_MANDAIC: `Mand`\n @HB_SCRIPT_CHAKMA: `Cakm`\n @HB_SCRIPT_MEROITIC_CURSIVE: `Merc`\n @HB_SCRIPT_MEROITIC_HIEROGLYPHS: `Mero`\n @HB_SCRIPT_MIAO: `Plrd`\n @HB_SCRIPT_SHARADA: `Shrd`\n @HB_SCRIPT_SORA_SOMPENG: `Sora`\n @HB_SCRIPT_TAKRI: `Takr`\n @HB_SCRIPT_BASSA_VAH: `Bass`, Since: 0.9.30\n @HB_SCRIPT_CAUCASIAN_ALBANIAN: `Aghb`, Since: 0.9.30\n @HB_SCRIPT_DUPLOYAN: `Dupl`, Since: 0.9.30\n @HB_SCRIPT_ELBASAN: `Elba`, Since: 0.9.30\n @HB_SCRIPT_GRANTHA: `Gran`, Since: 0.9.30\n @HB_SCRIPT_KHOJKI: `Khoj`, Since: 0.9.30\n @HB_SCRIPT_KHUDAWADI: `Sind`, Since: 0.9.30\n @HB_SCRIPT_LINEAR_A: `Lina`, Since: 0.9.30\n @HB_SCRIPT_MAHAJANI: `Mahj`, Since: 0.9.30\n @HB_SCRIPT_MANICHAEAN: `Mani`, Since: 0.9.30\n @HB_SCRIPT_MENDE_KIKAKUI: `Mend`, Since: 0.9.30\n @HB_SCRIPT_MODI: `Modi`, Since: 0.9.30\n @HB_SCRIPT_MRO: `Mroo`, Since: 0.9.30\n @HB_SCRIPT_NABATAEAN: `Nbat`, Since: 0.9.30\n @HB_SCRIPT_OLD_NORTH_ARABIAN: `Narb`, Since: 0.9.30\n @HB_SCRIPT_OLD_PERMIC: `Perm`, Since: 0.9.30\n @HB_SCRIPT_PAHAWH_HMONG: `Hmng`, Since: 0.9.30\n @HB_SCRIPT_PALMYRENE: `Palm`, Since: 0.9.30\n @HB_SCRIPT_PAU_CIN_HAU: `Pauc`, Since: 0.9.30\n @HB_SCRIPT_PSALTER_PAHLAVI: `Phlp`, Since: 0.9.30\n @HB_SCRIPT_SIDDHAM: `Sidd`, Since: 0.9.30\n @HB_SCRIPT_TIRHUTA: `Tirh`, Since: 0.9.30\n @HB_SCRIPT_WARANG_CITI: `Wara`, Since: 0.9.30\n @HB_SCRIPT_AHOM: `Ahom`, Since: 0.9.30\n @HB_SCRIPT_ANATOLIAN_HIEROGLYPHS: `Hluw`, Since: 0.9.30\n @HB_SCRIPT_HATRAN: `Hatr`, Since: 0.9.30\n @HB_SCRIPT_MULTANI: `Mult`, Since: 0.9.30\n @HB_SCRIPT_OLD_HUNGARIAN: `Hung`, Since: 0.9.30\n @HB_SCRIPT_SIGNWRITING: `Sgnw`, Since: 0.9.30\n @HB_SCRIPT_ADLAM: `Adlm`, Since: 1.3.0\n @HB_SCRIPT_BHAIKSUKI: `Bhks`, Since: 1.3.0\n @HB_SCRIPT_MARCHEN: `Marc`, Since: 1.3.0\n @HB_SCRIPT_OSAGE: `Osge`, Since: 1.3.0\n @HB_SCRIPT_TANGUT: `Tang`, Since: 1.3.0\n @HB_SCRIPT_NEWA: `Newa`, Since: 1.3.0\n @HB_SCRIPT_MASARAM_GONDI: `Gonm`, Since: 1.6.0\n @HB_SCRIPT_NUSHU: `Nshu`, Since: 1.6.0\n @HB_SCRIPT_SOYOMBO: `Soyo`, Since: 1.6.0\n @HB_SCRIPT_ZANABAZAR_SQUARE: `Zanb`, Since: 1.6.0\n @HB_SCRIPT_DOGRA: `Dogr`, Since: 1.8.0\n @HB_SCRIPT_GUNJALA_GONDI: `Gong`, Since: 1.8.0\n @HB_SCRIPT_HANIFI_ROHINGYA: `Rohg`, Since: 1.8.0\n @HB_SCRIPT_MAKASAR: `Maka`, Since: 1.8.0\n @HB_SCRIPT_MEDEFAIDRIN: `Medf`, Since: 1.8.0\n @HB_SCRIPT_OLD_SOGDIAN: `Sogo`, Since: 1.8.0\n @HB_SCRIPT_SOGDIAN: `Sogd`, Since: 1.8.0\n @HB_SCRIPT_ELYMAIC: `Elym`, Since: 2.4.0\n @HB_SCRIPT_NANDINAGARI: `Nand`, Since: 2.4.0\n @HB_SCRIPT_NYIAKENG_PUACHUE_HMONG: `Hmnp`, Since: 2.4.0\n @HB_SCRIPT_WANCHO: `Wcho`, Since: 2.4.0\n @HB_SCRIPT_CHORASMIAN: `Chrs`, Since: 2.6.7\n @HB_SCRIPT_DIVES_AKURU: `Diak`, Since: 2.6.7\n @HB_SCRIPT_KHITAN_SMALL_SCRIPT: `Kits`, Since: 2.6.7\n @HB_SCRIPT_YEZIDI: `Yezi`, Since: 2.6.7\n @HB_SCRIPT_CYPRO_MINOAN: `Cpmn`, Since: 3.0.0\n @HB_SCRIPT_OLD_UYGHUR: `Ougr`, Since: 3.0.0\n @HB_SCRIPT_TANGSA: `Tnsa`, Since: 3.0.0\n @HB_SCRIPT_TOTO: `Toto`, Since: 3.0.0\n @HB_SCRIPT_VITHKUQI: `Vith`, Since: 3.0.0\n @HB_SCRIPT_MATH: `Zmth`, Since: 3.4.0\n @HB_SCRIPT_KAWI: `Kawi`, Since: 5.2.0\n @HB_SCRIPT_NAG_MUNDARI: `Nagm`, Since: 5.2.0\n @HB_SCRIPT_INVALID: No script set\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"]
347pub type hb_script_t = ::std::os::raw::c_uint;
348extern "C" {
349 pub fn hb_script_from_iso15924_tag(tag: hb_tag_t) -> hb_script_t;
350}
351extern "C" {
352 pub fn hb_script_from_string(
353 str_: *const ::std::os::raw::c_char,
354 len: ::std::os::raw::c_int,
355 ) -> hb_script_t;
356}
357extern "C" {
358 pub fn hb_script_to_iso15924_tag(script: hb_script_t) -> hb_tag_t;
359}
360extern "C" {
361 pub fn hb_script_get_horizontal_direction(script: hb_script_t) -> hb_direction_t;
362}
363#[doc = " hb_user_data_key_t:\n\n Data structure for holding user-data keys.\n"]
364#[repr(C)]
365#[derive(Debug, Copy, Clone)]
366pub struct hb_user_data_key_t {
367 pub unused: ::std::os::raw::c_char,
368}
369#[test]
370fn bindgen_test_layout_hb_user_data_key_t() {
371 const UNINIT: ::std::mem::MaybeUninit<hb_user_data_key_t> = ::std::mem::MaybeUninit::uninit();
372 let ptr = UNINIT.as_ptr();
373 assert_eq!(
374 ::std::mem::size_of::<hb_user_data_key_t>(),
375 1usize,
376 concat!("Size of: ", stringify!(hb_user_data_key_t))
377 );
378 assert_eq!(
379 ::std::mem::align_of::<hb_user_data_key_t>(),
380 1usize,
381 concat!("Alignment of ", stringify!(hb_user_data_key_t))
382 );
383 assert_eq!(
384 unsafe { ::std::ptr::addr_of!((*ptr).unused) as usize - ptr as usize },
385 0usize,
386 concat!("Offset of field: ", stringify!(hb_user_data_key_t), "::", stringify!(unused))
387 );
388}
389#[doc = " hb_destroy_func_t:\n @user_data: the data to be destroyed\n\n A virtual method for destroy user-data callbacks.\n"]
390pub type hb_destroy_func_t =
391 ::std::option::Option<unsafe extern "C" fn(user_data: *mut ::std::os::raw::c_void)>;
392#[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."]
393#[repr(C)]
394#[derive(Debug, Copy, Clone)]
395pub struct hb_feature_t {
396 pub tag: hb_tag_t,
397 pub value: u32,
398 pub start: ::std::os::raw::c_uint,
399 pub end: ::std::os::raw::c_uint,
400}
401#[test]
402fn bindgen_test_layout_hb_feature_t() {
403 const UNINIT: ::std::mem::MaybeUninit<hb_feature_t> = ::std::mem::MaybeUninit::uninit();
404 let ptr = UNINIT.as_ptr();
405 assert_eq!(
406 ::std::mem::size_of::<hb_feature_t>(),
407 16usize,
408 concat!("Size of: ", stringify!(hb_feature_t))
409 );
410 assert_eq!(
411 ::std::mem::align_of::<hb_feature_t>(),
412 4usize,
413 concat!("Alignment of ", stringify!(hb_feature_t))
414 );
415 assert_eq!(
416 unsafe { ::std::ptr::addr_of!((*ptr).tag) as usize - ptr as usize },
417 0usize,
418 concat!("Offset of field: ", stringify!(hb_feature_t), "::", stringify!(tag))
419 );
420 assert_eq!(
421 unsafe { ::std::ptr::addr_of!((*ptr).value) as usize - ptr as usize },
422 4usize,
423 concat!("Offset of field: ", stringify!(hb_feature_t), "::", stringify!(value))
424 );
425 assert_eq!(
426 unsafe { ::std::ptr::addr_of!((*ptr).start) as usize - ptr as usize },
427 8usize,
428 concat!("Offset of field: ", stringify!(hb_feature_t), "::", stringify!(start))
429 );
430 assert_eq!(
431 unsafe { ::std::ptr::addr_of!((*ptr).end) as usize - ptr as usize },
432 12usize,
433 concat!("Offset of field: ", stringify!(hb_feature_t), "::", stringify!(end))
434 );
435}
436extern "C" {
437 pub fn hb_feature_from_string(
438 str_: *const ::std::os::raw::c_char,
439 len: ::std::os::raw::c_int,
440 feature: *mut hb_feature_t,
441 ) -> hb_bool_t;
442}
443extern "C" {
444 pub fn hb_feature_to_string(
445 feature: *mut hb_feature_t,
446 buf: *mut ::std::os::raw::c_char,
447 size: ::std::os::raw::c_uint,
448 );
449}
450#[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 in\n [OpenType Axis Tag Registry](https://docs.microsoft.com/en-us/typography/opentype/spec/dvaraxisreg).\n\n Since: 1.4.2"]
451#[repr(C)]
452#[derive(Debug, Copy, Clone)]
453pub struct hb_variation_t {
454 pub tag: hb_tag_t,
455 pub value: f32,
456}
457#[test]
458fn bindgen_test_layout_hb_variation_t() {
459 const UNINIT: ::std::mem::MaybeUninit<hb_variation_t> = ::std::mem::MaybeUninit::uninit();
460 let ptr = UNINIT.as_ptr();
461 assert_eq!(
462 ::std::mem::size_of::<hb_variation_t>(),
463 8usize,
464 concat!("Size of: ", stringify!(hb_variation_t))
465 );
466 assert_eq!(
467 ::std::mem::align_of::<hb_variation_t>(),
468 4usize,
469 concat!("Alignment of ", stringify!(hb_variation_t))
470 );
471 assert_eq!(
472 unsafe { ::std::ptr::addr_of!((*ptr).tag) as usize - ptr as usize },
473 0usize,
474 concat!("Offset of field: ", stringify!(hb_variation_t), "::", stringify!(tag))
475 );
476 assert_eq!(
477 unsafe { ::std::ptr::addr_of!((*ptr).value) as usize - ptr as usize },
478 4usize,
479 concat!("Offset of field: ", stringify!(hb_variation_t), "::", stringify!(value))
480 );
481}
482extern "C" {
483 pub fn hb_variation_from_string(
484 str_: *const ::std::os::raw::c_char,
485 len: ::std::os::raw::c_int,
486 variation: *mut hb_variation_t,
487 ) -> hb_bool_t;
488}
489extern "C" {
490 pub fn hb_variation_to_string(
491 variation: *mut hb_variation_t,
492 buf: *mut ::std::os::raw::c_char,
493 size: ::std::os::raw::c_uint,
494 );
495}
496#[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"]
497pub type hb_color_t = u32;
498extern "C" {
499 pub fn hb_color_get_alpha(color: hb_color_t) -> u8;
500}
501extern "C" {
502 pub fn hb_color_get_red(color: hb_color_t) -> u8;
503}
504extern "C" {
505 pub fn hb_color_get_green(color: hb_color_t) -> u8;
506}
507extern "C" {
508 pub fn hb_color_get_blue(color: hb_color_t) -> u8;
509}
510#[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."]
511#[repr(C)]
512#[derive(Debug, Copy, Clone)]
513pub struct hb_glyph_extents_t {
514 pub x_bearing: hb_position_t,
515 pub y_bearing: hb_position_t,
516 pub width: hb_position_t,
517 pub height: hb_position_t,
518}
519#[test]
520fn bindgen_test_layout_hb_glyph_extents_t() {
521 const UNINIT: ::std::mem::MaybeUninit<hb_glyph_extents_t> = ::std::mem::MaybeUninit::uninit();
522 let ptr = UNINIT.as_ptr();
523 assert_eq!(
524 ::std::mem::size_of::<hb_glyph_extents_t>(),
525 16usize,
526 concat!("Size of: ", stringify!(hb_glyph_extents_t))
527 );
528 assert_eq!(
529 ::std::mem::align_of::<hb_glyph_extents_t>(),
530 4usize,
531 concat!("Alignment of ", stringify!(hb_glyph_extents_t))
532 );
533 assert_eq!(
534 unsafe { ::std::ptr::addr_of!((*ptr).x_bearing) as usize - ptr as usize },
535 0usize,
536 concat!("Offset of field: ", stringify!(hb_glyph_extents_t), "::", stringify!(x_bearing))
537 );
538 assert_eq!(
539 unsafe { ::std::ptr::addr_of!((*ptr).y_bearing) as usize - ptr as usize },
540 4usize,
541 concat!("Offset of field: ", stringify!(hb_glyph_extents_t), "::", stringify!(y_bearing))
542 );
543 assert_eq!(
544 unsafe { ::std::ptr::addr_of!((*ptr).width) as usize - ptr as usize },
545 8usize,
546 concat!("Offset of field: ", stringify!(hb_glyph_extents_t), "::", stringify!(width))
547 );
548 assert_eq!(
549 unsafe { ::std::ptr::addr_of!((*ptr).height) as usize - ptr as usize },
550 12usize,
551 concat!("Offset of field: ", stringify!(hb_glyph_extents_t), "::", stringify!(height))
552 );
553}
554#[repr(C)]
555#[derive(Debug, Copy, Clone)]
556pub struct hb_font_t {
557 _unused: [u8; 0],
558}
559pub const hb_memory_mode_t_HB_MEMORY_MODE_DUPLICATE: hb_memory_mode_t = 0;
560pub const hb_memory_mode_t_HB_MEMORY_MODE_READONLY: hb_memory_mode_t = 1;
561pub const hb_memory_mode_t_HB_MEMORY_MODE_WRITABLE: hb_memory_mode_t = 2;
562pub const hb_memory_mode_t_HB_MEMORY_MODE_READONLY_MAY_MAKE_WRITABLE: hb_memory_mode_t = 3;
563#[doc = " hb_memory_mode_t:\n @HB_MEMORY_MODE_DUPLICATE: HarfBuzz immediately makes a copy of the data.\n @HB_MEMORY_MODE_READONLY: HarfBuzz client will never modify the data,\n and HarfBuzz will never modify the data.\n @HB_MEMORY_MODE_WRITABLE: HarfBuzz client made a copy of the data solely\n for HarfBuzz, so HarfBuzz may modify the data.\n @HB_MEMORY_MODE_READONLY_MAY_MAKE_WRITABLE: See above\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_MODE_READONLY_MAY_MAKE_WRITABLE, however, using that mode\n correctly is very tricky. Use @HB_MEMORY_MODE_READONLY instead."]
564pub type hb_memory_mode_t = ::std::os::raw::c_uint;
565#[repr(C)]
566#[derive(Debug, Copy, Clone)]
567pub struct hb_blob_t {
568 _unused: [u8; 0],
569}
570extern "C" {
571 pub fn hb_blob_create(
572 data: *const ::std::os::raw::c_char,
573 length: ::std::os::raw::c_uint,
574 mode: hb_memory_mode_t,
575 user_data: *mut ::std::os::raw::c_void,
576 destroy: hb_destroy_func_t,
577 ) -> *mut hb_blob_t;
578}
579extern "C" {
580 pub fn hb_blob_create_or_fail(
581 data: *const ::std::os::raw::c_char,
582 length: ::std::os::raw::c_uint,
583 mode: hb_memory_mode_t,
584 user_data: *mut ::std::os::raw::c_void,
585 destroy: hb_destroy_func_t,
586 ) -> *mut hb_blob_t;
587}
588extern "C" {
589 pub fn hb_blob_create_from_file(file_name: *const ::std::os::raw::c_char) -> *mut hb_blob_t;
590}
591extern "C" {
592 pub fn hb_blob_create_from_file_or_fail(
593 file_name: *const ::std::os::raw::c_char,
594 ) -> *mut hb_blob_t;
595}
596extern "C" {
597 pub fn hb_blob_create_sub_blob(
598 parent: *mut hb_blob_t,
599 offset: ::std::os::raw::c_uint,
600 length: ::std::os::raw::c_uint,
601 ) -> *mut hb_blob_t;
602}
603extern "C" {
604 pub fn hb_blob_copy_writable_or_fail(blob: *mut hb_blob_t) -> *mut hb_blob_t;
605}
606extern "C" {
607 pub fn hb_blob_get_empty() -> *mut hb_blob_t;
608}
609extern "C" {
610 pub fn hb_blob_reference(blob: *mut hb_blob_t) -> *mut hb_blob_t;
611}
612extern "C" {
613 pub fn hb_blob_destroy(blob: *mut hb_blob_t);
614}
615extern "C" {
616 pub fn hb_blob_set_user_data(
617 blob: *mut hb_blob_t,
618 key: *mut hb_user_data_key_t,
619 data: *mut ::std::os::raw::c_void,
620 destroy: hb_destroy_func_t,
621 replace: hb_bool_t,
622 ) -> hb_bool_t;
623}
624extern "C" {
625 pub fn hb_blob_get_user_data(
626 blob: *const hb_blob_t,
627 key: *mut hb_user_data_key_t,
628 ) -> *mut ::std::os::raw::c_void;
629}
630extern "C" {
631 pub fn hb_blob_make_immutable(blob: *mut hb_blob_t);
632}
633extern "C" {
634 pub fn hb_blob_is_immutable(blob: *mut hb_blob_t) -> hb_bool_t;
635}
636extern "C" {
637 pub fn hb_blob_get_length(blob: *mut hb_blob_t) -> ::std::os::raw::c_uint;
638}
639extern "C" {
640 pub fn hb_blob_get_data(
641 blob: *mut hb_blob_t,
642 length: *mut ::std::os::raw::c_uint,
643 ) -> *const ::std::os::raw::c_char;
644}
645extern "C" {
646 pub fn hb_blob_get_data_writable(
647 blob: *mut hb_blob_t,
648 length: *mut ::std::os::raw::c_uint,
649 ) -> *mut ::std::os::raw::c_char;
650}
651pub const hb_unicode_general_category_t_HB_UNICODE_GENERAL_CATEGORY_CONTROL:
652 hb_unicode_general_category_t = 0;
653pub const hb_unicode_general_category_t_HB_UNICODE_GENERAL_CATEGORY_FORMAT:
654 hb_unicode_general_category_t = 1;
655pub const hb_unicode_general_category_t_HB_UNICODE_GENERAL_CATEGORY_UNASSIGNED:
656 hb_unicode_general_category_t = 2;
657pub const hb_unicode_general_category_t_HB_UNICODE_GENERAL_CATEGORY_PRIVATE_USE:
658 hb_unicode_general_category_t = 3;
659pub const hb_unicode_general_category_t_HB_UNICODE_GENERAL_CATEGORY_SURROGATE:
660 hb_unicode_general_category_t = 4;
661pub const hb_unicode_general_category_t_HB_UNICODE_GENERAL_CATEGORY_LOWERCASE_LETTER:
662 hb_unicode_general_category_t = 5;
663pub const hb_unicode_general_category_t_HB_UNICODE_GENERAL_CATEGORY_MODIFIER_LETTER:
664 hb_unicode_general_category_t = 6;
665pub const hb_unicode_general_category_t_HB_UNICODE_GENERAL_CATEGORY_OTHER_LETTER:
666 hb_unicode_general_category_t = 7;
667pub const hb_unicode_general_category_t_HB_UNICODE_GENERAL_CATEGORY_TITLECASE_LETTER:
668 hb_unicode_general_category_t = 8;
669pub const hb_unicode_general_category_t_HB_UNICODE_GENERAL_CATEGORY_UPPERCASE_LETTER:
670 hb_unicode_general_category_t = 9;
671pub const hb_unicode_general_category_t_HB_UNICODE_GENERAL_CATEGORY_SPACING_MARK:
672 hb_unicode_general_category_t = 10;
673pub const hb_unicode_general_category_t_HB_UNICODE_GENERAL_CATEGORY_ENCLOSING_MARK:
674 hb_unicode_general_category_t = 11;
675pub const hb_unicode_general_category_t_HB_UNICODE_GENERAL_CATEGORY_NON_SPACING_MARK:
676 hb_unicode_general_category_t = 12;
677pub const hb_unicode_general_category_t_HB_UNICODE_GENERAL_CATEGORY_DECIMAL_NUMBER:
678 hb_unicode_general_category_t = 13;
679pub const hb_unicode_general_category_t_HB_UNICODE_GENERAL_CATEGORY_LETTER_NUMBER:
680 hb_unicode_general_category_t = 14;
681pub const hb_unicode_general_category_t_HB_UNICODE_GENERAL_CATEGORY_OTHER_NUMBER:
682 hb_unicode_general_category_t = 15;
683pub const hb_unicode_general_category_t_HB_UNICODE_GENERAL_CATEGORY_CONNECT_PUNCTUATION:
684 hb_unicode_general_category_t = 16;
685pub const hb_unicode_general_category_t_HB_UNICODE_GENERAL_CATEGORY_DASH_PUNCTUATION:
686 hb_unicode_general_category_t = 17;
687pub const hb_unicode_general_category_t_HB_UNICODE_GENERAL_CATEGORY_CLOSE_PUNCTUATION:
688 hb_unicode_general_category_t = 18;
689pub const hb_unicode_general_category_t_HB_UNICODE_GENERAL_CATEGORY_FINAL_PUNCTUATION:
690 hb_unicode_general_category_t = 19;
691pub const hb_unicode_general_category_t_HB_UNICODE_GENERAL_CATEGORY_INITIAL_PUNCTUATION:
692 hb_unicode_general_category_t = 20;
693pub const hb_unicode_general_category_t_HB_UNICODE_GENERAL_CATEGORY_OTHER_PUNCTUATION:
694 hb_unicode_general_category_t = 21;
695pub const hb_unicode_general_category_t_HB_UNICODE_GENERAL_CATEGORY_OPEN_PUNCTUATION:
696 hb_unicode_general_category_t = 22;
697pub const hb_unicode_general_category_t_HB_UNICODE_GENERAL_CATEGORY_CURRENCY_SYMBOL:
698 hb_unicode_general_category_t = 23;
699pub const hb_unicode_general_category_t_HB_UNICODE_GENERAL_CATEGORY_MODIFIER_SYMBOL:
700 hb_unicode_general_category_t = 24;
701pub const hb_unicode_general_category_t_HB_UNICODE_GENERAL_CATEGORY_MATH_SYMBOL:
702 hb_unicode_general_category_t = 25;
703pub const hb_unicode_general_category_t_HB_UNICODE_GENERAL_CATEGORY_OTHER_SYMBOL:
704 hb_unicode_general_category_t = 26;
705pub const hb_unicode_general_category_t_HB_UNICODE_GENERAL_CATEGORY_LINE_SEPARATOR:
706 hb_unicode_general_category_t = 27;
707pub const hb_unicode_general_category_t_HB_UNICODE_GENERAL_CATEGORY_PARAGRAPH_SEPARATOR:
708 hb_unicode_general_category_t = 28;
709pub const hb_unicode_general_category_t_HB_UNICODE_GENERAL_CATEGORY_SPACE_SEPARATOR:
710 hb_unicode_general_category_t = 29;
711#[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."]
712pub type hb_unicode_general_category_t = ::std::os::raw::c_uint;
713pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_NOT_REORDERED:
714 hb_unicode_combining_class_t = 0;
715pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_OVERLAY:
716 hb_unicode_combining_class_t = 1;
717pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_NUKTA:
718 hb_unicode_combining_class_t = 7;
719pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_KANA_VOICING:
720 hb_unicode_combining_class_t = 8;
721pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_VIRAMA:
722 hb_unicode_combining_class_t = 9;
723pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_CCC10:
724 hb_unicode_combining_class_t = 10;
725pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_CCC11:
726 hb_unicode_combining_class_t = 11;
727pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_CCC12:
728 hb_unicode_combining_class_t = 12;
729pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_CCC13:
730 hb_unicode_combining_class_t = 13;
731pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_CCC14:
732 hb_unicode_combining_class_t = 14;
733pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_CCC15:
734 hb_unicode_combining_class_t = 15;
735pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_CCC16:
736 hb_unicode_combining_class_t = 16;
737pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_CCC17:
738 hb_unicode_combining_class_t = 17;
739pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_CCC18:
740 hb_unicode_combining_class_t = 18;
741pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_CCC19:
742 hb_unicode_combining_class_t = 19;
743pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_CCC20:
744 hb_unicode_combining_class_t = 20;
745pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_CCC21:
746 hb_unicode_combining_class_t = 21;
747pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_CCC22:
748 hb_unicode_combining_class_t = 22;
749pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_CCC23:
750 hb_unicode_combining_class_t = 23;
751pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_CCC24:
752 hb_unicode_combining_class_t = 24;
753pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_CCC25:
754 hb_unicode_combining_class_t = 25;
755pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_CCC26:
756 hb_unicode_combining_class_t = 26;
757pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_CCC27:
758 hb_unicode_combining_class_t = 27;
759pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_CCC28:
760 hb_unicode_combining_class_t = 28;
761pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_CCC29:
762 hb_unicode_combining_class_t = 29;
763pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_CCC30:
764 hb_unicode_combining_class_t = 30;
765pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_CCC31:
766 hb_unicode_combining_class_t = 31;
767pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_CCC32:
768 hb_unicode_combining_class_t = 32;
769pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_CCC33:
770 hb_unicode_combining_class_t = 33;
771pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_CCC34:
772 hb_unicode_combining_class_t = 34;
773pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_CCC35:
774 hb_unicode_combining_class_t = 35;
775pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_CCC36:
776 hb_unicode_combining_class_t = 36;
777pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_CCC84:
778 hb_unicode_combining_class_t = 84;
779pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_CCC91:
780 hb_unicode_combining_class_t = 91;
781pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_CCC103:
782 hb_unicode_combining_class_t = 103;
783pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_CCC107:
784 hb_unicode_combining_class_t = 107;
785pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_CCC118:
786 hb_unicode_combining_class_t = 118;
787pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_CCC122:
788 hb_unicode_combining_class_t = 122;
789pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_CCC129:
790 hb_unicode_combining_class_t = 129;
791pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_CCC130:
792 hb_unicode_combining_class_t = 130;
793pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_CCC132:
794 hb_unicode_combining_class_t = 132;
795pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_ATTACHED_BELOW_LEFT:
796 hb_unicode_combining_class_t = 200;
797pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_ATTACHED_BELOW:
798 hb_unicode_combining_class_t = 202;
799pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_ATTACHED_ABOVE:
800 hb_unicode_combining_class_t = 214;
801pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_ATTACHED_ABOVE_RIGHT:
802 hb_unicode_combining_class_t = 216;
803pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_BELOW_LEFT:
804 hb_unicode_combining_class_t = 218;
805pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_BELOW:
806 hb_unicode_combining_class_t = 220;
807pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_BELOW_RIGHT:
808 hb_unicode_combining_class_t = 222;
809pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_LEFT:
810 hb_unicode_combining_class_t = 224;
811pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_RIGHT:
812 hb_unicode_combining_class_t = 226;
813pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_ABOVE_LEFT:
814 hb_unicode_combining_class_t = 228;
815pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_ABOVE:
816 hb_unicode_combining_class_t = 230;
817pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_ABOVE_RIGHT:
818 hb_unicode_combining_class_t = 232;
819pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_DOUBLE_BELOW:
820 hb_unicode_combining_class_t = 233;
821pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_DOUBLE_ABOVE:
822 hb_unicode_combining_class_t = 234;
823pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_IOTA_SUBSCRIPT:
824 hb_unicode_combining_class_t = 240;
825pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_INVALID:
826 hb_unicode_combining_class_t = 255;
827#[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_CCC132: [Tibetan] Since: 7.2.0\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"]
828pub type hb_unicode_combining_class_t = ::std::os::raw::c_uint;
829#[repr(C)]
830#[derive(Debug, Copy, Clone)]
831pub struct hb_unicode_funcs_t {
832 _unused: [u8; 0],
833}
834extern "C" {
835 pub fn hb_unicode_funcs_get_default() -> *mut hb_unicode_funcs_t;
836}
837extern "C" {
838 pub fn hb_unicode_funcs_create(parent: *mut hb_unicode_funcs_t) -> *mut hb_unicode_funcs_t;
839}
840extern "C" {
841 pub fn hb_unicode_funcs_get_empty() -> *mut hb_unicode_funcs_t;
842}
843extern "C" {
844 pub fn hb_unicode_funcs_reference(ufuncs: *mut hb_unicode_funcs_t) -> *mut hb_unicode_funcs_t;
845}
846extern "C" {
847 pub fn hb_unicode_funcs_destroy(ufuncs: *mut hb_unicode_funcs_t);
848}
849extern "C" {
850 pub fn hb_unicode_funcs_set_user_data(
851 ufuncs: *mut hb_unicode_funcs_t,
852 key: *mut hb_user_data_key_t,
853 data: *mut ::std::os::raw::c_void,
854 destroy: hb_destroy_func_t,
855 replace: hb_bool_t,
856 ) -> hb_bool_t;
857}
858extern "C" {
859 pub fn hb_unicode_funcs_get_user_data(
860 ufuncs: *const hb_unicode_funcs_t,
861 key: *mut hb_user_data_key_t,
862 ) -> *mut ::std::os::raw::c_void;
863}
864extern "C" {
865 pub fn hb_unicode_funcs_make_immutable(ufuncs: *mut hb_unicode_funcs_t);
866}
867extern "C" {
868 pub fn hb_unicode_funcs_is_immutable(ufuncs: *mut hb_unicode_funcs_t) -> hb_bool_t;
869}
870extern "C" {
871 pub fn hb_unicode_funcs_get_parent(ufuncs: *mut hb_unicode_funcs_t) -> *mut hb_unicode_funcs_t;
872}
873#[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"]
874pub type hb_unicode_combining_class_func_t = ::std::option::Option<
875 unsafe extern "C" fn(
876 ufuncs: *mut hb_unicode_funcs_t,
877 unicode: hb_codepoint_t,
878 user_data: *mut ::std::os::raw::c_void,
879 ) -> hb_unicode_combining_class_t,
880>;
881#[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"]
882pub type hb_unicode_general_category_func_t = ::std::option::Option<
883 unsafe extern "C" fn(
884 ufuncs: *mut hb_unicode_funcs_t,
885 unicode: hb_codepoint_t,
886 user_data: *mut ::std::os::raw::c_void,
887 ) -> hb_unicode_general_category_t,
888>;
889#[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"]
890pub type hb_unicode_mirroring_func_t = ::std::option::Option<
891 unsafe extern "C" fn(
892 ufuncs: *mut hb_unicode_funcs_t,
893 unicode: hb_codepoint_t,
894 user_data: *mut ::std::os::raw::c_void,
895 ) -> hb_codepoint_t,
896>;
897#[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"]
898pub type hb_unicode_script_func_t = ::std::option::Option<
899 unsafe extern "C" fn(
900 ufuncs: *mut hb_unicode_funcs_t,
901 unicode: hb_codepoint_t,
902 user_data: *mut ::std::os::raw::c_void,
903 ) -> hb_script_t,
904>;
905#[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"]
906pub type hb_unicode_compose_func_t = ::std::option::Option<
907 unsafe extern "C" fn(
908 ufuncs: *mut hb_unicode_funcs_t,
909 a: hb_codepoint_t,
910 b: hb_codepoint_t,
911 ab: *mut hb_codepoint_t,
912 user_data: *mut ::std::os::raw::c_void,
913 ) -> hb_bool_t,
914>;
915#[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"]
916pub type hb_unicode_decompose_func_t = ::std::option::Option<
917 unsafe extern "C" fn(
918 ufuncs: *mut hb_unicode_funcs_t,
919 ab: hb_codepoint_t,
920 a: *mut hb_codepoint_t,
921 b: *mut hb_codepoint_t,
922 user_data: *mut ::std::os::raw::c_void,
923 ) -> hb_bool_t,
924>;
925extern "C" {
926 #[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: (nullable): 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"]
927 pub fn hb_unicode_funcs_set_combining_class_func(
928 ufuncs: *mut hb_unicode_funcs_t,
929 func: hb_unicode_combining_class_func_t,
930 user_data: *mut ::std::os::raw::c_void,
931 destroy: hb_destroy_func_t,
932 );
933}
934extern "C" {
935 #[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: (nullable): 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"]
936 pub fn hb_unicode_funcs_set_general_category_func(
937 ufuncs: *mut hb_unicode_funcs_t,
938 func: hb_unicode_general_category_func_t,
939 user_data: *mut ::std::os::raw::c_void,
940 destroy: hb_destroy_func_t,
941 );
942}
943extern "C" {
944 #[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: (nullable): 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"]
945 pub fn hb_unicode_funcs_set_mirroring_func(
946 ufuncs: *mut hb_unicode_funcs_t,
947 func: hb_unicode_mirroring_func_t,
948 user_data: *mut ::std::os::raw::c_void,
949 destroy: hb_destroy_func_t,
950 );
951}
952extern "C" {
953 #[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: (nullable): 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"]
954 pub fn hb_unicode_funcs_set_script_func(
955 ufuncs: *mut hb_unicode_funcs_t,
956 func: hb_unicode_script_func_t,
957 user_data: *mut ::std::os::raw::c_void,
958 destroy: hb_destroy_func_t,
959 );
960}
961extern "C" {
962 #[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: (nullable): 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"]
963 pub fn hb_unicode_funcs_set_compose_func(
964 ufuncs: *mut hb_unicode_funcs_t,
965 func: hb_unicode_compose_func_t,
966 user_data: *mut ::std::os::raw::c_void,
967 destroy: hb_destroy_func_t,
968 );
969}
970extern "C" {
971 #[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: (nullable): 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"]
972 pub fn hb_unicode_funcs_set_decompose_func(
973 ufuncs: *mut hb_unicode_funcs_t,
974 func: hb_unicode_decompose_func_t,
975 user_data: *mut ::std::os::raw::c_void,
976 destroy: hb_destroy_func_t,
977 );
978}
979extern "C" {
980 #[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"]
981 pub fn hb_unicode_combining_class(
982 ufuncs: *mut hb_unicode_funcs_t,
983 unicode: hb_codepoint_t,
984 ) -> hb_unicode_combining_class_t;
985}
986extern "C" {
987 #[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"]
988 pub fn hb_unicode_general_category(
989 ufuncs: *mut hb_unicode_funcs_t,
990 unicode: hb_codepoint_t,
991 ) -> hb_unicode_general_category_t;
992}
993extern "C" {
994 #[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"]
995 pub fn hb_unicode_mirroring(
996 ufuncs: *mut hb_unicode_funcs_t,
997 unicode: hb_codepoint_t,
998 ) -> hb_codepoint_t;
999}
1000extern "C" {
1001 #[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"]
1002 pub fn hb_unicode_script(
1003 ufuncs: *mut hb_unicode_funcs_t,
1004 unicode: hb_codepoint_t,
1005 ) -> hb_script_t;
1006}
1007extern "C" {
1008 pub fn hb_unicode_compose(
1009 ufuncs: *mut hb_unicode_funcs_t,
1010 a: hb_codepoint_t,
1011 b: hb_codepoint_t,
1012 ab: *mut hb_codepoint_t,
1013 ) -> hb_bool_t;
1014}
1015extern "C" {
1016 pub fn hb_unicode_decompose(
1017 ufuncs: *mut hb_unicode_funcs_t,
1018 ab: hb_codepoint_t,
1019 a: *mut hb_codepoint_t,
1020 b: *mut hb_codepoint_t,
1021 ) -> hb_bool_t;
1022}
1023#[repr(C)]
1024#[derive(Debug, Copy, Clone)]
1025pub struct hb_set_t {
1026 _unused: [u8; 0],
1027}
1028extern "C" {
1029 pub fn hb_set_create() -> *mut hb_set_t;
1030}
1031extern "C" {
1032 pub fn hb_set_get_empty() -> *mut hb_set_t;
1033}
1034extern "C" {
1035 pub fn hb_set_reference(set: *mut hb_set_t) -> *mut hb_set_t;
1036}
1037extern "C" {
1038 pub fn hb_set_destroy(set: *mut hb_set_t);
1039}
1040extern "C" {
1041 pub fn hb_set_set_user_data(
1042 set: *mut hb_set_t,
1043 key: *mut hb_user_data_key_t,
1044 data: *mut ::std::os::raw::c_void,
1045 destroy: hb_destroy_func_t,
1046 replace: hb_bool_t,
1047 ) -> hb_bool_t;
1048}
1049extern "C" {
1050 pub fn hb_set_get_user_data(
1051 set: *const hb_set_t,
1052 key: *mut hb_user_data_key_t,
1053 ) -> *mut ::std::os::raw::c_void;
1054}
1055extern "C" {
1056 pub fn hb_set_allocation_successful(set: *const hb_set_t) -> hb_bool_t;
1057}
1058extern "C" {
1059 pub fn hb_set_copy(set: *const hb_set_t) -> *mut hb_set_t;
1060}
1061extern "C" {
1062 pub fn hb_set_clear(set: *mut hb_set_t);
1063}
1064extern "C" {
1065 pub fn hb_set_is_empty(set: *const hb_set_t) -> hb_bool_t;
1066}
1067extern "C" {
1068 pub fn hb_set_invert(set: *mut hb_set_t);
1069}
1070extern "C" {
1071 pub fn hb_set_is_inverted(set: *const hb_set_t) -> hb_bool_t;
1072}
1073extern "C" {
1074 pub fn hb_set_has(set: *const hb_set_t, codepoint: hb_codepoint_t) -> hb_bool_t;
1075}
1076extern "C" {
1077 pub fn hb_set_add(set: *mut hb_set_t, codepoint: hb_codepoint_t);
1078}
1079extern "C" {
1080 pub fn hb_set_add_range(set: *mut hb_set_t, first: hb_codepoint_t, last: hb_codepoint_t);
1081}
1082extern "C" {
1083 pub fn hb_set_add_sorted_array(
1084 set: *mut hb_set_t,
1085 sorted_codepoints: *const hb_codepoint_t,
1086 num_codepoints: ::std::os::raw::c_uint,
1087 );
1088}
1089extern "C" {
1090 pub fn hb_set_del(set: *mut hb_set_t, codepoint: hb_codepoint_t);
1091}
1092extern "C" {
1093 pub fn hb_set_del_range(set: *mut hb_set_t, first: hb_codepoint_t, last: hb_codepoint_t);
1094}
1095extern "C" {
1096 pub fn hb_set_is_equal(set: *const hb_set_t, other: *const hb_set_t) -> hb_bool_t;
1097}
1098extern "C" {
1099 pub fn hb_set_hash(set: *const hb_set_t) -> ::std::os::raw::c_uint;
1100}
1101extern "C" {
1102 pub fn hb_set_is_subset(set: *const hb_set_t, larger_set: *const hb_set_t) -> hb_bool_t;
1103}
1104extern "C" {
1105 pub fn hb_set_set(set: *mut hb_set_t, other: *const hb_set_t);
1106}
1107extern "C" {
1108 pub fn hb_set_union(set: *mut hb_set_t, other: *const hb_set_t);
1109}
1110extern "C" {
1111 pub fn hb_set_intersect(set: *mut hb_set_t, other: *const hb_set_t);
1112}
1113extern "C" {
1114 pub fn hb_set_subtract(set: *mut hb_set_t, other: *const hb_set_t);
1115}
1116extern "C" {
1117 pub fn hb_set_symmetric_difference(set: *mut hb_set_t, other: *const hb_set_t);
1118}
1119extern "C" {
1120 pub fn hb_set_get_population(set: *const hb_set_t) -> ::std::os::raw::c_uint;
1121}
1122extern "C" {
1123 pub fn hb_set_get_min(set: *const hb_set_t) -> hb_codepoint_t;
1124}
1125extern "C" {
1126 pub fn hb_set_get_max(set: *const hb_set_t) -> hb_codepoint_t;
1127}
1128extern "C" {
1129 pub fn hb_set_next(set: *const hb_set_t, codepoint: *mut hb_codepoint_t) -> hb_bool_t;
1130}
1131extern "C" {
1132 pub fn hb_set_previous(set: *const hb_set_t, codepoint: *mut hb_codepoint_t) -> hb_bool_t;
1133}
1134extern "C" {
1135 pub fn hb_set_next_range(
1136 set: *const hb_set_t,
1137 first: *mut hb_codepoint_t,
1138 last: *mut hb_codepoint_t,
1139 ) -> hb_bool_t;
1140}
1141extern "C" {
1142 pub fn hb_set_previous_range(
1143 set: *const hb_set_t,
1144 first: *mut hb_codepoint_t,
1145 last: *mut hb_codepoint_t,
1146 ) -> hb_bool_t;
1147}
1148extern "C" {
1149 pub fn hb_set_next_many(
1150 set: *const hb_set_t,
1151 codepoint: hb_codepoint_t,
1152 out: *mut hb_codepoint_t,
1153 size: ::std::os::raw::c_uint,
1154 ) -> ::std::os::raw::c_uint;
1155}
1156#[repr(C)]
1157#[derive(Debug, Copy, Clone)]
1158pub struct hb_map_t {
1159 _unused: [u8; 0],
1160}
1161extern "C" {
1162 pub fn hb_map_create() -> *mut hb_map_t;
1163}
1164extern "C" {
1165 pub fn hb_map_get_empty() -> *mut hb_map_t;
1166}
1167extern "C" {
1168 pub fn hb_map_reference(map: *mut hb_map_t) -> *mut hb_map_t;
1169}
1170extern "C" {
1171 pub fn hb_map_destroy(map: *mut hb_map_t);
1172}
1173extern "C" {
1174 pub fn hb_map_set_user_data(
1175 map: *mut hb_map_t,
1176 key: *mut hb_user_data_key_t,
1177 data: *mut ::std::os::raw::c_void,
1178 destroy: hb_destroy_func_t,
1179 replace: hb_bool_t,
1180 ) -> hb_bool_t;
1181}
1182extern "C" {
1183 pub fn hb_map_get_user_data(
1184 map: *const hb_map_t,
1185 key: *mut hb_user_data_key_t,
1186 ) -> *mut ::std::os::raw::c_void;
1187}
1188extern "C" {
1189 pub fn hb_map_allocation_successful(map: *const hb_map_t) -> hb_bool_t;
1190}
1191extern "C" {
1192 pub fn hb_map_copy(map: *const hb_map_t) -> *mut hb_map_t;
1193}
1194extern "C" {
1195 pub fn hb_map_clear(map: *mut hb_map_t);
1196}
1197extern "C" {
1198 pub fn hb_map_is_empty(map: *const hb_map_t) -> hb_bool_t;
1199}
1200extern "C" {
1201 pub fn hb_map_get_population(map: *const hb_map_t) -> ::std::os::raw::c_uint;
1202}
1203extern "C" {
1204 pub fn hb_map_is_equal(map: *const hb_map_t, other: *const hb_map_t) -> hb_bool_t;
1205}
1206extern "C" {
1207 pub fn hb_map_hash(map: *const hb_map_t) -> ::std::os::raw::c_uint;
1208}
1209extern "C" {
1210 pub fn hb_map_set(map: *mut hb_map_t, key: hb_codepoint_t, value: hb_codepoint_t);
1211}
1212extern "C" {
1213 pub fn hb_map_get(map: *const hb_map_t, key: hb_codepoint_t) -> hb_codepoint_t;
1214}
1215extern "C" {
1216 pub fn hb_map_del(map: *mut hb_map_t, key: hb_codepoint_t);
1217}
1218extern "C" {
1219 pub fn hb_map_has(map: *const hb_map_t, key: hb_codepoint_t) -> hb_bool_t;
1220}
1221extern "C" {
1222 pub fn hb_map_update(map: *mut hb_map_t, other: *const hb_map_t);
1223}
1224extern "C" {
1225 pub fn hb_map_next(
1226 map: *const hb_map_t,
1227 idx: *mut ::std::os::raw::c_int,
1228 key: *mut hb_codepoint_t,
1229 value: *mut hb_codepoint_t,
1230 ) -> hb_bool_t;
1231}
1232extern "C" {
1233 pub fn hb_map_keys(map: *const hb_map_t, keys: *mut hb_set_t);
1234}
1235extern "C" {
1236 pub fn hb_map_values(map: *const hb_map_t, values: *mut hb_set_t);
1237}
1238extern "C" {
1239 pub fn hb_face_count(blob: *mut hb_blob_t) -> ::std::os::raw::c_uint;
1240}
1241#[repr(C)]
1242#[derive(Debug, Copy, Clone)]
1243pub struct hb_face_t {
1244 _unused: [u8; 0],
1245}
1246extern "C" {
1247 pub fn hb_face_create(blob: *mut hb_blob_t, index: ::std::os::raw::c_uint) -> *mut hb_face_t;
1248}
1249#[doc = " hb_reference_table_func_t:\n @face: an #hb_face_t to reference table for\n @tag: the tag of the table to reference\n @user_data: User data pointer passed by the caller\n\n Callback function for hb_face_create_for_tables().\n\n Return value: (transfer full): A pointer to the @tag table within @face\n\n Since: 0.9.2"]
1250pub type hb_reference_table_func_t = ::std::option::Option<
1251 unsafe extern "C" fn(
1252 face: *mut hb_face_t,
1253 tag: hb_tag_t,
1254 user_data: *mut ::std::os::raw::c_void,
1255 ) -> *mut hb_blob_t,
1256>;
1257extern "C" {
1258 pub fn hb_face_create_for_tables(
1259 reference_table_func: hb_reference_table_func_t,
1260 user_data: *mut ::std::os::raw::c_void,
1261 destroy: hb_destroy_func_t,
1262 ) -> *mut hb_face_t;
1263}
1264extern "C" {
1265 pub fn hb_face_get_empty() -> *mut hb_face_t;
1266}
1267extern "C" {
1268 pub fn hb_face_reference(face: *mut hb_face_t) -> *mut hb_face_t;
1269}
1270extern "C" {
1271 pub fn hb_face_destroy(face: *mut hb_face_t);
1272}
1273extern "C" {
1274 pub fn hb_face_set_user_data(
1275 face: *mut hb_face_t,
1276 key: *mut hb_user_data_key_t,
1277 data: *mut ::std::os::raw::c_void,
1278 destroy: hb_destroy_func_t,
1279 replace: hb_bool_t,
1280 ) -> hb_bool_t;
1281}
1282extern "C" {
1283 pub fn hb_face_get_user_data(
1284 face: *const hb_face_t,
1285 key: *mut hb_user_data_key_t,
1286 ) -> *mut ::std::os::raw::c_void;
1287}
1288extern "C" {
1289 pub fn hb_face_make_immutable(face: *mut hb_face_t);
1290}
1291extern "C" {
1292 pub fn hb_face_is_immutable(face: *const hb_face_t) -> hb_bool_t;
1293}
1294extern "C" {
1295 pub fn hb_face_reference_table(face: *const hb_face_t, tag: hb_tag_t) -> *mut hb_blob_t;
1296}
1297extern "C" {
1298 pub fn hb_face_reference_blob(face: *mut hb_face_t) -> *mut hb_blob_t;
1299}
1300extern "C" {
1301 pub fn hb_face_set_index(face: *mut hb_face_t, index: ::std::os::raw::c_uint);
1302}
1303extern "C" {
1304 pub fn hb_face_get_index(face: *const hb_face_t) -> ::std::os::raw::c_uint;
1305}
1306extern "C" {
1307 pub fn hb_face_set_upem(face: *mut hb_face_t, upem: ::std::os::raw::c_uint);
1308}
1309extern "C" {
1310 pub fn hb_face_get_upem(face: *const hb_face_t) -> ::std::os::raw::c_uint;
1311}
1312extern "C" {
1313 pub fn hb_face_set_glyph_count(face: *mut hb_face_t, glyph_count: ::std::os::raw::c_uint);
1314}
1315extern "C" {
1316 pub fn hb_face_get_glyph_count(face: *const hb_face_t) -> ::std::os::raw::c_uint;
1317}
1318extern "C" {
1319 pub fn hb_face_get_table_tags(
1320 face: *const hb_face_t,
1321 start_offset: ::std::os::raw::c_uint,
1322 table_count: *mut ::std::os::raw::c_uint,
1323 table_tags: *mut hb_tag_t,
1324 ) -> ::std::os::raw::c_uint;
1325}
1326extern "C" {
1327 pub fn hb_face_collect_unicodes(face: *mut hb_face_t, out: *mut hb_set_t);
1328}
1329extern "C" {
1330 pub fn hb_face_collect_nominal_glyph_mapping(
1331 face: *mut hb_face_t,
1332 mapping: *mut hb_map_t,
1333 unicodes: *mut hb_set_t,
1334 );
1335}
1336extern "C" {
1337 pub fn hb_face_collect_variation_selectors(face: *mut hb_face_t, out: *mut hb_set_t);
1338}
1339extern "C" {
1340 pub fn hb_face_collect_variation_unicodes(
1341 face: *mut hb_face_t,
1342 variation_selector: hb_codepoint_t,
1343 out: *mut hb_set_t,
1344 );
1345}
1346extern "C" {
1347 pub fn hb_face_builder_create() -> *mut hb_face_t;
1348}
1349extern "C" {
1350 pub fn hb_face_builder_add_table(
1351 face: *mut hb_face_t,
1352 tag: hb_tag_t,
1353 blob: *mut hb_blob_t,
1354 ) -> hb_bool_t;
1355}
1356extern "C" {
1357 pub fn hb_face_builder_sort_tables(face: *mut hb_face_t, tags: *const hb_tag_t);
1358}
1359#[doc = " hb_draw_state_t\n @path_open: Whether there is an open path\n @path_start_x: X component of the start of current path\n @path_start_y: Y component of the start of current path\n @current_x: X component of current point\n @current_y: Y component of current point\n\n Current drawing state.\n\n Since: 4.0.0"]
1360#[repr(C)]
1361#[derive(Copy, Clone)]
1362pub struct hb_draw_state_t {
1363 pub path_open: hb_bool_t,
1364 pub path_start_x: f32,
1365 pub path_start_y: f32,
1366 pub current_x: f32,
1367 pub current_y: f32,
1368 pub reserved1: hb_var_num_t,
1369 pub reserved2: hb_var_num_t,
1370 pub reserved3: hb_var_num_t,
1371 pub reserved4: hb_var_num_t,
1372 pub reserved5: hb_var_num_t,
1373 pub reserved6: hb_var_num_t,
1374 pub reserved7: hb_var_num_t,
1375}
1376#[test]
1377fn bindgen_test_layout_hb_draw_state_t() {
1378 const UNINIT: ::std::mem::MaybeUninit<hb_draw_state_t> = ::std::mem::MaybeUninit::uninit();
1379 let ptr = UNINIT.as_ptr();
1380 assert_eq!(
1381 ::std::mem::size_of::<hb_draw_state_t>(),
1382 48usize,
1383 concat!("Size of: ", stringify!(hb_draw_state_t))
1384 );
1385 assert_eq!(
1386 ::std::mem::align_of::<hb_draw_state_t>(),
1387 4usize,
1388 concat!("Alignment of ", stringify!(hb_draw_state_t))
1389 );
1390 assert_eq!(
1391 unsafe { ::std::ptr::addr_of!((*ptr).path_open) as usize - ptr as usize },
1392 0usize,
1393 concat!("Offset of field: ", stringify!(hb_draw_state_t), "::", stringify!(path_open))
1394 );
1395 assert_eq!(
1396 unsafe { ::std::ptr::addr_of!((*ptr).path_start_x) as usize - ptr as usize },
1397 4usize,
1398 concat!("Offset of field: ", stringify!(hb_draw_state_t), "::", stringify!(path_start_x))
1399 );
1400 assert_eq!(
1401 unsafe { ::std::ptr::addr_of!((*ptr).path_start_y) as usize - ptr as usize },
1402 8usize,
1403 concat!("Offset of field: ", stringify!(hb_draw_state_t), "::", stringify!(path_start_y))
1404 );
1405 assert_eq!(
1406 unsafe { ::std::ptr::addr_of!((*ptr).current_x) as usize - ptr as usize },
1407 12usize,
1408 concat!("Offset of field: ", stringify!(hb_draw_state_t), "::", stringify!(current_x))
1409 );
1410 assert_eq!(
1411 unsafe { ::std::ptr::addr_of!((*ptr).current_y) as usize - ptr as usize },
1412 16usize,
1413 concat!("Offset of field: ", stringify!(hb_draw_state_t), "::", stringify!(current_y))
1414 );
1415 assert_eq!(
1416 unsafe { ::std::ptr::addr_of!((*ptr).reserved1) as usize - ptr as usize },
1417 20usize,
1418 concat!("Offset of field: ", stringify!(hb_draw_state_t), "::", stringify!(reserved1))
1419 );
1420 assert_eq!(
1421 unsafe { ::std::ptr::addr_of!((*ptr).reserved2) as usize - ptr as usize },
1422 24usize,
1423 concat!("Offset of field: ", stringify!(hb_draw_state_t), "::", stringify!(reserved2))
1424 );
1425 assert_eq!(
1426 unsafe { ::std::ptr::addr_of!((*ptr).reserved3) as usize - ptr as usize },
1427 28usize,
1428 concat!("Offset of field: ", stringify!(hb_draw_state_t), "::", stringify!(reserved3))
1429 );
1430 assert_eq!(
1431 unsafe { ::std::ptr::addr_of!((*ptr).reserved4) as usize - ptr as usize },
1432 32usize,
1433 concat!("Offset of field: ", stringify!(hb_draw_state_t), "::", stringify!(reserved4))
1434 );
1435 assert_eq!(
1436 unsafe { ::std::ptr::addr_of!((*ptr).reserved5) as usize - ptr as usize },
1437 36usize,
1438 concat!("Offset of field: ", stringify!(hb_draw_state_t), "::", stringify!(reserved5))
1439 );
1440 assert_eq!(
1441 unsafe { ::std::ptr::addr_of!((*ptr).reserved6) as usize - ptr as usize },
1442 40usize,
1443 concat!("Offset of field: ", stringify!(hb_draw_state_t), "::", stringify!(reserved6))
1444 );
1445 assert_eq!(
1446 unsafe { ::std::ptr::addr_of!((*ptr).reserved7) as usize - ptr as usize },
1447 44usize,
1448 concat!("Offset of field: ", stringify!(hb_draw_state_t), "::", stringify!(reserved7))
1449 );
1450}
1451#[repr(C)]
1452#[derive(Debug, Copy, Clone)]
1453pub struct hb_draw_funcs_t {
1454 _unused: [u8; 0],
1455}
1456#[doc = " hb_draw_move_to_func_t:\n @dfuncs: draw functions object\n @draw_data: The data accompanying the draw functions in hb_font_draw_glyph()\n @st: current draw state\n @to_x: X component of target point\n @to_y: Y component of target point\n @user_data: User data pointer passed to hb_draw_funcs_set_move_to_func()\n\n A virtual method for the #hb_draw_funcs_t to perform a \"move-to\" draw\n operation.\n\n Since: 4.0.0\n"]
1457pub type hb_draw_move_to_func_t = ::std::option::Option<
1458 unsafe extern "C" fn(
1459 dfuncs: *mut hb_draw_funcs_t,
1460 draw_data: *mut ::std::os::raw::c_void,
1461 st: *mut hb_draw_state_t,
1462 to_x: f32,
1463 to_y: f32,
1464 user_data: *mut ::std::os::raw::c_void,
1465 ),
1466>;
1467#[doc = " hb_draw_line_to_func_t:\n @dfuncs: draw functions object\n @draw_data: The data accompanying the draw functions in hb_font_draw_glyph()\n @st: current draw state\n @to_x: X component of target point\n @to_y: Y component of target point\n @user_data: User data pointer passed to hb_draw_funcs_set_line_to_func()\n\n A virtual method for the #hb_draw_funcs_t to perform a \"line-to\" draw\n operation.\n\n Since: 4.0.0\n"]
1468pub type hb_draw_line_to_func_t = ::std::option::Option<
1469 unsafe extern "C" fn(
1470 dfuncs: *mut hb_draw_funcs_t,
1471 draw_data: *mut ::std::os::raw::c_void,
1472 st: *mut hb_draw_state_t,
1473 to_x: f32,
1474 to_y: f32,
1475 user_data: *mut ::std::os::raw::c_void,
1476 ),
1477>;
1478#[doc = " hb_draw_quadratic_to_func_t:\n @dfuncs: draw functions object\n @draw_data: The data accompanying the draw functions in hb_font_draw_glyph()\n @st: current draw state\n @control_x: X component of control point\n @control_y: Y component of control point\n @to_x: X component of target point\n @to_y: Y component of target point\n @user_data: User data pointer passed to hb_draw_funcs_set_quadratic_to_func()\n\n A virtual method for the #hb_draw_funcs_t to perform a \"quadratic-to\" draw\n operation.\n\n Since: 4.0.0\n"]
1479pub type hb_draw_quadratic_to_func_t = ::std::option::Option<
1480 unsafe extern "C" fn(
1481 dfuncs: *mut hb_draw_funcs_t,
1482 draw_data: *mut ::std::os::raw::c_void,
1483 st: *mut hb_draw_state_t,
1484 control_x: f32,
1485 control_y: f32,
1486 to_x: f32,
1487 to_y: f32,
1488 user_data: *mut ::std::os::raw::c_void,
1489 ),
1490>;
1491#[doc = " hb_draw_cubic_to_func_t:\n @dfuncs: draw functions object\n @draw_data: The data accompanying the draw functions in hb_font_draw_glyph()\n @st: current draw state\n @control1_x: X component of first control point\n @control1_y: Y component of first control point\n @control2_x: X component of second control point\n @control2_y: Y component of second control point\n @to_x: X component of target point\n @to_y: Y component of target point\n @user_data: User data pointer passed to hb_draw_funcs_set_cubic_to_func()\n\n A virtual method for the #hb_draw_funcs_t to perform a \"cubic-to\" draw\n operation.\n\n Since: 4.0.0\n"]
1492pub type hb_draw_cubic_to_func_t = ::std::option::Option<
1493 unsafe extern "C" fn(
1494 dfuncs: *mut hb_draw_funcs_t,
1495 draw_data: *mut ::std::os::raw::c_void,
1496 st: *mut hb_draw_state_t,
1497 control1_x: f32,
1498 control1_y: f32,
1499 control2_x: f32,
1500 control2_y: f32,
1501 to_x: f32,
1502 to_y: f32,
1503 user_data: *mut ::std::os::raw::c_void,
1504 ),
1505>;
1506#[doc = " hb_draw_close_path_func_t:\n @dfuncs: draw functions object\n @draw_data: The data accompanying the draw functions in hb_font_draw_glyph()\n @st: current draw state\n @user_data: User data pointer passed to hb_draw_funcs_set_close_path_func()\n\n A virtual method for the #hb_draw_funcs_t to perform a \"close-path\" draw\n operation.\n\n Since: 4.0.0\n"]
1507pub type hb_draw_close_path_func_t = ::std::option::Option<
1508 unsafe extern "C" fn(
1509 dfuncs: *mut hb_draw_funcs_t,
1510 draw_data: *mut ::std::os::raw::c_void,
1511 st: *mut hb_draw_state_t,
1512 user_data: *mut ::std::os::raw::c_void,
1513 ),
1514>;
1515extern "C" {
1516 #[doc = " hb_draw_funcs_set_move_to_func:\n @dfuncs: draw functions object\n @func: (closure user_data) (destroy destroy) (scope notified): move-to callback\n @user_data: Data to pass to @func\n @destroy: (nullable): The function to call when @user_data is not needed anymore\n\n Sets move-to callback to the draw functions object.\n\n Since: 4.0.0"]
1517 pub fn hb_draw_funcs_set_move_to_func(
1518 dfuncs: *mut hb_draw_funcs_t,
1519 func: hb_draw_move_to_func_t,
1520 user_data: *mut ::std::os::raw::c_void,
1521 destroy: hb_destroy_func_t,
1522 );
1523}
1524extern "C" {
1525 #[doc = " hb_draw_funcs_set_line_to_func:\n @dfuncs: draw functions object\n @func: (closure user_data) (destroy destroy) (scope notified): line-to callback\n @user_data: Data to pass to @func\n @destroy: (nullable): The function to call when @user_data is not needed anymore\n\n Sets line-to callback to the draw functions object.\n\n Since: 4.0.0"]
1526 pub fn hb_draw_funcs_set_line_to_func(
1527 dfuncs: *mut hb_draw_funcs_t,
1528 func: hb_draw_line_to_func_t,
1529 user_data: *mut ::std::os::raw::c_void,
1530 destroy: hb_destroy_func_t,
1531 );
1532}
1533extern "C" {
1534 #[doc = " hb_draw_funcs_set_quadratic_to_func:\n @dfuncs: draw functions object\n @func: (closure user_data) (destroy destroy) (scope notified): quadratic-to callback\n @user_data: Data to pass to @func\n @destroy: (nullable): The function to call when @user_data is not needed anymore\n\n Sets quadratic-to callback to the draw functions object.\n\n Since: 4.0.0"]
1535 pub fn hb_draw_funcs_set_quadratic_to_func(
1536 dfuncs: *mut hb_draw_funcs_t,
1537 func: hb_draw_quadratic_to_func_t,
1538 user_data: *mut ::std::os::raw::c_void,
1539 destroy: hb_destroy_func_t,
1540 );
1541}
1542extern "C" {
1543 #[doc = " hb_draw_funcs_set_cubic_to_func:\n @dfuncs: draw functions\n @func: (closure user_data) (destroy destroy) (scope notified): cubic-to callback\n @user_data: Data to pass to @func\n @destroy: (nullable): The function to call when @user_data is not needed anymore\n\n Sets cubic-to callback to the draw functions object.\n\n Since: 4.0.0"]
1544 pub fn hb_draw_funcs_set_cubic_to_func(
1545 dfuncs: *mut hb_draw_funcs_t,
1546 func: hb_draw_cubic_to_func_t,
1547 user_data: *mut ::std::os::raw::c_void,
1548 destroy: hb_destroy_func_t,
1549 );
1550}
1551extern "C" {
1552 #[doc = " hb_draw_funcs_set_close_path_func:\n @dfuncs: draw functions object\n @func: (closure user_data) (destroy destroy) (scope notified): close-path callback\n @user_data: Data to pass to @func\n @destroy: (nullable): The function to call when @user_data is not needed anymore\n\n Sets close-path callback to the draw functions object.\n\n Since: 4.0.0"]
1553 pub fn hb_draw_funcs_set_close_path_func(
1554 dfuncs: *mut hb_draw_funcs_t,
1555 func: hb_draw_close_path_func_t,
1556 user_data: *mut ::std::os::raw::c_void,
1557 destroy: hb_destroy_func_t,
1558 );
1559}
1560extern "C" {
1561 pub fn hb_draw_funcs_create() -> *mut hb_draw_funcs_t;
1562}
1563extern "C" {
1564 pub fn hb_draw_funcs_get_empty() -> *mut hb_draw_funcs_t;
1565}
1566extern "C" {
1567 pub fn hb_draw_funcs_reference(dfuncs: *mut hb_draw_funcs_t) -> *mut hb_draw_funcs_t;
1568}
1569extern "C" {
1570 pub fn hb_draw_funcs_destroy(dfuncs: *mut hb_draw_funcs_t);
1571}
1572extern "C" {
1573 pub fn hb_draw_funcs_set_user_data(
1574 dfuncs: *mut hb_draw_funcs_t,
1575 key: *mut hb_user_data_key_t,
1576 data: *mut ::std::os::raw::c_void,
1577 destroy: hb_destroy_func_t,
1578 replace: hb_bool_t,
1579 ) -> hb_bool_t;
1580}
1581extern "C" {
1582 pub fn hb_draw_funcs_get_user_data(
1583 dfuncs: *const hb_draw_funcs_t,
1584 key: *mut hb_user_data_key_t,
1585 ) -> *mut ::std::os::raw::c_void;
1586}
1587extern "C" {
1588 pub fn hb_draw_funcs_make_immutable(dfuncs: *mut hb_draw_funcs_t);
1589}
1590extern "C" {
1591 pub fn hb_draw_funcs_is_immutable(dfuncs: *mut hb_draw_funcs_t) -> hb_bool_t;
1592}
1593extern "C" {
1594 pub fn hb_draw_move_to(
1595 dfuncs: *mut hb_draw_funcs_t,
1596 draw_data: *mut ::std::os::raw::c_void,
1597 st: *mut hb_draw_state_t,
1598 to_x: f32,
1599 to_y: f32,
1600 );
1601}
1602extern "C" {
1603 pub fn hb_draw_line_to(
1604 dfuncs: *mut hb_draw_funcs_t,
1605 draw_data: *mut ::std::os::raw::c_void,
1606 st: *mut hb_draw_state_t,
1607 to_x: f32,
1608 to_y: f32,
1609 );
1610}
1611extern "C" {
1612 pub fn hb_draw_quadratic_to(
1613 dfuncs: *mut hb_draw_funcs_t,
1614 draw_data: *mut ::std::os::raw::c_void,
1615 st: *mut hb_draw_state_t,
1616 control_x: f32,
1617 control_y: f32,
1618 to_x: f32,
1619 to_y: f32,
1620 );
1621}
1622extern "C" {
1623 pub fn hb_draw_cubic_to(
1624 dfuncs: *mut hb_draw_funcs_t,
1625 draw_data: *mut ::std::os::raw::c_void,
1626 st: *mut hb_draw_state_t,
1627 control1_x: f32,
1628 control1_y: f32,
1629 control2_x: f32,
1630 control2_y: f32,
1631 to_x: f32,
1632 to_y: f32,
1633 );
1634}
1635extern "C" {
1636 pub fn hb_draw_close_path(
1637 dfuncs: *mut hb_draw_funcs_t,
1638 draw_data: *mut ::std::os::raw::c_void,
1639 st: *mut hb_draw_state_t,
1640 );
1641}
1642#[repr(C)]
1643#[derive(Debug, Copy, Clone)]
1644pub struct hb_paint_funcs_t {
1645 _unused: [u8; 0],
1646}
1647extern "C" {
1648 pub fn hb_paint_funcs_create() -> *mut hb_paint_funcs_t;
1649}
1650extern "C" {
1651 pub fn hb_paint_funcs_get_empty() -> *mut hb_paint_funcs_t;
1652}
1653extern "C" {
1654 pub fn hb_paint_funcs_reference(funcs: *mut hb_paint_funcs_t) -> *mut hb_paint_funcs_t;
1655}
1656extern "C" {
1657 pub fn hb_paint_funcs_destroy(funcs: *mut hb_paint_funcs_t);
1658}
1659extern "C" {
1660 pub fn hb_paint_funcs_set_user_data(
1661 funcs: *mut hb_paint_funcs_t,
1662 key: *mut hb_user_data_key_t,
1663 data: *mut ::std::os::raw::c_void,
1664 destroy: hb_destroy_func_t,
1665 replace: hb_bool_t,
1666 ) -> hb_bool_t;
1667}
1668extern "C" {
1669 pub fn hb_paint_funcs_get_user_data(
1670 funcs: *const hb_paint_funcs_t,
1671 key: *mut hb_user_data_key_t,
1672 ) -> *mut ::std::os::raw::c_void;
1673}
1674extern "C" {
1675 pub fn hb_paint_funcs_make_immutable(funcs: *mut hb_paint_funcs_t);
1676}
1677extern "C" {
1678 pub fn hb_paint_funcs_is_immutable(funcs: *mut hb_paint_funcs_t) -> hb_bool_t;
1679}
1680#[doc = " hb_paint_push_transform_func_t:\n @funcs: paint functions object\n @paint_data: The data accompanying the paint functions in hb_font_paint_glyph()\n @xx: xx component of the transform matrix\n @yx: yx component of the transform matrix\n @xy: xy component of the transform matrix\n @yy: yy component of the transform matrix\n @dx: dx component of the transform matrix\n @dy: dy component of the transform matrix\n @user_data: User data pointer passed to hb_paint_funcs_set_push_transform_func()\n\n A virtual method for the #hb_paint_funcs_t to apply\n a transform to subsequent paint calls.\n\n This transform is applied after the current transform,\n and remains in effect until a matching call to\n the #hb_paint_funcs_pop_transform_func_t vfunc.\n\n Since: 7.0.0"]
1681pub type hb_paint_push_transform_func_t = ::std::option::Option<
1682 unsafe extern "C" fn(
1683 funcs: *mut hb_paint_funcs_t,
1684 paint_data: *mut ::std::os::raw::c_void,
1685 xx: f32,
1686 yx: f32,
1687 xy: f32,
1688 yy: f32,
1689 dx: f32,
1690 dy: f32,
1691 user_data: *mut ::std::os::raw::c_void,
1692 ),
1693>;
1694#[doc = " hb_paint_pop_transform_func_t:\n @funcs: paint functions object\n @paint_data: The data accompanying the paint functions in hb_font_paint_glyph()\n @user_data: User data pointer passed to hb_paint_funcs_set_pop_transform_func()\n\n A virtual method for the #hb_paint_funcs_t to undo\n the effect of a prior call to the #hb_paint_funcs_push_transform_func_t\n vfunc.\n\n Since: 7.0.0"]
1695pub type hb_paint_pop_transform_func_t = ::std::option::Option<
1696 unsafe extern "C" fn(
1697 funcs: *mut hb_paint_funcs_t,
1698 paint_data: *mut ::std::os::raw::c_void,
1699 user_data: *mut ::std::os::raw::c_void,
1700 ),
1701>;
1702#[doc = " hb_paint_color_glyph_func_t:\n @funcs: paint functions object\n @paint_data: The data accompanying the paint functions in hb_font_paint_glyph()\n @glyph: the glyph ID\n @font: the font\n @user_data: User data pointer passed to hb_paint_funcs_set_color_glyph_func()\n\n A virtual method for the #hb_paint_funcs_t to render a color glyph by glyph index.\n\n Return value: %true if the glyph was painted, %false otherwise.\n\n Since: 8.2.0"]
1703pub type hb_paint_color_glyph_func_t = ::std::option::Option<
1704 unsafe extern "C" fn(
1705 funcs: *mut hb_paint_funcs_t,
1706 paint_data: *mut ::std::os::raw::c_void,
1707 glyph: hb_codepoint_t,
1708 font: *mut hb_font_t,
1709 user_data: *mut ::std::os::raw::c_void,
1710 ) -> hb_bool_t,
1711>;
1712#[doc = " hb_paint_push_clip_glyph_func_t:\n @funcs: paint functions object\n @paint_data: The data accompanying the paint functions in hb_font_paint_glyph()\n @glyph: the glyph ID\n @font: the font\n @user_data: User data pointer passed to hb_paint_funcs_set_push_clip_glyph_func()\n\n A virtual method for the #hb_paint_funcs_t to clip\n subsequent paint calls to the outline of a glyph.\n\n The coordinates of the glyph outline are interpreted according\n to the current transform.\n\n This clip is applied in addition to the current clip,\n and remains in effect until a matching call to\n the #hb_paint_funcs_pop_clip_func_t vfunc.\n\n Since: 7.0.0"]
1713pub type hb_paint_push_clip_glyph_func_t = ::std::option::Option<
1714 unsafe extern "C" fn(
1715 funcs: *mut hb_paint_funcs_t,
1716 paint_data: *mut ::std::os::raw::c_void,
1717 glyph: hb_codepoint_t,
1718 font: *mut hb_font_t,
1719 user_data: *mut ::std::os::raw::c_void,
1720 ),
1721>;
1722#[doc = " hb_paint_push_clip_rectangle_func_t:\n @funcs: paint functions object\n @paint_data: The data accompanying the paint functions in hb_font_paint_glyph()\n @xmin: min X for the rectangle\n @ymin: min Y for the rectangle\n @xmax: max X for the rectangle\n @ymax: max Y for the rectangle\n @user_data: User data pointer passed to hb_paint_funcs_set_push_clip_rectangle_func()\n\n A virtual method for the #hb_paint_funcs_t to clip\n subsequent paint calls to a rectangle.\n\n The coordinates of the rectangle are interpreted according\n to the current transform.\n\n This clip is applied in addition to the current clip,\n and remains in effect until a matching call to\n the #hb_paint_funcs_pop_clip_func_t vfunc.\n\n Since: 7.0.0"]
1723pub type hb_paint_push_clip_rectangle_func_t = ::std::option::Option<
1724 unsafe extern "C" fn(
1725 funcs: *mut hb_paint_funcs_t,
1726 paint_data: *mut ::std::os::raw::c_void,
1727 xmin: f32,
1728 ymin: f32,
1729 xmax: f32,
1730 ymax: f32,
1731 user_data: *mut ::std::os::raw::c_void,
1732 ),
1733>;
1734#[doc = " hb_paint_pop_clip_func_t:\n @funcs: paint functions object\n @paint_data: The data accompanying the paint functions in hb_font_paint_glyph()\n @user_data: User data pointer passed to hb_paint_funcs_set_pop_clip_func()\n\n A virtual method for the #hb_paint_funcs_t to undo\n the effect of a prior call to the #hb_paint_funcs_push_clip_glyph_func_t\n or #hb_paint_funcs_push_clip_rectangle_func_t vfuncs.\n\n Since: 7.0.0"]
1735pub type hb_paint_pop_clip_func_t = ::std::option::Option<
1736 unsafe extern "C" fn(
1737 funcs: *mut hb_paint_funcs_t,
1738 paint_data: *mut ::std::os::raw::c_void,
1739 user_data: *mut ::std::os::raw::c_void,
1740 ),
1741>;
1742#[doc = " hb_paint_color_func_t:\n @funcs: paint functions object\n @paint_data: The data accompanying the paint functions in hb_font_paint_glyph()\n @is_foreground: whether the color is the foreground\n @color: The color to use, unpremultiplied\n @user_data: User data pointer passed to hb_paint_funcs_set_color_func()\n\n A virtual method for the #hb_paint_funcs_t to paint a\n color everywhere within the current clip.\n\n Since: 7.0.0"]
1743pub type hb_paint_color_func_t = ::std::option::Option<
1744 unsafe extern "C" fn(
1745 funcs: *mut hb_paint_funcs_t,
1746 paint_data: *mut ::std::os::raw::c_void,
1747 is_foreground: hb_bool_t,
1748 color: hb_color_t,
1749 user_data: *mut ::std::os::raw::c_void,
1750 ),
1751>;
1752#[doc = " hb_paint_image_func_t:\n @funcs: paint functions object\n @paint_data: The data accompanying the paint functions in hb_font_paint_glyph()\n @image: the image data\n @width: width of the raster image in pixels, or 0\n @height: height of the raster image in pixels, or 0\n @format: the image format as a tag\n @slant: the synthetic slant ratio to be applied to the image during rendering\n @extents: (nullable): glyph extents for desired rendering\n @user_data: User data pointer passed to hb_paint_funcs_set_image_func()\n\n A virtual method for the #hb_paint_funcs_t to paint a glyph image.\n\n This method is called for glyphs with image blobs in the CBDT,\n sbix or SVG tables. The @format identifies the kind of data that\n is contained in @image. Possible values include #HB_PAINT_IMAGE_FORMAT_PNG,\n #HB_PAINT_IMAGE_FORMAT_SVG and #HB_PAINT_IMAGE_FORMAT_BGRA.\n\n The image dimensions and glyph extents are provided if available,\n and should be used to size and position the image.\n\n Return value: Whether the operation was successful.\n\n Since: 7.0.0"]
1753pub type hb_paint_image_func_t = ::std::option::Option<
1754 unsafe extern "C" fn(
1755 funcs: *mut hb_paint_funcs_t,
1756 paint_data: *mut ::std::os::raw::c_void,
1757 image: *mut hb_blob_t,
1758 width: ::std::os::raw::c_uint,
1759 height: ::std::os::raw::c_uint,
1760 format: hb_tag_t,
1761 slant: f32,
1762 extents: *mut hb_glyph_extents_t,
1763 user_data: *mut ::std::os::raw::c_void,
1764 ) -> hb_bool_t,
1765>;
1766#[doc = " hb_color_stop_t:\n @offset: the offset of the color stop\n @is_foreground: whether the color is the foreground\n @color: the color, unpremultiplied\n\n Information about a color stop on a color line.\n\n Color lines typically have offsets ranging between 0 and 1,\n but that is not required.\n\n Note: despite @color being unpremultiplied here, interpolation in\n gradients shall happen in premultiplied space. See the OpenType spec\n [COLR](https://learn.microsoft.com/en-us/typography/opentype/spec/colr)\n section for details.\n\n Since: 7.0.0"]
1767#[repr(C)]
1768#[derive(Debug, Copy, Clone)]
1769pub struct hb_color_stop_t {
1770 pub offset: f32,
1771 pub is_foreground: hb_bool_t,
1772 pub color: hb_color_t,
1773}
1774#[test]
1775fn bindgen_test_layout_hb_color_stop_t() {
1776 const UNINIT: ::std::mem::MaybeUninit<hb_color_stop_t> = ::std::mem::MaybeUninit::uninit();
1777 let ptr = UNINIT.as_ptr();
1778 assert_eq!(
1779 ::std::mem::size_of::<hb_color_stop_t>(),
1780 12usize,
1781 concat!("Size of: ", stringify!(hb_color_stop_t))
1782 );
1783 assert_eq!(
1784 ::std::mem::align_of::<hb_color_stop_t>(),
1785 4usize,
1786 concat!("Alignment of ", stringify!(hb_color_stop_t))
1787 );
1788 assert_eq!(
1789 unsafe { ::std::ptr::addr_of!((*ptr).offset) as usize - ptr as usize },
1790 0usize,
1791 concat!("Offset of field: ", stringify!(hb_color_stop_t), "::", stringify!(offset))
1792 );
1793 assert_eq!(
1794 unsafe { ::std::ptr::addr_of!((*ptr).is_foreground) as usize - ptr as usize },
1795 4usize,
1796 concat!(
1797 "Offset of field: ",
1798 stringify!(hb_color_stop_t),
1799 "::",
1800 stringify!(is_foreground)
1801 )
1802 );
1803 assert_eq!(
1804 unsafe { ::std::ptr::addr_of!((*ptr).color) as usize - ptr as usize },
1805 8usize,
1806 concat!("Offset of field: ", stringify!(hb_color_stop_t), "::", stringify!(color))
1807 );
1808}
1809pub const hb_paint_extend_t_HB_PAINT_EXTEND_PAD: hb_paint_extend_t = 0;
1810pub const hb_paint_extend_t_HB_PAINT_EXTEND_REPEAT: hb_paint_extend_t = 1;
1811pub const hb_paint_extend_t_HB_PAINT_EXTEND_REFLECT: hb_paint_extend_t = 2;
1812#[doc = " hb_paint_extend_t:\n @HB_PAINT_EXTEND_PAD: Outside the defined interval,\n the color of the closest color stop is used.\n @HB_PAINT_EXTEND_REPEAT: The color line is repeated over\n repeated multiples of the defined interval\n @HB_PAINT_EXTEND_REFLECT: The color line is repeated over\n repeated intervals, as for the repeat mode.\n However, in each repeated interval, the ordering of\n color stops is the reverse of the adjacent interval.\n\n The values of this enumeration determine how color values\n outside the minimum and maximum defined offset on a #hb_color_line_t\n are determined.\n\n See the OpenType spec [COLR](https://learn.microsoft.com/en-us/typography/opentype/spec/colr)\n section for details.\n\n Since: 7.0.0"]
1813pub type hb_paint_extend_t = ::std::os::raw::c_uint;
1814#[doc = " hb_color_line_get_color_stops_func_t:\n @color_line: a #hb_color_line_t object\n @color_line_data: the data accompanying @color_line\n @start: the index of the first color stop to return\n @count: (inout) (optional): Input = the maximum number of feature tags to return;\n Output = the actual number of feature tags returned (may be zero)\n @color_stops: (out) (array length=count) (optional): Array of #hb_color_stop_t to populate\n @user_data: the data accompanying this method\n\n A virtual method for the #hb_color_line_t to fetch color stops.\n\n Return value: the total number of color stops in @color_line\n\n Since: 7.0.0"]
1815pub type hb_color_line_get_color_stops_func_t = ::std::option::Option<
1816 unsafe extern "C" fn(
1817 color_line: *mut hb_color_line_t,
1818 color_line_data: *mut ::std::os::raw::c_void,
1819 start: ::std::os::raw::c_uint,
1820 count: *mut ::std::os::raw::c_uint,
1821 color_stops: *mut hb_color_stop_t,
1822 user_data: *mut ::std::os::raw::c_void,
1823 ) -> ::std::os::raw::c_uint,
1824>;
1825#[doc = " hb_color_line_get_extend_func_t:\n @color_line: a #hb_color_line_t object\n @color_line_data: the data accompanying @color_line\n @user_data: the data accompanying this method\n\n A virtual method for the @hb_color_line_t to fetches the extend mode.\n\n Return value: the extend mode of @color_line\n\n Since: 7.0.0"]
1826pub type hb_color_line_get_extend_func_t = ::std::option::Option<
1827 unsafe extern "C" fn(
1828 color_line: *mut hb_color_line_t,
1829 color_line_data: *mut ::std::os::raw::c_void,
1830 user_data: *mut ::std::os::raw::c_void,
1831 ) -> hb_paint_extend_t,
1832>;
1833#[doc = " hb_color_line_t:\n\n A struct containing color information for a gradient.\n\n Since: 7.0.0"]
1834#[repr(C)]
1835#[derive(Debug, Copy, Clone)]
1836pub struct hb_color_line_t {
1837 pub data: *mut ::std::os::raw::c_void,
1838 pub get_color_stops: hb_color_line_get_color_stops_func_t,
1839 pub get_color_stops_user_data: *mut ::std::os::raw::c_void,
1840 pub get_extend: hb_color_line_get_extend_func_t,
1841 pub get_extend_user_data: *mut ::std::os::raw::c_void,
1842 pub reserved0: *mut ::std::os::raw::c_void,
1843 pub reserved1: *mut ::std::os::raw::c_void,
1844 pub reserved2: *mut ::std::os::raw::c_void,
1845 pub reserved3: *mut ::std::os::raw::c_void,
1846 pub reserved5: *mut ::std::os::raw::c_void,
1847 pub reserved6: *mut ::std::os::raw::c_void,
1848 pub reserved7: *mut ::std::os::raw::c_void,
1849 pub reserved8: *mut ::std::os::raw::c_void,
1850}
1851#[test]
1852fn bindgen_test_layout_hb_color_line_t() {
1853 const UNINIT: ::std::mem::MaybeUninit<hb_color_line_t> = ::std::mem::MaybeUninit::uninit();
1854 let ptr = UNINIT.as_ptr();
1855 assert_eq!(
1856 ::std::mem::size_of::<hb_color_line_t>(),
1857 104usize,
1858 concat!("Size of: ", stringify!(hb_color_line_t))
1859 );
1860 assert_eq!(
1861 ::std::mem::align_of::<hb_color_line_t>(),
1862 8usize,
1863 concat!("Alignment of ", stringify!(hb_color_line_t))
1864 );
1865 assert_eq!(
1866 unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize },
1867 0usize,
1868 concat!("Offset of field: ", stringify!(hb_color_line_t), "::", stringify!(data))
1869 );
1870 assert_eq!(
1871 unsafe { ::std::ptr::addr_of!((*ptr).get_color_stops) as usize - ptr as usize },
1872 8usize,
1873 concat!(
1874 "Offset of field: ",
1875 stringify!(hb_color_line_t),
1876 "::",
1877 stringify!(get_color_stops)
1878 )
1879 );
1880 assert_eq!(
1881 unsafe { ::std::ptr::addr_of!((*ptr).get_color_stops_user_data) as usize - ptr as usize },
1882 16usize,
1883 concat!(
1884 "Offset of field: ",
1885 stringify!(hb_color_line_t),
1886 "::",
1887 stringify!(get_color_stops_user_data)
1888 )
1889 );
1890 assert_eq!(
1891 unsafe { ::std::ptr::addr_of!((*ptr).get_extend) as usize - ptr as usize },
1892 24usize,
1893 concat!("Offset of field: ", stringify!(hb_color_line_t), "::", stringify!(get_extend))
1894 );
1895 assert_eq!(
1896 unsafe { ::std::ptr::addr_of!((*ptr).get_extend_user_data) as usize - ptr as usize },
1897 32usize,
1898 concat!(
1899 "Offset of field: ",
1900 stringify!(hb_color_line_t),
1901 "::",
1902 stringify!(get_extend_user_data)
1903 )
1904 );
1905 assert_eq!(
1906 unsafe { ::std::ptr::addr_of!((*ptr).reserved0) as usize - ptr as usize },
1907 40usize,
1908 concat!("Offset of field: ", stringify!(hb_color_line_t), "::", stringify!(reserved0))
1909 );
1910 assert_eq!(
1911 unsafe { ::std::ptr::addr_of!((*ptr).reserved1) as usize - ptr as usize },
1912 48usize,
1913 concat!("Offset of field: ", stringify!(hb_color_line_t), "::", stringify!(reserved1))
1914 );
1915 assert_eq!(
1916 unsafe { ::std::ptr::addr_of!((*ptr).reserved2) as usize - ptr as usize },
1917 56usize,
1918 concat!("Offset of field: ", stringify!(hb_color_line_t), "::", stringify!(reserved2))
1919 );
1920 assert_eq!(
1921 unsafe { ::std::ptr::addr_of!((*ptr).reserved3) as usize - ptr as usize },
1922 64usize,
1923 concat!("Offset of field: ", stringify!(hb_color_line_t), "::", stringify!(reserved3))
1924 );
1925 assert_eq!(
1926 unsafe { ::std::ptr::addr_of!((*ptr).reserved5) as usize - ptr as usize },
1927 72usize,
1928 concat!("Offset of field: ", stringify!(hb_color_line_t), "::", stringify!(reserved5))
1929 );
1930 assert_eq!(
1931 unsafe { ::std::ptr::addr_of!((*ptr).reserved6) as usize - ptr as usize },
1932 80usize,
1933 concat!("Offset of field: ", stringify!(hb_color_line_t), "::", stringify!(reserved6))
1934 );
1935 assert_eq!(
1936 unsafe { ::std::ptr::addr_of!((*ptr).reserved7) as usize - ptr as usize },
1937 88usize,
1938 concat!("Offset of field: ", stringify!(hb_color_line_t), "::", stringify!(reserved7))
1939 );
1940 assert_eq!(
1941 unsafe { ::std::ptr::addr_of!((*ptr).reserved8) as usize - ptr as usize },
1942 96usize,
1943 concat!("Offset of field: ", stringify!(hb_color_line_t), "::", stringify!(reserved8))
1944 );
1945}
1946extern "C" {
1947 pub fn hb_color_line_get_color_stops(
1948 color_line: *mut hb_color_line_t,
1949 start: ::std::os::raw::c_uint,
1950 count: *mut ::std::os::raw::c_uint,
1951 color_stops: *mut hb_color_stop_t,
1952 ) -> ::std::os::raw::c_uint;
1953}
1954extern "C" {
1955 pub fn hb_color_line_get_extend(color_line: *mut hb_color_line_t) -> hb_paint_extend_t;
1956}
1957#[doc = " hb_paint_linear_gradient_func_t:\n @funcs: paint functions object\n @paint_data: The data accompanying the paint functions in hb_font_paint_glyph()\n @color_line: Color information for the gradient\n @x0: X coordinate of the first point\n @y0: Y coordinate of the first point\n @x1: X coordinate of the second point\n @y1: Y coordinate of the second point\n @x2: X coordinate of the third point\n @y2: Y coordinate of the third point\n @user_data: User data pointer passed to hb_paint_funcs_set_linear_gradient_func()\n\n A virtual method for the #hb_paint_funcs_t to paint a linear\n gradient everywhere within the current clip.\n\n The @color_line object contains information about the colors of the gradients.\n It is only valid for the duration of the callback, you cannot keep it around.\n\n The coordinates of the points are interpreted according\n to the current transform.\n\n See the OpenType spec [COLR](https://learn.microsoft.com/en-us/typography/opentype/spec/colr)\n section for details on how the points define the direction\n of the gradient, and how to interpret the @color_line.\n\n Since: 7.0.0"]
1958pub type hb_paint_linear_gradient_func_t = ::std::option::Option<
1959 unsafe extern "C" fn(
1960 funcs: *mut hb_paint_funcs_t,
1961 paint_data: *mut ::std::os::raw::c_void,
1962 color_line: *mut hb_color_line_t,
1963 x0: f32,
1964 y0: f32,
1965 x1: f32,
1966 y1: f32,
1967 x2: f32,
1968 y2: f32,
1969 user_data: *mut ::std::os::raw::c_void,
1970 ),
1971>;
1972#[doc = " hb_paint_radial_gradient_func_t:\n @funcs: paint functions object\n @paint_data: The data accompanying the paint functions in hb_font_paint_glyph()\n @color_line: Color information for the gradient\n @x0: X coordinate of the first circle's center\n @y0: Y coordinate of the first circle's center\n @r0: radius of the first circle\n @x1: X coordinate of the second circle's center\n @y1: Y coordinate of the second circle's center\n @r1: radius of the second circle\n @user_data: User data pointer passed to hb_paint_funcs_set_radial_gradient_func()\n\n A virtual method for the #hb_paint_funcs_t to paint a radial\n gradient everywhere within the current clip.\n\n The @color_line object contains information about the colors of the gradients.\n It is only valid for the duration of the callback, you cannot keep it around.\n\n The coordinates of the points are interpreted according\n to the current transform.\n\n See the OpenType spec [COLR](https://learn.microsoft.com/en-us/typography/opentype/spec/colr)\n section for details on how the points define the direction\n of the gradient, and how to interpret the @color_line.\n\n Since: 7.0.0"]
1973pub type hb_paint_radial_gradient_func_t = ::std::option::Option<
1974 unsafe extern "C" fn(
1975 funcs: *mut hb_paint_funcs_t,
1976 paint_data: *mut ::std::os::raw::c_void,
1977 color_line: *mut hb_color_line_t,
1978 x0: f32,
1979 y0: f32,
1980 r0: f32,
1981 x1: f32,
1982 y1: f32,
1983 r1: f32,
1984 user_data: *mut ::std::os::raw::c_void,
1985 ),
1986>;
1987#[doc = " hb_paint_sweep_gradient_func_t:\n @funcs: paint functions object\n @paint_data: The data accompanying the paint functions in hb_font_paint_glyph()\n @color_line: Color information for the gradient\n @x0: X coordinate of the circle's center\n @y0: Y coordinate of the circle's center\n @start_angle: the start angle, in radians\n @end_angle: the end angle, in radians\n @user_data: User data pointer passed to hb_paint_funcs_set_sweep_gradient_func()\n\n A virtual method for the #hb_paint_funcs_t to paint a sweep\n gradient everywhere within the current clip.\n\n The @color_line object contains information about the colors of the gradients.\n It is only valid for the duration of the callback, you cannot keep it around.\n\n The coordinates of the points are interpreted according\n to the current transform.\n\n See the OpenType spec [COLR](https://learn.microsoft.com/en-us/typography/opentype/spec/colr)\n section for details on how the points define the direction\n of the gradient, and how to interpret the @color_line.\n\n Since: 7.0.0"]
1988pub type hb_paint_sweep_gradient_func_t = ::std::option::Option<
1989 unsafe extern "C" fn(
1990 funcs: *mut hb_paint_funcs_t,
1991 paint_data: *mut ::std::os::raw::c_void,
1992 color_line: *mut hb_color_line_t,
1993 x0: f32,
1994 y0: f32,
1995 start_angle: f32,
1996 end_angle: f32,
1997 user_data: *mut ::std::os::raw::c_void,
1998 ),
1999>;
2000pub const hb_paint_composite_mode_t_HB_PAINT_COMPOSITE_MODE_CLEAR: hb_paint_composite_mode_t = 0;
2001pub const hb_paint_composite_mode_t_HB_PAINT_COMPOSITE_MODE_SRC: hb_paint_composite_mode_t = 1;
2002pub const hb_paint_composite_mode_t_HB_PAINT_COMPOSITE_MODE_DEST: hb_paint_composite_mode_t = 2;
2003pub const hb_paint_composite_mode_t_HB_PAINT_COMPOSITE_MODE_SRC_OVER: hb_paint_composite_mode_t = 3;
2004pub const hb_paint_composite_mode_t_HB_PAINT_COMPOSITE_MODE_DEST_OVER: hb_paint_composite_mode_t =
2005 4;
2006pub const hb_paint_composite_mode_t_HB_PAINT_COMPOSITE_MODE_SRC_IN: hb_paint_composite_mode_t = 5;
2007pub const hb_paint_composite_mode_t_HB_PAINT_COMPOSITE_MODE_DEST_IN: hb_paint_composite_mode_t = 6;
2008pub const hb_paint_composite_mode_t_HB_PAINT_COMPOSITE_MODE_SRC_OUT: hb_paint_composite_mode_t = 7;
2009pub const hb_paint_composite_mode_t_HB_PAINT_COMPOSITE_MODE_DEST_OUT: hb_paint_composite_mode_t = 8;
2010pub const hb_paint_composite_mode_t_HB_PAINT_COMPOSITE_MODE_SRC_ATOP: hb_paint_composite_mode_t = 9;
2011pub const hb_paint_composite_mode_t_HB_PAINT_COMPOSITE_MODE_DEST_ATOP: hb_paint_composite_mode_t =
2012 10;
2013pub const hb_paint_composite_mode_t_HB_PAINT_COMPOSITE_MODE_XOR: hb_paint_composite_mode_t = 11;
2014pub const hb_paint_composite_mode_t_HB_PAINT_COMPOSITE_MODE_PLUS: hb_paint_composite_mode_t = 12;
2015pub const hb_paint_composite_mode_t_HB_PAINT_COMPOSITE_MODE_SCREEN: hb_paint_composite_mode_t = 13;
2016pub const hb_paint_composite_mode_t_HB_PAINT_COMPOSITE_MODE_OVERLAY: hb_paint_composite_mode_t = 14;
2017pub const hb_paint_composite_mode_t_HB_PAINT_COMPOSITE_MODE_DARKEN: hb_paint_composite_mode_t = 15;
2018pub const hb_paint_composite_mode_t_HB_PAINT_COMPOSITE_MODE_LIGHTEN: hb_paint_composite_mode_t = 16;
2019pub const hb_paint_composite_mode_t_HB_PAINT_COMPOSITE_MODE_COLOR_DODGE: hb_paint_composite_mode_t =
2020 17;
2021pub const hb_paint_composite_mode_t_HB_PAINT_COMPOSITE_MODE_COLOR_BURN: hb_paint_composite_mode_t =
2022 18;
2023pub const hb_paint_composite_mode_t_HB_PAINT_COMPOSITE_MODE_HARD_LIGHT: hb_paint_composite_mode_t =
2024 19;
2025pub const hb_paint_composite_mode_t_HB_PAINT_COMPOSITE_MODE_SOFT_LIGHT: hb_paint_composite_mode_t =
2026 20;
2027pub const hb_paint_composite_mode_t_HB_PAINT_COMPOSITE_MODE_DIFFERENCE: hb_paint_composite_mode_t =
2028 21;
2029pub const hb_paint_composite_mode_t_HB_PAINT_COMPOSITE_MODE_EXCLUSION: hb_paint_composite_mode_t =
2030 22;
2031pub const hb_paint_composite_mode_t_HB_PAINT_COMPOSITE_MODE_MULTIPLY: hb_paint_composite_mode_t =
2032 23;
2033pub const hb_paint_composite_mode_t_HB_PAINT_COMPOSITE_MODE_HSL_HUE: hb_paint_composite_mode_t = 24;
2034pub const hb_paint_composite_mode_t_HB_PAINT_COMPOSITE_MODE_HSL_SATURATION:
2035 hb_paint_composite_mode_t = 25;
2036pub const hb_paint_composite_mode_t_HB_PAINT_COMPOSITE_MODE_HSL_COLOR: hb_paint_composite_mode_t =
2037 26;
2038pub const hb_paint_composite_mode_t_HB_PAINT_COMPOSITE_MODE_HSL_LUMINOSITY:
2039 hb_paint_composite_mode_t = 27;
2040#[doc = " hb_paint_composite_mode_t:\n @HB_PAINT_COMPOSITE_MODE_CLEAR: clear destination layer (bounded)\n @HB_PAINT_COMPOSITE_MODE_SRC: replace destination layer (bounded)\n @HB_PAINT_COMPOSITE_MODE_SRC_OVER: draw source layer on top of destination layer\n (bounded)\n @HB_PAINT_COMPOSITE_MODE_SRC_IN: draw source where there was destination content\n (unbounded)\n @HB_PAINT_COMPOSITE_MODE_SRC_OUT: draw source where there was no destination\n content (unbounded)\n @HB_PAINT_COMPOSITE_MODE_SRC_ATOP: draw source on top of destination content and\n only there\n @HB_PAINT_COMPOSITE_MODE_DEST: ignore the source\n @HB_PAINT_COMPOSITE_MODE_DEST_OVER: draw destination on top of source\n @HB_PAINT_COMPOSITE_MODE_DEST_IN: leave destination only where there was\n source content (unbounded)\n @HB_PAINT_COMPOSITE_MODE_DEST_OUT: leave destination only where there was no\n source content\n @HB_PAINT_COMPOSITE_MODE_DEST_ATOP: leave destination on top of source content\n and only there (unbounded)\n @HB_PAINT_COMPOSITE_MODE_XOR: source and destination are shown where there is only\n one of them\n @HB_PAINT_COMPOSITE_MODE_PLUS: source and destination layers are accumulated\n @HB_PAINT_COMPOSITE_MODE_MULTIPLY: source and destination layers are multiplied.\n This causes the result to be at least as dark as the darker inputs.\n @HB_PAINT_COMPOSITE_MODE_SCREEN: source and destination are complemented and\n multiplied. This causes the result to be at least as light as the lighter\n inputs.\n @HB_PAINT_COMPOSITE_MODE_OVERLAY: multiplies or screens, depending on the\n lightness of the destination color.\n @HB_PAINT_COMPOSITE_MODE_DARKEN: replaces the destination with the source if it\n is darker, otherwise keeps the source.\n @HB_PAINT_COMPOSITE_MODE_LIGHTEN: replaces the destination with the source if it\n is lighter, otherwise keeps the source.\n @HB_PAINT_COMPOSITE_MODE_COLOR_DODGE: brightens the destination color to reflect\n the source color.\n @HB_PAINT_COMPOSITE_MODE_COLOR_BURN: darkens the destination color to reflect\n the source color.\n @HB_PAINT_COMPOSITE_MODE_HARD_LIGHT: Multiplies or screens, dependent on source\n color.\n @HB_PAINT_COMPOSITE_MODE_SOFT_LIGHT: Darkens or lightens, dependent on source\n color.\n @HB_PAINT_COMPOSITE_MODE_DIFFERENCE: Takes the difference of the source and\n destination color.\n @HB_PAINT_COMPOSITE_MODE_EXCLUSION: Produces an effect similar to difference, but\n with lower contrast.\n @HB_PAINT_COMPOSITE_MODE_HSL_HUE: Creates a color with the hue of the source\n and the saturation and luminosity of the target.\n @HB_PAINT_COMPOSITE_MODE_HSL_SATURATION: Creates a color with the saturation\n of the source and the hue and luminosity of the target. Painting with\n this mode onto a gray area produces no change.\n @HB_PAINT_COMPOSITE_MODE_HSL_COLOR: Creates a color with the hue and saturation\n of the source and the luminosity of the target. This preserves the gray\n levels of the target and is useful for coloring monochrome images or\n tinting color images.\n @HB_PAINT_COMPOSITE_MODE_HSL_LUMINOSITY: Creates a color with the luminosity of\n the source and the hue and saturation of the target. This produces an\n inverse effect to @HB_PAINT_COMPOSITE_MODE_HSL_COLOR.\n\n The values of this enumeration describe the compositing modes\n that can be used when combining temporary redirected drawing\n with the backdrop.\n\n See the OpenType spec [COLR](https://learn.microsoft.com/en-us/typography/opentype/spec/colr)\n section for details.\n\n Since: 7.0.0"]
2041pub type hb_paint_composite_mode_t = ::std::os::raw::c_uint;
2042#[doc = " hb_paint_push_group_func_t:\n @funcs: paint functions object\n @paint_data: The data accompanying the paint functions in hb_font_paint_glyph()\n @user_data: User data pointer passed to hb_paint_funcs_set_push_group_func()\n\n A virtual method for the #hb_paint_funcs_t to use\n an intermediate surface for subsequent paint calls.\n\n The drawing will be redirected to an intermediate surface\n until a matching call to the #hb_paint_funcs_pop_group_func_t\n vfunc.\n\n Since: 7.0.0"]
2043pub type hb_paint_push_group_func_t = ::std::option::Option<
2044 unsafe extern "C" fn(
2045 funcs: *mut hb_paint_funcs_t,
2046 paint_data: *mut ::std::os::raw::c_void,
2047 user_data: *mut ::std::os::raw::c_void,
2048 ),
2049>;
2050#[doc = " hb_paint_pop_group_func_t:\n @funcs: paint functions object\n @paint_data: The data accompanying the paint functions in hb_font_paint_glyph()\n @mode: the compositing mode to use\n @user_data: User data pointer passed to hb_paint_funcs_set_pop_group_func()\n\n A virtual method for the #hb_paint_funcs_t to undo\n the effect of a prior call to the #hb_paint_funcs_push_group_func_t\n vfunc.\n\n This call stops the redirection to the intermediate surface,\n and then composites it on the previous surface, using the\n compositing mode passed to this call.\n\n Since: 7.0.0"]
2051pub type hb_paint_pop_group_func_t = ::std::option::Option<
2052 unsafe extern "C" fn(
2053 funcs: *mut hb_paint_funcs_t,
2054 paint_data: *mut ::std::os::raw::c_void,
2055 mode: hb_paint_composite_mode_t,
2056 user_data: *mut ::std::os::raw::c_void,
2057 ),
2058>;
2059#[doc = " hb_paint_custom_palette_color_func_t:\n @funcs: paint functions object\n @paint_data: The data accompanying the paint functions in hb_font_paint_glyph()\n @color_index: the color index\n @color: (out): fetched color\n @user_data: User data pointer passed to hb_paint_funcs_set_pop_group_func()\n\n A virtual method for the #hb_paint_funcs_t to fetch a color from the custom\n color palette.\n\n Custom palette colors override the colors from the fonts selected color\n palette. It is not necessary to override all palette entries; for entries\n that should be taken from the font palette, return `false`.\n\n This function might get called multiple times, but the custom palette is\n expected to remain unchanged for duration of a hb_font_paint_glyph() call.\n\n Return value: `true` if found, `false` otherwise\n\n Since: 7.0.0"]
2060pub type hb_paint_custom_palette_color_func_t = ::std::option::Option<
2061 unsafe extern "C" fn(
2062 funcs: *mut hb_paint_funcs_t,
2063 paint_data: *mut ::std::os::raw::c_void,
2064 color_index: ::std::os::raw::c_uint,
2065 color: *mut hb_color_t,
2066 user_data: *mut ::std::os::raw::c_void,
2067 ) -> hb_bool_t,
2068>;
2069extern "C" {
2070 #[doc = " hb_paint_funcs_set_push_transform_func:\n @funcs: A paint functions struct\n @func: (closure user_data) (destroy destroy) (scope notified): The push-transform callback\n @user_data: Data to pass to @func\n @destroy: (nullable): Function to call when @user_data is no longer needed\n\n Sets the push-transform callback on the paint functions struct.\n\n Since: 7.0.0"]
2071 pub fn hb_paint_funcs_set_push_transform_func(
2072 funcs: *mut hb_paint_funcs_t,
2073 func: hb_paint_push_transform_func_t,
2074 user_data: *mut ::std::os::raw::c_void,
2075 destroy: hb_destroy_func_t,
2076 );
2077}
2078extern "C" {
2079 #[doc = " hb_paint_funcs_set_pop_transform_func:\n @funcs: A paint functions struct\n @func: (closure user_data) (destroy destroy) (scope notified): The pop-transform callback\n @user_data: Data to pass to @func\n @destroy: (nullable): Function to call when @user_data is no longer needed\n\n Sets the pop-transform callback on the paint functions struct.\n\n Since: 7.0.0"]
2080 pub fn hb_paint_funcs_set_pop_transform_func(
2081 funcs: *mut hb_paint_funcs_t,
2082 func: hb_paint_pop_transform_func_t,
2083 user_data: *mut ::std::os::raw::c_void,
2084 destroy: hb_destroy_func_t,
2085 );
2086}
2087extern "C" {
2088 #[doc = " hb_paint_funcs_set_color_glyph_func:\n @funcs: A paint functions struct\n @func: (closure user_data) (destroy destroy) (scope notified): The color-glyph callback\n @user_data: Data to pass to @func\n @destroy: (nullable): Function to call when @user_data is no longer needed\n\n Sets the color-glyph callback on the paint functions struct.\n\n Since: 8.2.0"]
2089 pub fn hb_paint_funcs_set_color_glyph_func(
2090 funcs: *mut hb_paint_funcs_t,
2091 func: hb_paint_color_glyph_func_t,
2092 user_data: *mut ::std::os::raw::c_void,
2093 destroy: hb_destroy_func_t,
2094 );
2095}
2096extern "C" {
2097 #[doc = " hb_paint_funcs_set_push_clip_glyph_func:\n @funcs: A paint functions struct\n @func: (closure user_data) (destroy destroy) (scope notified): The push-clip-glyph callback\n @user_data: Data to pass to @func\n @destroy: (nullable): Function to call when @user_data is no longer needed\n\n Sets the push-clip-glyph callback on the paint functions struct.\n\n Since: 7.0.0"]
2098 pub fn hb_paint_funcs_set_push_clip_glyph_func(
2099 funcs: *mut hb_paint_funcs_t,
2100 func: hb_paint_push_clip_glyph_func_t,
2101 user_data: *mut ::std::os::raw::c_void,
2102 destroy: hb_destroy_func_t,
2103 );
2104}
2105extern "C" {
2106 #[doc = " hb_paint_funcs_set_push_clip_rectangle_func:\n @funcs: A paint functions struct\n @func: (closure user_data) (destroy destroy) (scope notified): The push-clip-rectangle callback\n @user_data: Data to pass to @func\n @destroy: (nullable): Function to call when @user_data is no longer needed\n\n Sets the push-clip-rect callback on the paint functions struct.\n\n Since: 7.0.0"]
2107 pub fn hb_paint_funcs_set_push_clip_rectangle_func(
2108 funcs: *mut hb_paint_funcs_t,
2109 func: hb_paint_push_clip_rectangle_func_t,
2110 user_data: *mut ::std::os::raw::c_void,
2111 destroy: hb_destroy_func_t,
2112 );
2113}
2114extern "C" {
2115 #[doc = " hb_paint_funcs_set_pop_clip_func:\n @funcs: A paint functions struct\n @func: (closure user_data) (destroy destroy) (scope notified): The pop-clip callback\n @user_data: Data to pass to @func\n @destroy: (nullable): Function to call when @user_data is no longer needed\n\n Sets the pop-clip callback on the paint functions struct.\n\n Since: 7.0.0"]
2116 pub fn hb_paint_funcs_set_pop_clip_func(
2117 funcs: *mut hb_paint_funcs_t,
2118 func: hb_paint_pop_clip_func_t,
2119 user_data: *mut ::std::os::raw::c_void,
2120 destroy: hb_destroy_func_t,
2121 );
2122}
2123extern "C" {
2124 #[doc = " hb_paint_funcs_set_color_func:\n @funcs: A paint functions struct\n @func: (closure user_data) (destroy destroy) (scope notified): The paint-color callback\n @user_data: Data to pass to @func\n @destroy: (nullable): Function to call when @user_data is no longer needed\n\n Sets the paint-color callback on the paint functions struct.\n\n Since: 7.0.0"]
2125 pub fn hb_paint_funcs_set_color_func(
2126 funcs: *mut hb_paint_funcs_t,
2127 func: hb_paint_color_func_t,
2128 user_data: *mut ::std::os::raw::c_void,
2129 destroy: hb_destroy_func_t,
2130 );
2131}
2132extern "C" {
2133 #[doc = " hb_paint_funcs_set_image_func:\n @funcs: A paint functions struct\n @func: (closure user_data) (destroy destroy) (scope notified): The paint-image callback\n @user_data: Data to pass to @func\n @destroy: (nullable): Function to call when @user_data is no longer needed\n\n Sets the paint-image callback on the paint functions struct.\n\n Since: 7.0.0"]
2134 pub fn hb_paint_funcs_set_image_func(
2135 funcs: *mut hb_paint_funcs_t,
2136 func: hb_paint_image_func_t,
2137 user_data: *mut ::std::os::raw::c_void,
2138 destroy: hb_destroy_func_t,
2139 );
2140}
2141extern "C" {
2142 #[doc = " hb_paint_funcs_set_linear_gradient_func:\n @funcs: A paint functions struct\n @func: (closure user_data) (destroy destroy) (scope notified): The linear-gradient callback\n @user_data: Data to pass to @func\n @destroy: (nullable): Function to call when @user_data is no longer needed\n\n Sets the linear-gradient callback on the paint functions struct.\n\n Since: 7.0.0"]
2143 pub fn hb_paint_funcs_set_linear_gradient_func(
2144 funcs: *mut hb_paint_funcs_t,
2145 func: hb_paint_linear_gradient_func_t,
2146 user_data: *mut ::std::os::raw::c_void,
2147 destroy: hb_destroy_func_t,
2148 );
2149}
2150extern "C" {
2151 #[doc = " hb_paint_funcs_set_radial_gradient_func:\n @funcs: A paint functions struct\n @func: (closure user_data) (destroy destroy) (scope notified): The radial-gradient callback\n @user_data: Data to pass to @func\n @destroy: (nullable): Function to call when @user_data is no longer needed\n\n Sets the radial-gradient callback on the paint functions struct.\n\n Since: 7.0.0"]
2152 pub fn hb_paint_funcs_set_radial_gradient_func(
2153 funcs: *mut hb_paint_funcs_t,
2154 func: hb_paint_radial_gradient_func_t,
2155 user_data: *mut ::std::os::raw::c_void,
2156 destroy: hb_destroy_func_t,
2157 );
2158}
2159extern "C" {
2160 #[doc = " hb_paint_funcs_set_sweep_gradient_func:\n @funcs: A paint functions struct\n @func: (closure user_data) (destroy destroy) (scope notified): The sweep-gradient callback\n @user_data: Data to pass to @func\n @destroy: (nullable): Function to call when @user_data is no longer needed\n\n Sets the sweep-gradient callback on the paint functions struct.\n\n Since: 7.0.0"]
2161 pub fn hb_paint_funcs_set_sweep_gradient_func(
2162 funcs: *mut hb_paint_funcs_t,
2163 func: hb_paint_sweep_gradient_func_t,
2164 user_data: *mut ::std::os::raw::c_void,
2165 destroy: hb_destroy_func_t,
2166 );
2167}
2168extern "C" {
2169 #[doc = " hb_paint_funcs_set_push_group_func:\n @funcs: A paint functions struct\n @func: (closure user_data) (destroy destroy) (scope notified): The push-group callback\n @user_data: Data to pass to @func\n @destroy: (nullable): Function to call when @user_data is no longer needed\n\n Sets the push-group callback on the paint functions struct.\n\n Since: 7.0.0"]
2170 pub fn hb_paint_funcs_set_push_group_func(
2171 funcs: *mut hb_paint_funcs_t,
2172 func: hb_paint_push_group_func_t,
2173 user_data: *mut ::std::os::raw::c_void,
2174 destroy: hb_destroy_func_t,
2175 );
2176}
2177extern "C" {
2178 #[doc = " hb_paint_funcs_set_pop_group_func:\n @funcs: A paint functions struct\n @func: (closure user_data) (destroy destroy) (scope notified): The pop-group callback\n @user_data: Data to pass to @func\n @destroy: (nullable): Function to call when @user_data is no longer needed\n\n Sets the pop-group callback on the paint functions struct.\n\n Since: 7.0.0"]
2179 pub fn hb_paint_funcs_set_pop_group_func(
2180 funcs: *mut hb_paint_funcs_t,
2181 func: hb_paint_pop_group_func_t,
2182 user_data: *mut ::std::os::raw::c_void,
2183 destroy: hb_destroy_func_t,
2184 );
2185}
2186extern "C" {
2187 #[doc = " hb_paint_funcs_set_custom_palette_color_func:\n @funcs: A paint functions struct\n @func: (closure user_data) (destroy destroy) (scope notified): The custom-palette-color callback\n @user_data: Data to pass to @func\n @destroy: (nullable): Function to call when @user_data is no longer needed\n\n Sets the custom-palette-color callback on the paint functions struct.\n\n Since: 7.0.0"]
2188 pub fn hb_paint_funcs_set_custom_palette_color_func(
2189 funcs: *mut hb_paint_funcs_t,
2190 func: hb_paint_custom_palette_color_func_t,
2191 user_data: *mut ::std::os::raw::c_void,
2192 destroy: hb_destroy_func_t,
2193 );
2194}
2195extern "C" {
2196 pub fn hb_paint_push_transform(
2197 funcs: *mut hb_paint_funcs_t,
2198 paint_data: *mut ::std::os::raw::c_void,
2199 xx: f32,
2200 yx: f32,
2201 xy: f32,
2202 yy: f32,
2203 dx: f32,
2204 dy: f32,
2205 );
2206}
2207extern "C" {
2208 pub fn hb_paint_pop_transform(
2209 funcs: *mut hb_paint_funcs_t,
2210 paint_data: *mut ::std::os::raw::c_void,
2211 );
2212}
2213extern "C" {
2214 pub fn hb_paint_color_glyph(
2215 funcs: *mut hb_paint_funcs_t,
2216 paint_data: *mut ::std::os::raw::c_void,
2217 glyph: hb_codepoint_t,
2218 font: *mut hb_font_t,
2219 ) -> hb_bool_t;
2220}
2221extern "C" {
2222 pub fn hb_paint_push_clip_glyph(
2223 funcs: *mut hb_paint_funcs_t,
2224 paint_data: *mut ::std::os::raw::c_void,
2225 glyph: hb_codepoint_t,
2226 font: *mut hb_font_t,
2227 );
2228}
2229extern "C" {
2230 pub fn hb_paint_push_clip_rectangle(
2231 funcs: *mut hb_paint_funcs_t,
2232 paint_data: *mut ::std::os::raw::c_void,
2233 xmin: f32,
2234 ymin: f32,
2235 xmax: f32,
2236 ymax: f32,
2237 );
2238}
2239extern "C" {
2240 pub fn hb_paint_pop_clip(funcs: *mut hb_paint_funcs_t, paint_data: *mut ::std::os::raw::c_void);
2241}
2242extern "C" {
2243 pub fn hb_paint_color(
2244 funcs: *mut hb_paint_funcs_t,
2245 paint_data: *mut ::std::os::raw::c_void,
2246 is_foreground: hb_bool_t,
2247 color: hb_color_t,
2248 );
2249}
2250extern "C" {
2251 pub fn hb_paint_image(
2252 funcs: *mut hb_paint_funcs_t,
2253 paint_data: *mut ::std::os::raw::c_void,
2254 image: *mut hb_blob_t,
2255 width: ::std::os::raw::c_uint,
2256 height: ::std::os::raw::c_uint,
2257 format: hb_tag_t,
2258 slant: f32,
2259 extents: *mut hb_glyph_extents_t,
2260 );
2261}
2262extern "C" {
2263 pub fn hb_paint_linear_gradient(
2264 funcs: *mut hb_paint_funcs_t,
2265 paint_data: *mut ::std::os::raw::c_void,
2266 color_line: *mut hb_color_line_t,
2267 x0: f32,
2268 y0: f32,
2269 x1: f32,
2270 y1: f32,
2271 x2: f32,
2272 y2: f32,
2273 );
2274}
2275extern "C" {
2276 pub fn hb_paint_radial_gradient(
2277 funcs: *mut hb_paint_funcs_t,
2278 paint_data: *mut ::std::os::raw::c_void,
2279 color_line: *mut hb_color_line_t,
2280 x0: f32,
2281 y0: f32,
2282 r0: f32,
2283 x1: f32,
2284 y1: f32,
2285 r1: f32,
2286 );
2287}
2288extern "C" {
2289 pub fn hb_paint_sweep_gradient(
2290 funcs: *mut hb_paint_funcs_t,
2291 paint_data: *mut ::std::os::raw::c_void,
2292 color_line: *mut hb_color_line_t,
2293 x0: f32,
2294 y0: f32,
2295 start_angle: f32,
2296 end_angle: f32,
2297 );
2298}
2299extern "C" {
2300 pub fn hb_paint_push_group(
2301 funcs: *mut hb_paint_funcs_t,
2302 paint_data: *mut ::std::os::raw::c_void,
2303 );
2304}
2305extern "C" {
2306 pub fn hb_paint_pop_group(
2307 funcs: *mut hb_paint_funcs_t,
2308 paint_data: *mut ::std::os::raw::c_void,
2309 mode: hb_paint_composite_mode_t,
2310 );
2311}
2312extern "C" {
2313 pub fn hb_paint_custom_palette_color(
2314 funcs: *mut hb_paint_funcs_t,
2315 paint_data: *mut ::std::os::raw::c_void,
2316 color_index: ::std::os::raw::c_uint,
2317 color: *mut hb_color_t,
2318 ) -> hb_bool_t;
2319}
2320#[repr(C)]
2321#[derive(Debug, Copy, Clone)]
2322pub struct hb_font_funcs_t {
2323 _unused: [u8; 0],
2324}
2325extern "C" {
2326 pub fn hb_font_funcs_create() -> *mut hb_font_funcs_t;
2327}
2328extern "C" {
2329 pub fn hb_font_funcs_get_empty() -> *mut hb_font_funcs_t;
2330}
2331extern "C" {
2332 pub fn hb_font_funcs_reference(ffuncs: *mut hb_font_funcs_t) -> *mut hb_font_funcs_t;
2333}
2334extern "C" {
2335 pub fn hb_font_funcs_destroy(ffuncs: *mut hb_font_funcs_t);
2336}
2337extern "C" {
2338 pub fn hb_font_funcs_set_user_data(
2339 ffuncs: *mut hb_font_funcs_t,
2340 key: *mut hb_user_data_key_t,
2341 data: *mut ::std::os::raw::c_void,
2342 destroy: hb_destroy_func_t,
2343 replace: hb_bool_t,
2344 ) -> hb_bool_t;
2345}
2346extern "C" {
2347 pub fn hb_font_funcs_get_user_data(
2348 ffuncs: *const hb_font_funcs_t,
2349 key: *mut hb_user_data_key_t,
2350 ) -> *mut ::std::os::raw::c_void;
2351}
2352extern "C" {
2353 pub fn hb_font_funcs_make_immutable(ffuncs: *mut hb_font_funcs_t);
2354}
2355extern "C" {
2356 pub fn hb_font_funcs_is_immutable(ffuncs: *mut hb_font_funcs_t) -> hb_bool_t;
2357}
2358#[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."]
2359#[repr(C)]
2360#[derive(Debug, Copy, Clone)]
2361pub struct hb_font_extents_t {
2362 pub ascender: hb_position_t,
2363 pub descender: hb_position_t,
2364 pub line_gap: hb_position_t,
2365 pub reserved9: hb_position_t,
2366 pub reserved8: hb_position_t,
2367 pub reserved7: hb_position_t,
2368 pub reserved6: hb_position_t,
2369 pub reserved5: hb_position_t,
2370 pub reserved4: hb_position_t,
2371 pub reserved3: hb_position_t,
2372 pub reserved2: hb_position_t,
2373 pub reserved1: hb_position_t,
2374}
2375#[test]
2376fn bindgen_test_layout_hb_font_extents_t() {
2377 const UNINIT: ::std::mem::MaybeUninit<hb_font_extents_t> = ::std::mem::MaybeUninit::uninit();
2378 let ptr = UNINIT.as_ptr();
2379 assert_eq!(
2380 ::std::mem::size_of::<hb_font_extents_t>(),
2381 48usize,
2382 concat!("Size of: ", stringify!(hb_font_extents_t))
2383 );
2384 assert_eq!(
2385 ::std::mem::align_of::<hb_font_extents_t>(),
2386 4usize,
2387 concat!("Alignment of ", stringify!(hb_font_extents_t))
2388 );
2389 assert_eq!(
2390 unsafe { ::std::ptr::addr_of!((*ptr).ascender) as usize - ptr as usize },
2391 0usize,
2392 concat!("Offset of field: ", stringify!(hb_font_extents_t), "::", stringify!(ascender))
2393 );
2394 assert_eq!(
2395 unsafe { ::std::ptr::addr_of!((*ptr).descender) as usize - ptr as usize },
2396 4usize,
2397 concat!("Offset of field: ", stringify!(hb_font_extents_t), "::", stringify!(descender))
2398 );
2399 assert_eq!(
2400 unsafe { ::std::ptr::addr_of!((*ptr).line_gap) as usize - ptr as usize },
2401 8usize,
2402 concat!("Offset of field: ", stringify!(hb_font_extents_t), "::", stringify!(line_gap))
2403 );
2404 assert_eq!(
2405 unsafe { ::std::ptr::addr_of!((*ptr).reserved9) as usize - ptr as usize },
2406 12usize,
2407 concat!("Offset of field: ", stringify!(hb_font_extents_t), "::", stringify!(reserved9))
2408 );
2409 assert_eq!(
2410 unsafe { ::std::ptr::addr_of!((*ptr).reserved8) as usize - ptr as usize },
2411 16usize,
2412 concat!("Offset of field: ", stringify!(hb_font_extents_t), "::", stringify!(reserved8))
2413 );
2414 assert_eq!(
2415 unsafe { ::std::ptr::addr_of!((*ptr).reserved7) as usize - ptr as usize },
2416 20usize,
2417 concat!("Offset of field: ", stringify!(hb_font_extents_t), "::", stringify!(reserved7))
2418 );
2419 assert_eq!(
2420 unsafe { ::std::ptr::addr_of!((*ptr).reserved6) as usize - ptr as usize },
2421 24usize,
2422 concat!("Offset of field: ", stringify!(hb_font_extents_t), "::", stringify!(reserved6))
2423 );
2424 assert_eq!(
2425 unsafe { ::std::ptr::addr_of!((*ptr).reserved5) as usize - ptr as usize },
2426 28usize,
2427 concat!("Offset of field: ", stringify!(hb_font_extents_t), "::", stringify!(reserved5))
2428 );
2429 assert_eq!(
2430 unsafe { ::std::ptr::addr_of!((*ptr).reserved4) as usize - ptr as usize },
2431 32usize,
2432 concat!("Offset of field: ", stringify!(hb_font_extents_t), "::", stringify!(reserved4))
2433 );
2434 assert_eq!(
2435 unsafe { ::std::ptr::addr_of!((*ptr).reserved3) as usize - ptr as usize },
2436 36usize,
2437 concat!("Offset of field: ", stringify!(hb_font_extents_t), "::", stringify!(reserved3))
2438 );
2439 assert_eq!(
2440 unsafe { ::std::ptr::addr_of!((*ptr).reserved2) as usize - ptr as usize },
2441 40usize,
2442 concat!("Offset of field: ", stringify!(hb_font_extents_t), "::", stringify!(reserved2))
2443 );
2444 assert_eq!(
2445 unsafe { ::std::ptr::addr_of!((*ptr).reserved1) as usize - ptr as usize },
2446 44usize,
2447 concat!("Offset of field: ", stringify!(hb_font_extents_t), "::", stringify!(reserved1))
2448 );
2449}
2450#[doc = " hb_font_get_font_extents_func_t:\n @font: #hb_font_t to work upon\n @font_data: @font user data pointer\n @extents: (out): The font extents retrieved\n @user_data: User data pointer passed by the caller\n\n This method should retrieve the extents for a font.\n"]
2451pub type hb_font_get_font_extents_func_t = ::std::option::Option<
2452 unsafe extern "C" fn(
2453 font: *mut hb_font_t,
2454 font_data: *mut ::std::os::raw::c_void,
2455 extents: *mut hb_font_extents_t,
2456 user_data: *mut ::std::os::raw::c_void,
2457 ) -> hb_bool_t,
2458>;
2459#[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, for horizontal-direction\n text segments. Extents must be returned in an #hb_glyph_extents output\n parameter.\n"]
2460pub type hb_font_get_font_h_extents_func_t = hb_font_get_font_extents_func_t;
2461#[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, for vertical-direction\n text segments. Extents must be returned in an #hb_glyph_extents output\n parameter.\n"]
2462pub type hb_font_get_font_v_extents_func_t = hb_font_get_font_extents_func_t;
2463#[doc = " hb_font_get_nominal_glyph_func_t:\n @font: #hb_font_t to work upon\n @font_data: @font user data pointer\n @unicode: The Unicode code point to query\n @glyph: (out): The glyph ID retrieved\n @user_data: User data pointer passed by the caller\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\n Return value: `true` if data found, `false` otherwise\n"]
2464pub type hb_font_get_nominal_glyph_func_t = ::std::option::Option<
2465 unsafe extern "C" fn(
2466 font: *mut hb_font_t,
2467 font_data: *mut ::std::os::raw::c_void,
2468 unicode: hb_codepoint_t,
2469 glyph: *mut hb_codepoint_t,
2470 user_data: *mut ::std::os::raw::c_void,
2471 ) -> hb_bool_t,
2472>;
2473#[doc = " hb_font_get_variation_glyph_func_t:\n @font: #hb_font_t to work upon\n @font_data: @font user data pointer\n @unicode: The Unicode code point to query\n @variation_selector: The variation-selector code point to query\n @glyph: (out): The glyph ID retrieved\n @user_data: User data pointer passed by the caller\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\n Return value: `true` if data found, `false` otherwise\n"]
2474pub type hb_font_get_variation_glyph_func_t = ::std::option::Option<
2475 unsafe extern "C" fn(
2476 font: *mut hb_font_t,
2477 font_data: *mut ::std::os::raw::c_void,
2478 unicode: hb_codepoint_t,
2479 variation_selector: hb_codepoint_t,
2480 glyph: *mut hb_codepoint_t,
2481 user_data: *mut ::std::os::raw::c_void,
2482 ) -> hb_bool_t,
2483>;
2484#[doc = " hb_font_get_nominal_glyphs_func_t:\n @font: #hb_font_t to work upon\n @font_data: @font user data pointer\n @count: number of code points to query\n @first_unicode: The first Unicode code point to query\n @unicode_stride: The stride between successive code points\n @first_glyph: (out): The first glyph ID retrieved\n @glyph_stride: The stride between successive glyph IDs\n @user_data: User data pointer passed by the caller\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\n Return value: the number of code points processed\n"]
2485pub type hb_font_get_nominal_glyphs_func_t = ::std::option::Option<
2486 unsafe extern "C" fn(
2487 font: *mut hb_font_t,
2488 font_data: *mut ::std::os::raw::c_void,
2489 count: ::std::os::raw::c_uint,
2490 first_unicode: *const hb_codepoint_t,
2491 unicode_stride: ::std::os::raw::c_uint,
2492 first_glyph: *mut hb_codepoint_t,
2493 glyph_stride: ::std::os::raw::c_uint,
2494 user_data: *mut ::std::os::raw::c_void,
2495 ) -> ::std::os::raw::c_uint,
2496>;
2497#[doc = " hb_font_get_glyph_advance_func_t:\n @font: #hb_font_t to work upon\n @font_data: @font user data pointer\n @glyph: The glyph ID to query\n @user_data: User data pointer passed by the caller\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\n Return value: The advance of @glyph within @font\n"]
2498pub type hb_font_get_glyph_advance_func_t = ::std::option::Option<
2499 unsafe extern "C" fn(
2500 font: *mut hb_font_t,
2501 font_data: *mut ::std::os::raw::c_void,
2502 glyph: hb_codepoint_t,
2503 user_data: *mut ::std::os::raw::c_void,
2504 ) -> hb_position_t,
2505>;
2506#[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"]
2507pub type hb_font_get_glyph_h_advance_func_t = hb_font_get_glyph_advance_func_t;
2508#[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"]
2509pub type hb_font_get_glyph_v_advance_func_t = hb_font_get_glyph_advance_func_t;
2510#[doc = " hb_font_get_glyph_advances_func_t:\n @font: #hb_font_t to work upon\n @font_data: @font user data pointer\n @count: The number of glyph IDs in the sequence queried\n @first_glyph: The first glyph ID to query\n @glyph_stride: The stride between successive glyph IDs\n @first_advance: (out): The first advance retrieved\n @advance_stride: The stride between successive advances\n @user_data: User data pointer passed by the caller\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"]
2511pub type hb_font_get_glyph_advances_func_t = ::std::option::Option<
2512 unsafe extern "C" fn(
2513 font: *mut hb_font_t,
2514 font_data: *mut ::std::os::raw::c_void,
2515 count: ::std::os::raw::c_uint,
2516 first_glyph: *const hb_codepoint_t,
2517 glyph_stride: ::std::os::raw::c_uint,
2518 first_advance: *mut hb_position_t,
2519 advance_stride: ::std::os::raw::c_uint,
2520 user_data: *mut ::std::os::raw::c_void,
2521 ),
2522>;
2523#[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"]
2524pub type hb_font_get_glyph_h_advances_func_t = hb_font_get_glyph_advances_func_t;
2525#[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"]
2526pub type hb_font_get_glyph_v_advances_func_t = hb_font_get_glyph_advances_func_t;
2527#[doc = " hb_font_get_glyph_origin_func_t:\n @font: #hb_font_t to work upon\n @font_data: @font user data pointer\n @glyph: The glyph ID to query\n @x: (out): The X coordinate of the origin\n @y: (out): The Y coordinate of the origin\n @user_data: User data pointer passed by the caller\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\n Return value: `true` if data found, `false` otherwise\n"]
2528pub type hb_font_get_glyph_origin_func_t = ::std::option::Option<
2529 unsafe extern "C" fn(
2530 font: *mut hb_font_t,
2531 font_data: *mut ::std::os::raw::c_void,
2532 glyph: hb_codepoint_t,
2533 x: *mut hb_position_t,
2534 y: *mut hb_position_t,
2535 user_data: *mut ::std::os::raw::c_void,
2536 ) -> hb_bool_t,
2537>;
2538#[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, for horizontal-direction text segments. Each\n coordinate must be returned in an #hb_position_t output parameter.\n"]
2539pub type hb_font_get_glyph_h_origin_func_t = hb_font_get_glyph_origin_func_t;
2540#[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, for vertical-direction text segments. Each coordinate\n must be returned in an #hb_position_t output parameter.\n"]
2541pub type hb_font_get_glyph_v_origin_func_t = hb_font_get_glyph_origin_func_t;
2542#[doc = " hb_font_get_glyph_kerning_func_t:\n @font: #hb_font_t to work upon\n @font_data: @font user data pointer\n @first_glyph: The glyph ID of the first glyph in the glyph pair\n @second_glyph: The glyph ID of the second glyph in the glyph pair\n @user_data: User data pointer passed by the caller\n\n This method should retrieve the kerning-adjustment value for a glyph-pair in\n the specified font, for horizontal text segments.\n"]
2543pub type hb_font_get_glyph_kerning_func_t = ::std::option::Option<
2544 unsafe extern "C" fn(
2545 font: *mut hb_font_t,
2546 font_data: *mut ::std::os::raw::c_void,
2547 first_glyph: hb_codepoint_t,
2548 second_glyph: hb_codepoint_t,
2549 user_data: *mut ::std::os::raw::c_void,
2550 ) -> hb_position_t,
2551>;
2552#[doc = " hb_font_get_glyph_h_kerning_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 kerning-adjustment value for a glyph-pair in\n the specified font, for horizontal text segments.\n"]
2553pub type hb_font_get_glyph_h_kerning_func_t = hb_font_get_glyph_kerning_func_t;
2554#[doc = " hb_font_get_glyph_extents_func_t:\n @font: #hb_font_t to work upon\n @font_data: @font user data pointer\n @glyph: The glyph ID to query\n @extents: (out): The #hb_glyph_extents_t retrieved\n @user_data: User data pointer passed by the caller\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\n Return value: `true` if data found, `false` otherwise\n"]
2555pub type hb_font_get_glyph_extents_func_t = ::std::option::Option<
2556 unsafe extern "C" fn(
2557 font: *mut hb_font_t,
2558 font_data: *mut ::std::os::raw::c_void,
2559 glyph: hb_codepoint_t,
2560 extents: *mut hb_glyph_extents_t,
2561 user_data: *mut ::std::os::raw::c_void,
2562 ) -> hb_bool_t,
2563>;
2564#[doc = " hb_font_get_glyph_contour_point_func_t:\n @font: #hb_font_t to work upon\n @font_data: @font user data pointer\n @glyph: The glyph ID to query\n @point_index: The contour-point index to query\n @x: (out): The X value retrieved for the contour point\n @y: (out): The Y value retrieved for the contour point\n @user_data: User data pointer passed by the caller\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\n Return value: `true` if data found, `false` otherwise\n"]
2565pub type hb_font_get_glyph_contour_point_func_t = ::std::option::Option<
2566 unsafe extern "C" fn(
2567 font: *mut hb_font_t,
2568 font_data: *mut ::std::os::raw::c_void,
2569 glyph: hb_codepoint_t,
2570 point_index: ::std::os::raw::c_uint,
2571 x: *mut hb_position_t,
2572 y: *mut hb_position_t,
2573 user_data: *mut ::std::os::raw::c_void,
2574 ) -> hb_bool_t,
2575>;
2576#[doc = " hb_font_get_glyph_name_func_t:\n @font: #hb_font_t to work upon\n @font_data: @font user data pointer\n @glyph: The glyph ID to query\n @name: (out) (array length=size): Name string retrieved for the glyph ID\n @size: Length of the glyph-name string retrieved\n @user_data: User data pointer passed by the caller\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\n Return value: `true` if data found, `false` otherwise\n"]
2577pub type hb_font_get_glyph_name_func_t = ::std::option::Option<
2578 unsafe extern "C" fn(
2579 font: *mut hb_font_t,
2580 font_data: *mut ::std::os::raw::c_void,
2581 glyph: hb_codepoint_t,
2582 name: *mut ::std::os::raw::c_char,
2583 size: ::std::os::raw::c_uint,
2584 user_data: *mut ::std::os::raw::c_void,
2585 ) -> hb_bool_t,
2586>;
2587#[doc = " hb_font_get_glyph_from_name_func_t:\n @font: #hb_font_t to work upon\n @font_data: @font user data pointer\n @name: (array length=len): The name string to query\n @len: The length of the name queried\n @glyph: (out): The glyph ID retrieved\n @user_data: User data pointer passed by the caller\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\n Return value: `true` if data found, `false` otherwise\n"]
2588pub type hb_font_get_glyph_from_name_func_t = ::std::option::Option<
2589 unsafe extern "C" fn(
2590 font: *mut hb_font_t,
2591 font_data: *mut ::std::os::raw::c_void,
2592 name: *const ::std::os::raw::c_char,
2593 len: ::std::os::raw::c_int,
2594 glyph: *mut hb_codepoint_t,
2595 user_data: *mut ::std::os::raw::c_void,
2596 ) -> hb_bool_t,
2597>;
2598#[doc = " hb_font_draw_glyph_func_t:\n @font: #hb_font_t to work upon\n @font_data: @font user data pointer\n @glyph: The glyph ID to query\n @draw_funcs: The draw functions to send the shape data to\n @draw_data: The data accompanying the draw functions\n @user_data: User data pointer passed by the caller\n\n A virtual method for the #hb_font_funcs_t of an #hb_font_t object.\n\n Since: 7.0.0\n"]
2599pub type hb_font_draw_glyph_func_t = ::std::option::Option<
2600 unsafe extern "C" fn(
2601 font: *mut hb_font_t,
2602 font_data: *mut ::std::os::raw::c_void,
2603 glyph: hb_codepoint_t,
2604 draw_funcs: *mut hb_draw_funcs_t,
2605 draw_data: *mut ::std::os::raw::c_void,
2606 user_data: *mut ::std::os::raw::c_void,
2607 ),
2608>;
2609#[doc = " hb_font_paint_glyph_func_t:\n @font: #hb_font_t to work upon\n @font_data: @font user data pointer\n @glyph: The glyph ID to query\n @paint_funcs: The paint functions to use\n @paint_data: The data accompanying the paint functions\n @palette_index: The color palette to use\n @foreground: The foreground color\n @user_data: User data pointer passed by the caller\n\n A virtual method for the #hb_font_funcs_t of an #hb_font_t object.\n\n Since: 7.0.0"]
2610pub type hb_font_paint_glyph_func_t = ::std::option::Option<
2611 unsafe extern "C" fn(
2612 font: *mut hb_font_t,
2613 font_data: *mut ::std::os::raw::c_void,
2614 glyph: hb_codepoint_t,
2615 paint_funcs: *mut hb_paint_funcs_t,
2616 paint_data: *mut ::std::os::raw::c_void,
2617 palette_index: ::std::os::raw::c_uint,
2618 foreground: hb_color_t,
2619 user_data: *mut ::std::os::raw::c_void,
2620 ),
2621>;
2622extern "C" {
2623 #[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: (nullable): 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"]
2624 pub fn hb_font_funcs_set_font_h_extents_func(
2625 ffuncs: *mut hb_font_funcs_t,
2626 func: hb_font_get_font_h_extents_func_t,
2627 user_data: *mut ::std::os::raw::c_void,
2628 destroy: hb_destroy_func_t,
2629 );
2630}
2631extern "C" {
2632 #[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: (nullable): 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"]
2633 pub fn hb_font_funcs_set_font_v_extents_func(
2634 ffuncs: *mut hb_font_funcs_t,
2635 func: hb_font_get_font_v_extents_func_t,
2636 user_data: *mut ::std::os::raw::c_void,
2637 destroy: hb_destroy_func_t,
2638 );
2639}
2640extern "C" {
2641 #[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: (nullable): 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"]
2642 pub fn hb_font_funcs_set_nominal_glyph_func(
2643 ffuncs: *mut hb_font_funcs_t,
2644 func: hb_font_get_nominal_glyph_func_t,
2645 user_data: *mut ::std::os::raw::c_void,
2646 destroy: hb_destroy_func_t,
2647 );
2648}
2649extern "C" {
2650 #[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: (nullable): 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"]
2651 pub fn hb_font_funcs_set_nominal_glyphs_func(
2652 ffuncs: *mut hb_font_funcs_t,
2653 func: hb_font_get_nominal_glyphs_func_t,
2654 user_data: *mut ::std::os::raw::c_void,
2655 destroy: hb_destroy_func_t,
2656 );
2657}
2658extern "C" {
2659 #[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: (nullable): 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"]
2660 pub fn hb_font_funcs_set_variation_glyph_func(
2661 ffuncs: *mut hb_font_funcs_t,
2662 func: hb_font_get_variation_glyph_func_t,
2663 user_data: *mut ::std::os::raw::c_void,
2664 destroy: hb_destroy_func_t,
2665 );
2666}
2667extern "C" {
2668 #[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: (nullable): 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"]
2669 pub fn hb_font_funcs_set_glyph_h_advance_func(
2670 ffuncs: *mut hb_font_funcs_t,
2671 func: hb_font_get_glyph_h_advance_func_t,
2672 user_data: *mut ::std::os::raw::c_void,
2673 destroy: hb_destroy_func_t,
2674 );
2675}
2676extern "C" {
2677 #[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: (nullable): 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"]
2678 pub fn hb_font_funcs_set_glyph_v_advance_func(
2679 ffuncs: *mut hb_font_funcs_t,
2680 func: hb_font_get_glyph_v_advance_func_t,
2681 user_data: *mut ::std::os::raw::c_void,
2682 destroy: hb_destroy_func_t,
2683 );
2684}
2685extern "C" {
2686 #[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: (nullable): 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"]
2687 pub fn hb_font_funcs_set_glyph_h_advances_func(
2688 ffuncs: *mut hb_font_funcs_t,
2689 func: hb_font_get_glyph_h_advances_func_t,
2690 user_data: *mut ::std::os::raw::c_void,
2691 destroy: hb_destroy_func_t,
2692 );
2693}
2694extern "C" {
2695 #[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: (nullable): 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"]
2696 pub fn hb_font_funcs_set_glyph_v_advances_func(
2697 ffuncs: *mut hb_font_funcs_t,
2698 func: hb_font_get_glyph_v_advances_func_t,
2699 user_data: *mut ::std::os::raw::c_void,
2700 destroy: hb_destroy_func_t,
2701 );
2702}
2703extern "C" {
2704 #[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: (nullable): 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"]
2705 pub fn hb_font_funcs_set_glyph_h_origin_func(
2706 ffuncs: *mut hb_font_funcs_t,
2707 func: hb_font_get_glyph_h_origin_func_t,
2708 user_data: *mut ::std::os::raw::c_void,
2709 destroy: hb_destroy_func_t,
2710 );
2711}
2712extern "C" {
2713 #[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: (nullable): 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"]
2714 pub fn hb_font_funcs_set_glyph_v_origin_func(
2715 ffuncs: *mut hb_font_funcs_t,
2716 func: hb_font_get_glyph_v_origin_func_t,
2717 user_data: *mut ::std::os::raw::c_void,
2718 destroy: hb_destroy_func_t,
2719 );
2720}
2721extern "C" {
2722 #[doc = " hb_font_funcs_set_glyph_h_kerning_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: (nullable): The function to call when @user_data is not needed anymore\n\n Sets the implementation function for #hb_font_get_glyph_h_kerning_func_t.\n\n Since: 0.9.2"]
2723 pub fn hb_font_funcs_set_glyph_h_kerning_func(
2724 ffuncs: *mut hb_font_funcs_t,
2725 func: hb_font_get_glyph_h_kerning_func_t,
2726 user_data: *mut ::std::os::raw::c_void,
2727 destroy: hb_destroy_func_t,
2728 );
2729}
2730extern "C" {
2731 #[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: (nullable): 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"]
2732 pub fn hb_font_funcs_set_glyph_extents_func(
2733 ffuncs: *mut hb_font_funcs_t,
2734 func: hb_font_get_glyph_extents_func_t,
2735 user_data: *mut ::std::os::raw::c_void,
2736 destroy: hb_destroy_func_t,
2737 );
2738}
2739extern "C" {
2740 #[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: (nullable): 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"]
2741 pub fn hb_font_funcs_set_glyph_contour_point_func(
2742 ffuncs: *mut hb_font_funcs_t,
2743 func: hb_font_get_glyph_contour_point_func_t,
2744 user_data: *mut ::std::os::raw::c_void,
2745 destroy: hb_destroy_func_t,
2746 );
2747}
2748extern "C" {
2749 #[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: (nullable): 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"]
2750 pub fn hb_font_funcs_set_glyph_name_func(
2751 ffuncs: *mut hb_font_funcs_t,
2752 func: hb_font_get_glyph_name_func_t,
2753 user_data: *mut ::std::os::raw::c_void,
2754 destroy: hb_destroy_func_t,
2755 );
2756}
2757extern "C" {
2758 #[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: (nullable): 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"]
2759 pub fn hb_font_funcs_set_glyph_from_name_func(
2760 ffuncs: *mut hb_font_funcs_t,
2761 func: hb_font_get_glyph_from_name_func_t,
2762 user_data: *mut ::std::os::raw::c_void,
2763 destroy: hb_destroy_func_t,
2764 );
2765}
2766extern "C" {
2767 #[doc = " hb_font_funcs_set_draw_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: (nullable): The function to call when @user_data is not needed anymore\n\n Sets the implementation function for #hb_font_draw_glyph_func_t.\n\n Since: 7.0.0"]
2768 pub fn hb_font_funcs_set_draw_glyph_func(
2769 ffuncs: *mut hb_font_funcs_t,
2770 func: hb_font_draw_glyph_func_t,
2771 user_data: *mut ::std::os::raw::c_void,
2772 destroy: hb_destroy_func_t,
2773 );
2774}
2775extern "C" {
2776 #[doc = " hb_font_funcs_set_paint_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: (nullable): The function to call when @user_data is no longer needed\n\n Sets the implementation function for #hb_font_paint_glyph_func_t.\n\n Since: 7.0.0"]
2777 pub fn hb_font_funcs_set_paint_glyph_func(
2778 ffuncs: *mut hb_font_funcs_t,
2779 func: hb_font_paint_glyph_func_t,
2780 user_data: *mut ::std::os::raw::c_void,
2781 destroy: hb_destroy_func_t,
2782 );
2783}
2784extern "C" {
2785 pub fn hb_font_get_h_extents(
2786 font: *mut hb_font_t,
2787 extents: *mut hb_font_extents_t,
2788 ) -> hb_bool_t;
2789}
2790extern "C" {
2791 pub fn hb_font_get_v_extents(
2792 font: *mut hb_font_t,
2793 extents: *mut hb_font_extents_t,
2794 ) -> hb_bool_t;
2795}
2796extern "C" {
2797 pub fn hb_font_get_nominal_glyph(
2798 font: *mut hb_font_t,
2799 unicode: hb_codepoint_t,
2800 glyph: *mut hb_codepoint_t,
2801 ) -> hb_bool_t;
2802}
2803extern "C" {
2804 pub fn hb_font_get_variation_glyph(
2805 font: *mut hb_font_t,
2806 unicode: hb_codepoint_t,
2807 variation_selector: hb_codepoint_t,
2808 glyph: *mut hb_codepoint_t,
2809 ) -> hb_bool_t;
2810}
2811extern "C" {
2812 pub fn hb_font_get_nominal_glyphs(
2813 font: *mut hb_font_t,
2814 count: ::std::os::raw::c_uint,
2815 first_unicode: *const hb_codepoint_t,
2816 unicode_stride: ::std::os::raw::c_uint,
2817 first_glyph: *mut hb_codepoint_t,
2818 glyph_stride: ::std::os::raw::c_uint,
2819 ) -> ::std::os::raw::c_uint;
2820}
2821extern "C" {
2822 pub fn hb_font_get_glyph_h_advance(
2823 font: *mut hb_font_t,
2824 glyph: hb_codepoint_t,
2825 ) -> hb_position_t;
2826}
2827extern "C" {
2828 pub fn hb_font_get_glyph_v_advance(
2829 font: *mut hb_font_t,
2830 glyph: hb_codepoint_t,
2831 ) -> hb_position_t;
2832}
2833extern "C" {
2834 pub fn hb_font_get_glyph_h_advances(
2835 font: *mut hb_font_t,
2836 count: ::std::os::raw::c_uint,
2837 first_glyph: *const hb_codepoint_t,
2838 glyph_stride: ::std::os::raw::c_uint,
2839 first_advance: *mut hb_position_t,
2840 advance_stride: ::std::os::raw::c_uint,
2841 );
2842}
2843extern "C" {
2844 pub fn hb_font_get_glyph_v_advances(
2845 font: *mut hb_font_t,
2846 count: ::std::os::raw::c_uint,
2847 first_glyph: *const hb_codepoint_t,
2848 glyph_stride: ::std::os::raw::c_uint,
2849 first_advance: *mut hb_position_t,
2850 advance_stride: ::std::os::raw::c_uint,
2851 );
2852}
2853extern "C" {
2854 pub fn hb_font_get_glyph_h_origin(
2855 font: *mut hb_font_t,
2856 glyph: hb_codepoint_t,
2857 x: *mut hb_position_t,
2858 y: *mut hb_position_t,
2859 ) -> hb_bool_t;
2860}
2861extern "C" {
2862 pub fn hb_font_get_glyph_v_origin(
2863 font: *mut hb_font_t,
2864 glyph: hb_codepoint_t,
2865 x: *mut hb_position_t,
2866 y: *mut hb_position_t,
2867 ) -> hb_bool_t;
2868}
2869extern "C" {
2870 pub fn hb_font_get_glyph_h_kerning(
2871 font: *mut hb_font_t,
2872 left_glyph: hb_codepoint_t,
2873 right_glyph: hb_codepoint_t,
2874 ) -> hb_position_t;
2875}
2876extern "C" {
2877 pub fn hb_font_get_glyph_extents(
2878 font: *mut hb_font_t,
2879 glyph: hb_codepoint_t,
2880 extents: *mut hb_glyph_extents_t,
2881 ) -> hb_bool_t;
2882}
2883extern "C" {
2884 pub fn hb_font_get_glyph_contour_point(
2885 font: *mut hb_font_t,
2886 glyph: hb_codepoint_t,
2887 point_index: ::std::os::raw::c_uint,
2888 x: *mut hb_position_t,
2889 y: *mut hb_position_t,
2890 ) -> hb_bool_t;
2891}
2892extern "C" {
2893 pub fn hb_font_get_glyph_name(
2894 font: *mut hb_font_t,
2895 glyph: hb_codepoint_t,
2896 name: *mut ::std::os::raw::c_char,
2897 size: ::std::os::raw::c_uint,
2898 ) -> hb_bool_t;
2899}
2900extern "C" {
2901 pub fn hb_font_get_glyph_from_name(
2902 font: *mut hb_font_t,
2903 name: *const ::std::os::raw::c_char,
2904 len: ::std::os::raw::c_int,
2905 glyph: *mut hb_codepoint_t,
2906 ) -> hb_bool_t;
2907}
2908extern "C" {
2909 pub fn hb_font_draw_glyph(
2910 font: *mut hb_font_t,
2911 glyph: hb_codepoint_t,
2912 dfuncs: *mut hb_draw_funcs_t,
2913 draw_data: *mut ::std::os::raw::c_void,
2914 );
2915}
2916extern "C" {
2917 pub fn hb_font_paint_glyph(
2918 font: *mut hb_font_t,
2919 glyph: hb_codepoint_t,
2920 pfuncs: *mut hb_paint_funcs_t,
2921 paint_data: *mut ::std::os::raw::c_void,
2922 palette_index: ::std::os::raw::c_uint,
2923 foreground: hb_color_t,
2924 );
2925}
2926extern "C" {
2927 pub fn hb_font_get_glyph(
2928 font: *mut hb_font_t,
2929 unicode: hb_codepoint_t,
2930 variation_selector: hb_codepoint_t,
2931 glyph: *mut hb_codepoint_t,
2932 ) -> hb_bool_t;
2933}
2934extern "C" {
2935 pub fn hb_font_get_extents_for_direction(
2936 font: *mut hb_font_t,
2937 direction: hb_direction_t,
2938 extents: *mut hb_font_extents_t,
2939 );
2940}
2941extern "C" {
2942 pub fn hb_font_get_glyph_advance_for_direction(
2943 font: *mut hb_font_t,
2944 glyph: hb_codepoint_t,
2945 direction: hb_direction_t,
2946 x: *mut hb_position_t,
2947 y: *mut hb_position_t,
2948 );
2949}
2950extern "C" {
2951 pub fn hb_font_get_glyph_advances_for_direction(
2952 font: *mut hb_font_t,
2953 direction: hb_direction_t,
2954 count: ::std::os::raw::c_uint,
2955 first_glyph: *const hb_codepoint_t,
2956 glyph_stride: ::std::os::raw::c_uint,
2957 first_advance: *mut hb_position_t,
2958 advance_stride: ::std::os::raw::c_uint,
2959 );
2960}
2961extern "C" {
2962 pub fn hb_font_get_glyph_origin_for_direction(
2963 font: *mut hb_font_t,
2964 glyph: hb_codepoint_t,
2965 direction: hb_direction_t,
2966 x: *mut hb_position_t,
2967 y: *mut hb_position_t,
2968 );
2969}
2970extern "C" {
2971 pub fn hb_font_add_glyph_origin_for_direction(
2972 font: *mut hb_font_t,
2973 glyph: hb_codepoint_t,
2974 direction: hb_direction_t,
2975 x: *mut hb_position_t,
2976 y: *mut hb_position_t,
2977 );
2978}
2979extern "C" {
2980 pub fn hb_font_subtract_glyph_origin_for_direction(
2981 font: *mut hb_font_t,
2982 glyph: hb_codepoint_t,
2983 direction: hb_direction_t,
2984 x: *mut hb_position_t,
2985 y: *mut hb_position_t,
2986 );
2987}
2988extern "C" {
2989 pub fn hb_font_get_glyph_kerning_for_direction(
2990 font: *mut hb_font_t,
2991 first_glyph: hb_codepoint_t,
2992 second_glyph: hb_codepoint_t,
2993 direction: hb_direction_t,
2994 x: *mut hb_position_t,
2995 y: *mut hb_position_t,
2996 );
2997}
2998extern "C" {
2999 pub fn hb_font_get_glyph_extents_for_origin(
3000 font: *mut hb_font_t,
3001 glyph: hb_codepoint_t,
3002 direction: hb_direction_t,
3003 extents: *mut hb_glyph_extents_t,
3004 ) -> hb_bool_t;
3005}
3006extern "C" {
3007 pub fn hb_font_get_glyph_contour_point_for_origin(
3008 font: *mut hb_font_t,
3009 glyph: hb_codepoint_t,
3010 point_index: ::std::os::raw::c_uint,
3011 direction: hb_direction_t,
3012 x: *mut hb_position_t,
3013 y: *mut hb_position_t,
3014 ) -> hb_bool_t;
3015}
3016extern "C" {
3017 pub fn hb_font_glyph_to_string(
3018 font: *mut hb_font_t,
3019 glyph: hb_codepoint_t,
3020 s: *mut ::std::os::raw::c_char,
3021 size: ::std::os::raw::c_uint,
3022 );
3023}
3024extern "C" {
3025 pub fn hb_font_glyph_from_string(
3026 font: *mut hb_font_t,
3027 s: *const ::std::os::raw::c_char,
3028 len: ::std::os::raw::c_int,
3029 glyph: *mut hb_codepoint_t,
3030 ) -> hb_bool_t;
3031}
3032extern "C" {
3033 pub fn hb_font_create(face: *mut hb_face_t) -> *mut hb_font_t;
3034}
3035extern "C" {
3036 pub fn hb_font_create_sub_font(parent: *mut hb_font_t) -> *mut hb_font_t;
3037}
3038extern "C" {
3039 pub fn hb_font_get_empty() -> *mut hb_font_t;
3040}
3041extern "C" {
3042 pub fn hb_font_reference(font: *mut hb_font_t) -> *mut hb_font_t;
3043}
3044extern "C" {
3045 pub fn hb_font_destroy(font: *mut hb_font_t);
3046}
3047extern "C" {
3048 pub fn hb_font_set_user_data(
3049 font: *mut hb_font_t,
3050 key: *mut hb_user_data_key_t,
3051 data: *mut ::std::os::raw::c_void,
3052 destroy: hb_destroy_func_t,
3053 replace: hb_bool_t,
3054 ) -> hb_bool_t;
3055}
3056extern "C" {
3057 pub fn hb_font_get_user_data(
3058 font: *const hb_font_t,
3059 key: *mut hb_user_data_key_t,
3060 ) -> *mut ::std::os::raw::c_void;
3061}
3062extern "C" {
3063 pub fn hb_font_make_immutable(font: *mut hb_font_t);
3064}
3065extern "C" {
3066 pub fn hb_font_is_immutable(font: *mut hb_font_t) -> hb_bool_t;
3067}
3068extern "C" {
3069 pub fn hb_font_get_serial(font: *mut hb_font_t) -> ::std::os::raw::c_uint;
3070}
3071extern "C" {
3072 pub fn hb_font_changed(font: *mut hb_font_t);
3073}
3074extern "C" {
3075 pub fn hb_font_set_parent(font: *mut hb_font_t, parent: *mut hb_font_t);
3076}
3077extern "C" {
3078 pub fn hb_font_get_parent(font: *mut hb_font_t) -> *mut hb_font_t;
3079}
3080extern "C" {
3081 pub fn hb_font_set_face(font: *mut hb_font_t, face: *mut hb_face_t);
3082}
3083extern "C" {
3084 pub fn hb_font_get_face(font: *mut hb_font_t) -> *mut hb_face_t;
3085}
3086extern "C" {
3087 pub fn hb_font_set_funcs(
3088 font: *mut hb_font_t,
3089 klass: *mut hb_font_funcs_t,
3090 font_data: *mut ::std::os::raw::c_void,
3091 destroy: hb_destroy_func_t,
3092 );
3093}
3094extern "C" {
3095 pub fn hb_font_set_funcs_data(
3096 font: *mut hb_font_t,
3097 font_data: *mut ::std::os::raw::c_void,
3098 destroy: hb_destroy_func_t,
3099 );
3100}
3101extern "C" {
3102 pub fn hb_font_set_scale(
3103 font: *mut hb_font_t,
3104 x_scale: ::std::os::raw::c_int,
3105 y_scale: ::std::os::raw::c_int,
3106 );
3107}
3108extern "C" {
3109 pub fn hb_font_get_scale(
3110 font: *mut hb_font_t,
3111 x_scale: *mut ::std::os::raw::c_int,
3112 y_scale: *mut ::std::os::raw::c_int,
3113 );
3114}
3115extern "C" {
3116 pub fn hb_font_set_ppem(
3117 font: *mut hb_font_t,
3118 x_ppem: ::std::os::raw::c_uint,
3119 y_ppem: ::std::os::raw::c_uint,
3120 );
3121}
3122extern "C" {
3123 pub fn hb_font_get_ppem(
3124 font: *mut hb_font_t,
3125 x_ppem: *mut ::std::os::raw::c_uint,
3126 y_ppem: *mut ::std::os::raw::c_uint,
3127 );
3128}
3129extern "C" {
3130 pub fn hb_font_set_ptem(font: *mut hb_font_t, ptem: f32);
3131}
3132extern "C" {
3133 pub fn hb_font_get_ptem(font: *mut hb_font_t) -> f32;
3134}
3135extern "C" {
3136 pub fn hb_font_set_synthetic_bold(
3137 font: *mut hb_font_t,
3138 x_embolden: f32,
3139 y_embolden: f32,
3140 in_place: hb_bool_t,
3141 );
3142}
3143extern "C" {
3144 pub fn hb_font_get_synthetic_bold(
3145 font: *mut hb_font_t,
3146 x_embolden: *mut f32,
3147 y_embolden: *mut f32,
3148 in_place: *mut hb_bool_t,
3149 );
3150}
3151extern "C" {
3152 pub fn hb_font_set_synthetic_slant(font: *mut hb_font_t, slant: f32);
3153}
3154extern "C" {
3155 pub fn hb_font_get_synthetic_slant(font: *mut hb_font_t) -> f32;
3156}
3157extern "C" {
3158 pub fn hb_font_set_variations(
3159 font: *mut hb_font_t,
3160 variations: *const hb_variation_t,
3161 variations_length: ::std::os::raw::c_uint,
3162 );
3163}
3164extern "C" {
3165 pub fn hb_font_set_variation(font: *mut hb_font_t, tag: hb_tag_t, value: f32);
3166}
3167extern "C" {
3168 pub fn hb_font_set_var_coords_design(
3169 font: *mut hb_font_t,
3170 coords: *const f32,
3171 coords_length: ::std::os::raw::c_uint,
3172 );
3173}
3174extern "C" {
3175 pub fn hb_font_get_var_coords_design(
3176 font: *mut hb_font_t,
3177 length: *mut ::std::os::raw::c_uint,
3178 ) -> *const f32;
3179}
3180extern "C" {
3181 pub fn hb_font_set_var_coords_normalized(
3182 font: *mut hb_font_t,
3183 coords: *const ::std::os::raw::c_int,
3184 coords_length: ::std::os::raw::c_uint,
3185 );
3186}
3187extern "C" {
3188 pub fn hb_font_get_var_coords_normalized(
3189 font: *mut hb_font_t,
3190 length: *mut ::std::os::raw::c_uint,
3191 ) -> *const ::std::os::raw::c_int;
3192}
3193extern "C" {
3194 pub fn hb_font_set_var_named_instance(
3195 font: *mut hb_font_t,
3196 instance_index: ::std::os::raw::c_uint,
3197 );
3198}
3199extern "C" {
3200 pub fn hb_font_get_var_named_instance(font: *mut hb_font_t) -> ::std::os::raw::c_uint;
3201}
3202#[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."]
3203#[repr(C)]
3204#[derive(Copy, Clone)]
3205pub struct hb_glyph_info_t {
3206 pub codepoint: hb_codepoint_t,
3207 pub mask: hb_mask_t,
3208 pub cluster: u32,
3209 pub var1: hb_var_int_t,
3210 pub var2: hb_var_int_t,
3211}
3212#[test]
3213fn bindgen_test_layout_hb_glyph_info_t() {
3214 const UNINIT: ::std::mem::MaybeUninit<hb_glyph_info_t> = ::std::mem::MaybeUninit::uninit();
3215 let ptr = UNINIT.as_ptr();
3216 assert_eq!(
3217 ::std::mem::size_of::<hb_glyph_info_t>(),
3218 20usize,
3219 concat!("Size of: ", stringify!(hb_glyph_info_t))
3220 );
3221 assert_eq!(
3222 ::std::mem::align_of::<hb_glyph_info_t>(),
3223 4usize,
3224 concat!("Alignment of ", stringify!(hb_glyph_info_t))
3225 );
3226 assert_eq!(
3227 unsafe { ::std::ptr::addr_of!((*ptr).codepoint) as usize - ptr as usize },
3228 0usize,
3229 concat!("Offset of field: ", stringify!(hb_glyph_info_t), "::", stringify!(codepoint))
3230 );
3231 assert_eq!(
3232 unsafe { ::std::ptr::addr_of!((*ptr).mask) as usize - ptr as usize },
3233 4usize,
3234 concat!("Offset of field: ", stringify!(hb_glyph_info_t), "::", stringify!(mask))
3235 );
3236 assert_eq!(
3237 unsafe { ::std::ptr::addr_of!((*ptr).cluster) as usize - ptr as usize },
3238 8usize,
3239 concat!("Offset of field: ", stringify!(hb_glyph_info_t), "::", stringify!(cluster))
3240 );
3241 assert_eq!(
3242 unsafe { ::std::ptr::addr_of!((*ptr).var1) as usize - ptr as usize },
3243 12usize,
3244 concat!("Offset of field: ", stringify!(hb_glyph_info_t), "::", stringify!(var1))
3245 );
3246 assert_eq!(
3247 unsafe { ::std::ptr::addr_of!((*ptr).var2) as usize - ptr as usize },
3248 16usize,
3249 concat!("Offset of field: ", stringify!(hb_glyph_info_t), "::", stringify!(var2))
3250 );
3251}
3252pub const hb_glyph_flags_t_HB_GLYPH_FLAG_UNSAFE_TO_BREAK: hb_glyph_flags_t = 1;
3253pub const hb_glyph_flags_t_HB_GLYPH_FLAG_UNSAFE_TO_CONCAT: hb_glyph_flags_t = 2;
3254pub const hb_glyph_flags_t_HB_GLYPH_FLAG_SAFE_TO_INSERT_TATWEEL: hb_glyph_flags_t = 4;
3255pub const hb_glyph_flags_t_HB_GLYPH_FLAG_DEFINED: hb_glyph_flags_t = 7;
3256#[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.\n \t\t\t\t On the flip side, it means that when this\n \t\t\t\t flag is not present, then it is safe to break\n \t\t\t\t the glyph-run at the beginning of this\n \t\t\t\t cluster, and the two sides will represent the\n \t\t\t\t exact same result one would get if breaking\n \t\t\t\t input text at the beginning of this cluster\n \t\t\t\t and shaping the two sides separately.\n \t\t\t\t This can be used to optimize paragraph\n \t\t\t\t layout, by avoiding re-shaping of each line\n \t\t\t\t after line-breaking.\n @HB_GLYPH_FLAG_UNSAFE_TO_CONCAT: Indicates that if input text is changed on one\n \t\t\t\t side of the beginning of the cluster this glyph\n \t\t\t\t is part of, then the shaping results for the\n \t\t\t\t other side might change.\n \t\t\t\t Note that the absence of this flag will NOT by\n \t\t\t\t itself mean that it IS safe to concat text.\n \t\t\t\t Only two pieces of text both of which clear of\n \t\t\t\t this flag can be concatenated safely.\n \t\t\t\t This can be used to optimize paragraph\n \t\t\t\t layout, by avoiding re-shaping of each line\n \t\t\t\t after line-breaking, by limiting the\n \t\t\t\t reshaping to a small piece around the\n \t\t\t\t breaking position only, even if the breaking\n \t\t\t\t position carries the\n \t\t\t\t #HB_GLYPH_FLAG_UNSAFE_TO_BREAK or when\n \t\t\t\t hyphenation or other text transformation\n \t\t\t\t happens at line-break position, in the following\n \t\t\t\t way:\n \t\t\t\t 1. Iterate back from the line-break position\n \t\t\t\t until the first cluster start position that is\n \t\t\t\t NOT unsafe-to-concat, 2. shape the segment from\n \t\t\t\t there till the end of line, 3. check whether the\n \t\t\t\t resulting glyph-run also is clear of the\n \t\t\t\t unsafe-to-concat at its start-of-text position;\n \t\t\t\t if it is, just splice it into place and the line\n \t\t\t\t is shaped; If not, move on to a position further\n \t\t\t\t back that is clear of unsafe-to-concat and retry\n \t\t\t\t from there, and repeat.\n \t\t\t\t At the start of next line a similar algorithm can\n \t\t\t\t be implemented. That is: 1. Iterate forward from\n \t\t\t\t the line-break position until the first cluster\n \t\t\t\t start position that is NOT unsafe-to-concat, 2.\n \t\t\t\t shape the segment from beginning of the line to\n \t\t\t\t that position, 3. check whether the resulting\n \t\t\t\t glyph-run also is clear of the unsafe-to-concat\n \t\t\t\t at its end-of-text position; if it is, just splice\n \t\t\t\t it into place and the beginning is shaped; If not,\n \t\t\t\t move on to a position further forward that is clear\n \t\t\t\t of unsafe-to-concat and retry up to there, and repeat.\n \t\t\t\t A slight complication will arise in the\n \t\t\t\t implementation of the algorithm above,\n \t\t\t\t because while our buffer API has a way to\n \t\t\t\t return flags for position corresponding to\n \t\t\t\t start-of-text, there is currently no position\n \t\t\t\t corresponding to end-of-text. This limitation\n \t\t\t\t can be alleviated by shaping more text than needed\n \t\t\t\t and looking for unsafe-to-concat flag within text\n \t\t\t\t clusters.\n \t\t\t\t The #HB_GLYPH_FLAG_UNSAFE_TO_BREAK flag will\n \t\t\t\t always imply this flag.\n\t\t\t\t To use this flag, you must enable the buffer flag\n\t\t\t\t @HB_BUFFER_FLAG_PRODUCE_UNSAFE_TO_CONCAT during\n\t\t\t\t shaping, otherwise the buffer flag will not be\n\t\t\t\t reliably produced.\n \t\t\t\t Since: 4.0.0\n @HB_GLYPH_FLAG_SAFE_TO_INSERT_TATWEEL: In scripts that use elongation (Arabic,\nMongolian, Syriac, etc.), this flag signifies\nthat it is safe to insert a U+0640 TATWEEL\ncharacter before this cluster for elongation.\nThis flag does not determine the\nscript-specific elongation places, but only\nwhen it is safe to do the elongation without\ninterrupting text shaping.\nSince: 5.1.0\n @HB_GLYPH_FLAG_DEFINED: All the currently defined flags.\n\n Flags for #hb_glyph_info_t.\n\n Since: 1.5.0"]
3257pub type hb_glyph_flags_t = ::std::os::raw::c_uint;
3258extern "C" {
3259 pub fn hb_glyph_info_get_glyph_flags(info: *const hb_glyph_info_t) -> hb_glyph_flags_t;
3260}
3261#[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"]
3262#[repr(C)]
3263#[derive(Copy, Clone)]
3264pub struct hb_glyph_position_t {
3265 pub x_advance: hb_position_t,
3266 pub y_advance: hb_position_t,
3267 pub x_offset: hb_position_t,
3268 pub y_offset: hb_position_t,
3269 pub var: hb_var_int_t,
3270}
3271#[test]
3272fn bindgen_test_layout_hb_glyph_position_t() {
3273 const UNINIT: ::std::mem::MaybeUninit<hb_glyph_position_t> = ::std::mem::MaybeUninit::uninit();
3274 let ptr = UNINIT.as_ptr();
3275 assert_eq!(
3276 ::std::mem::size_of::<hb_glyph_position_t>(),
3277 20usize,
3278 concat!("Size of: ", stringify!(hb_glyph_position_t))
3279 );
3280 assert_eq!(
3281 ::std::mem::align_of::<hb_glyph_position_t>(),
3282 4usize,
3283 concat!("Alignment of ", stringify!(hb_glyph_position_t))
3284 );
3285 assert_eq!(
3286 unsafe { ::std::ptr::addr_of!((*ptr).x_advance) as usize - ptr as usize },
3287 0usize,
3288 concat!(
3289 "Offset of field: ",
3290 stringify!(hb_glyph_position_t),
3291 "::",
3292 stringify!(x_advance)
3293 )
3294 );
3295 assert_eq!(
3296 unsafe { ::std::ptr::addr_of!((*ptr).y_advance) as usize - ptr as usize },
3297 4usize,
3298 concat!(
3299 "Offset of field: ",
3300 stringify!(hb_glyph_position_t),
3301 "::",
3302 stringify!(y_advance)
3303 )
3304 );
3305 assert_eq!(
3306 unsafe { ::std::ptr::addr_of!((*ptr).x_offset) as usize - ptr as usize },
3307 8usize,
3308 concat!("Offset of field: ", stringify!(hb_glyph_position_t), "::", stringify!(x_offset))
3309 );
3310 assert_eq!(
3311 unsafe { ::std::ptr::addr_of!((*ptr).y_offset) as usize - ptr as usize },
3312 12usize,
3313 concat!("Offset of field: ", stringify!(hb_glyph_position_t), "::", stringify!(y_offset))
3314 );
3315 assert_eq!(
3316 unsafe { ::std::ptr::addr_of!((*ptr).var) as usize - ptr as usize },
3317 16usize,
3318 concat!("Offset of field: ", stringify!(hb_glyph_position_t), "::", stringify!(var))
3319 );
3320}
3321#[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."]
3322#[repr(C)]
3323#[derive(Debug, Copy, Clone)]
3324pub struct hb_segment_properties_t {
3325 pub direction: hb_direction_t,
3326 pub script: hb_script_t,
3327 pub language: hb_language_t,
3328 pub reserved1: *mut ::std::os::raw::c_void,
3329 pub reserved2: *mut ::std::os::raw::c_void,
3330}
3331#[test]
3332fn bindgen_test_layout_hb_segment_properties_t() {
3333 const UNINIT: ::std::mem::MaybeUninit<hb_segment_properties_t> =
3334 ::std::mem::MaybeUninit::uninit();
3335 let ptr = UNINIT.as_ptr();
3336 assert_eq!(
3337 ::std::mem::size_of::<hb_segment_properties_t>(),
3338 32usize,
3339 concat!("Size of: ", stringify!(hb_segment_properties_t))
3340 );
3341 assert_eq!(
3342 ::std::mem::align_of::<hb_segment_properties_t>(),
3343 8usize,
3344 concat!("Alignment of ", stringify!(hb_segment_properties_t))
3345 );
3346 assert_eq!(
3347 unsafe { ::std::ptr::addr_of!((*ptr).direction) as usize - ptr as usize },
3348 0usize,
3349 concat!(
3350 "Offset of field: ",
3351 stringify!(hb_segment_properties_t),
3352 "::",
3353 stringify!(direction)
3354 )
3355 );
3356 assert_eq!(
3357 unsafe { ::std::ptr::addr_of!((*ptr).script) as usize - ptr as usize },
3358 4usize,
3359 concat!(
3360 "Offset of field: ",
3361 stringify!(hb_segment_properties_t),
3362 "::",
3363 stringify!(script)
3364 )
3365 );
3366 assert_eq!(
3367 unsafe { ::std::ptr::addr_of!((*ptr).language) as usize - ptr as usize },
3368 8usize,
3369 concat!(
3370 "Offset of field: ",
3371 stringify!(hb_segment_properties_t),
3372 "::",
3373 stringify!(language)
3374 )
3375 );
3376 assert_eq!(
3377 unsafe { ::std::ptr::addr_of!((*ptr).reserved1) as usize - ptr as usize },
3378 16usize,
3379 concat!(
3380 "Offset of field: ",
3381 stringify!(hb_segment_properties_t),
3382 "::",
3383 stringify!(reserved1)
3384 )
3385 );
3386 assert_eq!(
3387 unsafe { ::std::ptr::addr_of!((*ptr).reserved2) as usize - ptr as usize },
3388 24usize,
3389 concat!(
3390 "Offset of field: ",
3391 stringify!(hb_segment_properties_t),
3392 "::",
3393 stringify!(reserved2)
3394 )
3395 );
3396}
3397extern "C" {
3398 pub fn hb_segment_properties_equal(
3399 a: *const hb_segment_properties_t,
3400 b: *const hb_segment_properties_t,
3401 ) -> hb_bool_t;
3402}
3403extern "C" {
3404 pub fn hb_segment_properties_hash(p: *const hb_segment_properties_t) -> ::std::os::raw::c_uint;
3405}
3406extern "C" {
3407 pub fn hb_segment_properties_overlay(
3408 p: *mut hb_segment_properties_t,
3409 src: *const hb_segment_properties_t,
3410 );
3411}
3412#[repr(C)]
3413#[derive(Debug, Copy, Clone)]
3414pub struct hb_buffer_t {
3415 _unused: [u8; 0],
3416}
3417extern "C" {
3418 pub fn hb_buffer_create() -> *mut hb_buffer_t;
3419}
3420extern "C" {
3421 pub fn hb_buffer_create_similar(src: *const hb_buffer_t) -> *mut hb_buffer_t;
3422}
3423extern "C" {
3424 pub fn hb_buffer_reset(buffer: *mut hb_buffer_t);
3425}
3426extern "C" {
3427 pub fn hb_buffer_get_empty() -> *mut hb_buffer_t;
3428}
3429extern "C" {
3430 pub fn hb_buffer_reference(buffer: *mut hb_buffer_t) -> *mut hb_buffer_t;
3431}
3432extern "C" {
3433 pub fn hb_buffer_destroy(buffer: *mut hb_buffer_t);
3434}
3435extern "C" {
3436 pub fn hb_buffer_set_user_data(
3437 buffer: *mut hb_buffer_t,
3438 key: *mut hb_user_data_key_t,
3439 data: *mut ::std::os::raw::c_void,
3440 destroy: hb_destroy_func_t,
3441 replace: hb_bool_t,
3442 ) -> hb_bool_t;
3443}
3444extern "C" {
3445 pub fn hb_buffer_get_user_data(
3446 buffer: *const hb_buffer_t,
3447 key: *mut hb_user_data_key_t,
3448 ) -> *mut ::std::os::raw::c_void;
3449}
3450pub const hb_buffer_content_type_t_HB_BUFFER_CONTENT_TYPE_INVALID: hb_buffer_content_type_t = 0;
3451pub const hb_buffer_content_type_t_HB_BUFFER_CONTENT_TYPE_UNICODE: hb_buffer_content_type_t = 1;
3452pub const hb_buffer_content_type_t_HB_BUFFER_CONTENT_TYPE_GLYPHS: hb_buffer_content_type_t = 2;
3453#[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).\n\n The type of #hb_buffer_t contents."]
3454pub type hb_buffer_content_type_t = ::std::os::raw::c_uint;
3455extern "C" {
3456 pub fn hb_buffer_set_content_type(
3457 buffer: *mut hb_buffer_t,
3458 content_type: hb_buffer_content_type_t,
3459 );
3460}
3461extern "C" {
3462 pub fn hb_buffer_get_content_type(buffer: *const hb_buffer_t) -> hb_buffer_content_type_t;
3463}
3464extern "C" {
3465 pub fn hb_buffer_set_unicode_funcs(
3466 buffer: *mut hb_buffer_t,
3467 unicode_funcs: *mut hb_unicode_funcs_t,
3468 );
3469}
3470extern "C" {
3471 pub fn hb_buffer_get_unicode_funcs(buffer: *const hb_buffer_t) -> *mut hb_unicode_funcs_t;
3472}
3473extern "C" {
3474 pub fn hb_buffer_set_direction(buffer: *mut hb_buffer_t, direction: hb_direction_t);
3475}
3476extern "C" {
3477 pub fn hb_buffer_get_direction(buffer: *const hb_buffer_t) -> hb_direction_t;
3478}
3479extern "C" {
3480 pub fn hb_buffer_set_script(buffer: *mut hb_buffer_t, script: hb_script_t);
3481}
3482extern "C" {
3483 pub fn hb_buffer_get_script(buffer: *const hb_buffer_t) -> hb_script_t;
3484}
3485extern "C" {
3486 pub fn hb_buffer_set_language(buffer: *mut hb_buffer_t, language: hb_language_t);
3487}
3488extern "C" {
3489 pub fn hb_buffer_get_language(buffer: *const hb_buffer_t) -> hb_language_t;
3490}
3491extern "C" {
3492 pub fn hb_buffer_set_segment_properties(
3493 buffer: *mut hb_buffer_t,
3494 props: *const hb_segment_properties_t,
3495 );
3496}
3497extern "C" {
3498 pub fn hb_buffer_get_segment_properties(
3499 buffer: *const hb_buffer_t,
3500 props: *mut hb_segment_properties_t,
3501 );
3502}
3503extern "C" {
3504 pub fn hb_buffer_guess_segment_properties(buffer: *mut hb_buffer_t);
3505}
3506pub const hb_buffer_flags_t_HB_BUFFER_FLAG_DEFAULT: hb_buffer_flags_t = 0;
3507pub const hb_buffer_flags_t_HB_BUFFER_FLAG_BOT: hb_buffer_flags_t = 1;
3508pub const hb_buffer_flags_t_HB_BUFFER_FLAG_EOT: hb_buffer_flags_t = 2;
3509pub const hb_buffer_flags_t_HB_BUFFER_FLAG_PRESERVE_DEFAULT_IGNORABLES: hb_buffer_flags_t = 4;
3510pub const hb_buffer_flags_t_HB_BUFFER_FLAG_REMOVE_DEFAULT_IGNORABLES: hb_buffer_flags_t = 8;
3511pub const hb_buffer_flags_t_HB_BUFFER_FLAG_DO_NOT_INSERT_DOTTED_CIRCLE: hb_buffer_flags_t = 16;
3512pub const hb_buffer_flags_t_HB_BUFFER_FLAG_VERIFY: hb_buffer_flags_t = 32;
3513pub const hb_buffer_flags_t_HB_BUFFER_FLAG_PRODUCE_UNSAFE_TO_CONCAT: hb_buffer_flags_t = 64;
3514pub const hb_buffer_flags_t_HB_BUFFER_FLAG_PRODUCE_SAFE_TO_INSERT_TATWEEL: hb_buffer_flags_t = 128;
3515pub const hb_buffer_flags_t_HB_BUFFER_FLAG_DEFINED: hb_buffer_flags_t = 255;
3516#[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.0\n @HB_BUFFER_FLAG_VERIFY:\n flag indicating that the hb_shape() call and its variants\n should perform various verification processes on the results\n of the shaping operation on the buffer. If the verification\n fails, then either a buffer message is sent, if a message\n handler is installed on the buffer, or a message is written\n to standard error. In either case, the shaping result might\n be modified to show the failed output. Since: 3.4.0\n @HB_BUFFER_FLAG_PRODUCE_UNSAFE_TO_CONCAT:\n flag indicating that the @HB_GLYPH_FLAG_UNSAFE_TO_CONCAT\n glyph-flag should be produced by the shaper. By default\n it will not be produced since it incurs a cost. Since: 4.0.0\n @HB_BUFFER_FLAG_PRODUCE_SAFE_TO_INSERT_TATWEEL:\n flag indicating that the @HB_GLYPH_FLAG_SAFE_TO_INSERT_TATWEEL\n glyph-flag should be produced by the shaper. By default\n it will not be produced. Since: 5.1.0\n @HB_BUFFER_FLAG_DEFINED: All currently defined flags: Since: 4.4.0\n\n Flags for #hb_buffer_t.\n\n Since: 0.9.20"]
3517pub type hb_buffer_flags_t = ::std::os::raw::c_uint;
3518extern "C" {
3519 pub fn hb_buffer_set_flags(buffer: *mut hb_buffer_t, flags: hb_buffer_flags_t);
3520}
3521extern "C" {
3522 pub fn hb_buffer_get_flags(buffer: *const hb_buffer_t) -> hb_buffer_flags_t;
3523}
3524pub const hb_buffer_cluster_level_t_HB_BUFFER_CLUSTER_LEVEL_MONOTONE_GRAPHEMES:
3525 hb_buffer_cluster_level_t = 0;
3526pub const hb_buffer_cluster_level_t_HB_BUFFER_CLUSTER_LEVEL_MONOTONE_CHARACTERS:
3527 hb_buffer_cluster_level_t = 1;
3528pub const hb_buffer_cluster_level_t_HB_BUFFER_CLUSTER_LEVEL_CHARACTERS: hb_buffer_cluster_level_t =
3529 2;
3530pub const hb_buffer_cluster_level_t_HB_BUFFER_CLUSTER_LEVEL_DEFAULT: hb_buffer_cluster_level_t = 0;
3531#[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"]
3532pub type hb_buffer_cluster_level_t = ::std::os::raw::c_uint;
3533extern "C" {
3534 pub fn hb_buffer_set_cluster_level(
3535 buffer: *mut hb_buffer_t,
3536 cluster_level: hb_buffer_cluster_level_t,
3537 );
3538}
3539extern "C" {
3540 pub fn hb_buffer_get_cluster_level(buffer: *const hb_buffer_t) -> hb_buffer_cluster_level_t;
3541}
3542extern "C" {
3543 pub fn hb_buffer_set_replacement_codepoint(
3544 buffer: *mut hb_buffer_t,
3545 replacement: hb_codepoint_t,
3546 );
3547}
3548extern "C" {
3549 pub fn hb_buffer_get_replacement_codepoint(buffer: *const hb_buffer_t) -> hb_codepoint_t;
3550}
3551extern "C" {
3552 pub fn hb_buffer_set_invisible_glyph(buffer: *mut hb_buffer_t, invisible: hb_codepoint_t);
3553}
3554extern "C" {
3555 pub fn hb_buffer_get_invisible_glyph(buffer: *const hb_buffer_t) -> hb_codepoint_t;
3556}
3557extern "C" {
3558 pub fn hb_buffer_set_not_found_glyph(buffer: *mut hb_buffer_t, not_found: hb_codepoint_t);
3559}
3560extern "C" {
3561 pub fn hb_buffer_get_not_found_glyph(buffer: *const hb_buffer_t) -> hb_codepoint_t;
3562}
3563extern "C" {
3564 pub fn hb_buffer_set_random_state(buffer: *mut hb_buffer_t, state: ::std::os::raw::c_uint);
3565}
3566extern "C" {
3567 pub fn hb_buffer_get_random_state(buffer: *const hb_buffer_t) -> ::std::os::raw::c_uint;
3568}
3569extern "C" {
3570 pub fn hb_buffer_clear_contents(buffer: *mut hb_buffer_t);
3571}
3572extern "C" {
3573 pub fn hb_buffer_pre_allocate(
3574 buffer: *mut hb_buffer_t,
3575 size: ::std::os::raw::c_uint,
3576 ) -> hb_bool_t;
3577}
3578extern "C" {
3579 pub fn hb_buffer_allocation_successful(buffer: *mut hb_buffer_t) -> hb_bool_t;
3580}
3581extern "C" {
3582 pub fn hb_buffer_reverse(buffer: *mut hb_buffer_t);
3583}
3584extern "C" {
3585 pub fn hb_buffer_reverse_range(
3586 buffer: *mut hb_buffer_t,
3587 start: ::std::os::raw::c_uint,
3588 end: ::std::os::raw::c_uint,
3589 );
3590}
3591extern "C" {
3592 pub fn hb_buffer_reverse_clusters(buffer: *mut hb_buffer_t);
3593}
3594extern "C" {
3595 pub fn hb_buffer_add(
3596 buffer: *mut hb_buffer_t,
3597 codepoint: hb_codepoint_t,
3598 cluster: ::std::os::raw::c_uint,
3599 );
3600}
3601extern "C" {
3602 pub fn hb_buffer_add_utf8(
3603 buffer: *mut hb_buffer_t,
3604 text: *const ::std::os::raw::c_char,
3605 text_length: ::std::os::raw::c_int,
3606 item_offset: ::std::os::raw::c_uint,
3607 item_length: ::std::os::raw::c_int,
3608 );
3609}
3610extern "C" {
3611 pub fn hb_buffer_add_utf16(
3612 buffer: *mut hb_buffer_t,
3613 text: *const u16,
3614 text_length: ::std::os::raw::c_int,
3615 item_offset: ::std::os::raw::c_uint,
3616 item_length: ::std::os::raw::c_int,
3617 );
3618}
3619extern "C" {
3620 pub fn hb_buffer_add_utf32(
3621 buffer: *mut hb_buffer_t,
3622 text: *const u32,
3623 text_length: ::std::os::raw::c_int,
3624 item_offset: ::std::os::raw::c_uint,
3625 item_length: ::std::os::raw::c_int,
3626 );
3627}
3628extern "C" {
3629 pub fn hb_buffer_add_latin1(
3630 buffer: *mut hb_buffer_t,
3631 text: *const u8,
3632 text_length: ::std::os::raw::c_int,
3633 item_offset: ::std::os::raw::c_uint,
3634 item_length: ::std::os::raw::c_int,
3635 );
3636}
3637extern "C" {
3638 pub fn hb_buffer_add_codepoints(
3639 buffer: *mut hb_buffer_t,
3640 text: *const hb_codepoint_t,
3641 text_length: ::std::os::raw::c_int,
3642 item_offset: ::std::os::raw::c_uint,
3643 item_length: ::std::os::raw::c_int,
3644 );
3645}
3646extern "C" {
3647 pub fn hb_buffer_append(
3648 buffer: *mut hb_buffer_t,
3649 source: *const hb_buffer_t,
3650 start: ::std::os::raw::c_uint,
3651 end: ::std::os::raw::c_uint,
3652 );
3653}
3654extern "C" {
3655 pub fn hb_buffer_set_length(
3656 buffer: *mut hb_buffer_t,
3657 length: ::std::os::raw::c_uint,
3658 ) -> hb_bool_t;
3659}
3660extern "C" {
3661 pub fn hb_buffer_get_length(buffer: *const hb_buffer_t) -> ::std::os::raw::c_uint;
3662}
3663extern "C" {
3664 pub fn hb_buffer_get_glyph_infos(
3665 buffer: *mut hb_buffer_t,
3666 length: *mut ::std::os::raw::c_uint,
3667 ) -> *mut hb_glyph_info_t;
3668}
3669extern "C" {
3670 pub fn hb_buffer_get_glyph_positions(
3671 buffer: *mut hb_buffer_t,
3672 length: *mut ::std::os::raw::c_uint,
3673 ) -> *mut hb_glyph_position_t;
3674}
3675extern "C" {
3676 pub fn hb_buffer_has_positions(buffer: *mut hb_buffer_t) -> hb_bool_t;
3677}
3678extern "C" {
3679 pub fn hb_buffer_normalize_glyphs(buffer: *mut hb_buffer_t);
3680}
3681pub const hb_buffer_serialize_flags_t_HB_BUFFER_SERIALIZE_FLAG_DEFAULT:
3682 hb_buffer_serialize_flags_t = 0;
3683pub const hb_buffer_serialize_flags_t_HB_BUFFER_SERIALIZE_FLAG_NO_CLUSTERS:
3684 hb_buffer_serialize_flags_t = 1;
3685pub const hb_buffer_serialize_flags_t_HB_BUFFER_SERIALIZE_FLAG_NO_POSITIONS:
3686 hb_buffer_serialize_flags_t = 2;
3687pub const hb_buffer_serialize_flags_t_HB_BUFFER_SERIALIZE_FLAG_NO_GLYPH_NAMES:
3688 hb_buffer_serialize_flags_t = 4;
3689pub const hb_buffer_serialize_flags_t_HB_BUFFER_SERIALIZE_FLAG_GLYPH_EXTENTS:
3690 hb_buffer_serialize_flags_t = 8;
3691pub const hb_buffer_serialize_flags_t_HB_BUFFER_SERIALIZE_FLAG_GLYPH_FLAGS:
3692 hb_buffer_serialize_flags_t = 16;
3693pub const hb_buffer_serialize_flags_t_HB_BUFFER_SERIALIZE_FLAG_NO_ADVANCES:
3694 hb_buffer_serialize_flags_t = 32;
3695pub const hb_buffer_serialize_flags_t_HB_BUFFER_SERIALIZE_FLAG_DEFINED:
3696 hb_buffer_serialize_flags_t = 63;
3697#[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 @HB_BUFFER_SERIALIZE_FLAG_DEFINED: All currently defined flags. Since: 4.4.0\n\n Flags that control what glyph information are serialized in hb_buffer_serialize_glyphs().\n\n Since: 0.9.20"]
3698pub type hb_buffer_serialize_flags_t = ::std::os::raw::c_uint;
3699pub const hb_buffer_serialize_format_t_HB_BUFFER_SERIALIZE_FORMAT_TEXT:
3700 hb_buffer_serialize_format_t = 1413830740;
3701pub const hb_buffer_serialize_format_t_HB_BUFFER_SERIALIZE_FORMAT_JSON:
3702 hb_buffer_serialize_format_t = 1246973774;
3703pub const hb_buffer_serialize_format_t_HB_BUFFER_SERIALIZE_FORMAT_INVALID:
3704 hb_buffer_serialize_format_t = 0;
3705#[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"]
3706pub type hb_buffer_serialize_format_t = ::std::os::raw::c_uint;
3707extern "C" {
3708 pub fn hb_buffer_serialize_format_from_string(
3709 str_: *const ::std::os::raw::c_char,
3710 len: ::std::os::raw::c_int,
3711 ) -> hb_buffer_serialize_format_t;
3712}
3713extern "C" {
3714 pub fn hb_buffer_serialize_format_to_string(
3715 format: hb_buffer_serialize_format_t,
3716 ) -> *const ::std::os::raw::c_char;
3717}
3718extern "C" {
3719 pub fn hb_buffer_serialize_list_formats() -> *mut *const ::std::os::raw::c_char;
3720}
3721extern "C" {
3722 pub fn hb_buffer_serialize_glyphs(
3723 buffer: *mut hb_buffer_t,
3724 start: ::std::os::raw::c_uint,
3725 end: ::std::os::raw::c_uint,
3726 buf: *mut ::std::os::raw::c_char,
3727 buf_size: ::std::os::raw::c_uint,
3728 buf_consumed: *mut ::std::os::raw::c_uint,
3729 font: *mut hb_font_t,
3730 format: hb_buffer_serialize_format_t,
3731 flags: hb_buffer_serialize_flags_t,
3732 ) -> ::std::os::raw::c_uint;
3733}
3734extern "C" {
3735 pub fn hb_buffer_serialize_unicode(
3736 buffer: *mut hb_buffer_t,
3737 start: ::std::os::raw::c_uint,
3738 end: ::std::os::raw::c_uint,
3739 buf: *mut ::std::os::raw::c_char,
3740 buf_size: ::std::os::raw::c_uint,
3741 buf_consumed: *mut ::std::os::raw::c_uint,
3742 format: hb_buffer_serialize_format_t,
3743 flags: hb_buffer_serialize_flags_t,
3744 ) -> ::std::os::raw::c_uint;
3745}
3746extern "C" {
3747 pub fn hb_buffer_serialize(
3748 buffer: *mut hb_buffer_t,
3749 start: ::std::os::raw::c_uint,
3750 end: ::std::os::raw::c_uint,
3751 buf: *mut ::std::os::raw::c_char,
3752 buf_size: ::std::os::raw::c_uint,
3753 buf_consumed: *mut ::std::os::raw::c_uint,
3754 font: *mut hb_font_t,
3755 format: hb_buffer_serialize_format_t,
3756 flags: hb_buffer_serialize_flags_t,
3757 ) -> ::std::os::raw::c_uint;
3758}
3759extern "C" {
3760 pub fn hb_buffer_deserialize_glyphs(
3761 buffer: *mut hb_buffer_t,
3762 buf: *const ::std::os::raw::c_char,
3763 buf_len: ::std::os::raw::c_int,
3764 end_ptr: *mut *const ::std::os::raw::c_char,
3765 font: *mut hb_font_t,
3766 format: hb_buffer_serialize_format_t,
3767 ) -> hb_bool_t;
3768}
3769extern "C" {
3770 pub fn hb_buffer_deserialize_unicode(
3771 buffer: *mut hb_buffer_t,
3772 buf: *const ::std::os::raw::c_char,
3773 buf_len: ::std::os::raw::c_int,
3774 end_ptr: *mut *const ::std::os::raw::c_char,
3775 format: hb_buffer_serialize_format_t,
3776 ) -> hb_bool_t;
3777}
3778pub const hb_buffer_diff_flags_t_HB_BUFFER_DIFF_FLAG_EQUAL: hb_buffer_diff_flags_t = 0;
3779pub const hb_buffer_diff_flags_t_HB_BUFFER_DIFF_FLAG_CONTENT_TYPE_MISMATCH: hb_buffer_diff_flags_t =
3780 1;
3781pub const hb_buffer_diff_flags_t_HB_BUFFER_DIFF_FLAG_LENGTH_MISMATCH: hb_buffer_diff_flags_t = 2;
3782pub const hb_buffer_diff_flags_t_HB_BUFFER_DIFF_FLAG_NOTDEF_PRESENT: hb_buffer_diff_flags_t = 4;
3783pub const hb_buffer_diff_flags_t_HB_BUFFER_DIFF_FLAG_DOTTED_CIRCLE_PRESENT: hb_buffer_diff_flags_t =
3784 8;
3785pub const hb_buffer_diff_flags_t_HB_BUFFER_DIFF_FLAG_CODEPOINT_MISMATCH: hb_buffer_diff_flags_t =
3786 16;
3787pub const hb_buffer_diff_flags_t_HB_BUFFER_DIFF_FLAG_CLUSTER_MISMATCH: hb_buffer_diff_flags_t = 32;
3788pub const hb_buffer_diff_flags_t_HB_BUFFER_DIFF_FLAG_GLYPH_FLAGS_MISMATCH: hb_buffer_diff_flags_t =
3789 64;
3790pub const hb_buffer_diff_flags_t_HB_BUFFER_DIFF_FLAG_POSITION_MISMATCH: hb_buffer_diff_flags_t =
3791 128;
3792#[doc = " hb_buffer_diff_flags_t:\n @HB_BUFFER_DIFF_FLAG_EQUAL: equal buffers.\n @HB_BUFFER_DIFF_FLAG_CONTENT_TYPE_MISMATCH: buffers with different\n #hb_buffer_content_type_t.\n @HB_BUFFER_DIFF_FLAG_LENGTH_MISMATCH: buffers with differing length.\n @HB_BUFFER_DIFF_FLAG_NOTDEF_PRESENT: `.notdef` glyph is present in the\n reference buffer.\n @HB_BUFFER_DIFF_FLAG_DOTTED_CIRCLE_PRESENT: dotted circle glyph is present\n in the reference buffer.\n @HB_BUFFER_DIFF_FLAG_CODEPOINT_MISMATCH: difference in #hb_glyph_info_t.codepoint\n @HB_BUFFER_DIFF_FLAG_CLUSTER_MISMATCH: difference in #hb_glyph_info_t.cluster\n @HB_BUFFER_DIFF_FLAG_GLYPH_FLAGS_MISMATCH: difference in #hb_glyph_flags_t.\n @HB_BUFFER_DIFF_FLAG_POSITION_MISMATCH: difference in #hb_glyph_position_t.\n\n Flags from comparing two #hb_buffer_t's.\n\n Buffer with different #hb_buffer_content_type_t cannot be meaningfully\n compared in any further detail.\n\n For buffers with differing length, the per-glyph comparison is not\n attempted, though we do still scan reference buffer for dotted circle and\n `.notdef` glyphs.\n\n If the buffers have the same length, we compare them glyph-by-glyph and\n report which aspect(s) of the glyph info/position are different.\n\n Since: 1.5.0"]
3793pub type hb_buffer_diff_flags_t = ::std::os::raw::c_uint;
3794extern "C" {
3795 pub fn hb_buffer_diff(
3796 buffer: *mut hb_buffer_t,
3797 reference: *mut hb_buffer_t,
3798 dottedcircle_glyph: hb_codepoint_t,
3799 position_fuzz: ::std::os::raw::c_uint,
3800 ) -> hb_buffer_diff_flags_t;
3801}
3802#[doc = " hb_buffer_message_func_t:\n @buffer: An #hb_buffer_t to work upon\n @font: The #hb_font_t the @buffer is shaped with\n @message: `NULL`-terminated message passed to the function\n @user_data: User data pointer passed by the caller\n\n A callback method for #hb_buffer_t. The method gets called with the\n #hb_buffer_t it was set on, the #hb_font_t the buffer is shaped with and a\n message describing what step of the shaping process will be performed.\n Returning `false` from this method will skip this shaping step and move to\n the next one.\n\n Return value: `true` to perform the shaping step, `false` to skip it.\n\n Since: 1.1.3"]
3803pub type hb_buffer_message_func_t = ::std::option::Option<
3804 unsafe extern "C" fn(
3805 buffer: *mut hb_buffer_t,
3806 font: *mut hb_font_t,
3807 message: *const ::std::os::raw::c_char,
3808 user_data: *mut ::std::os::raw::c_void,
3809 ) -> hb_bool_t,
3810>;
3811extern "C" {
3812 pub fn hb_buffer_set_message_func(
3813 buffer: *mut hb_buffer_t,
3814 func: hb_buffer_message_func_t,
3815 user_data: *mut ::std::os::raw::c_void,
3816 destroy: hb_destroy_func_t,
3817 );
3818}
3819#[doc = " hb_font_get_glyph_func_t:\n @font: #hb_font_t to work upon\n @font_data: @font user data pointer\n @unicode: The Unicode code point to query\n @variation_selector: The variation-selector code point to query\n @glyph: (out): The glyph ID retrieved\n @user_data: User data pointer passed by the caller\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 font, with an optional variation selector.\n\n Return value: `true` if data found, `false` otherwise\n Deprecated: 1.2.3\n"]
3820pub type hb_font_get_glyph_func_t = ::std::option::Option<
3821 unsafe extern "C" fn(
3822 font: *mut hb_font_t,
3823 font_data: *mut ::std::os::raw::c_void,
3824 unicode: hb_codepoint_t,
3825 variation_selector: hb_codepoint_t,
3826 glyph: *mut hb_codepoint_t,
3827 user_data: *mut ::std::os::raw::c_void,
3828 ) -> hb_bool_t,
3829>;
3830extern "C" {
3831 pub fn hb_font_funcs_set_glyph_func(
3832 ffuncs: *mut hb_font_funcs_t,
3833 func: hb_font_get_glyph_func_t,
3834 user_data: *mut ::std::os::raw::c_void,
3835 destroy: hb_destroy_func_t,
3836 );
3837}
3838#[doc = " hb_unicode_eastasian_width_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 Deprecated: 2.0.0"]
3839pub type hb_unicode_eastasian_width_func_t = ::std::option::Option<
3840 unsafe extern "C" fn(
3841 ufuncs: *mut hb_unicode_funcs_t,
3842 unicode: hb_codepoint_t,
3843 user_data: *mut ::std::os::raw::c_void,
3844 ) -> ::std::os::raw::c_uint,
3845>;
3846extern "C" {
3847 #[doc = " hb_unicode_funcs_set_eastasian_width_func:\n @ufuncs: a Unicode-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: (nullable): The function to call when @user_data is not needed anymore\n\n Sets the implementation function for #hb_unicode_eastasian_width_func_t.\n\n Since: 0.9.2\n Deprecated: 2.0.0"]
3848 pub fn hb_unicode_funcs_set_eastasian_width_func(
3849 ufuncs: *mut hb_unicode_funcs_t,
3850 func: hb_unicode_eastasian_width_func_t,
3851 user_data: *mut ::std::os::raw::c_void,
3852 destroy: hb_destroy_func_t,
3853 );
3854}
3855extern "C" {
3856 #[doc = " hb_unicode_eastasian_width:\n @ufuncs: a Unicode-function structure\n @unicode: The code point to query\n\n Don't use. Not used by HarfBuzz.\n\n Since: 0.9.2\n Deprecated: 2.0.0"]
3857 pub fn hb_unicode_eastasian_width(
3858 ufuncs: *mut hb_unicode_funcs_t,
3859 unicode: hb_codepoint_t,
3860 ) -> ::std::os::raw::c_uint;
3861}
3862#[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"]
3863pub type hb_unicode_decompose_compatibility_func_t = ::std::option::Option<
3864 unsafe extern "C" fn(
3865 ufuncs: *mut hb_unicode_funcs_t,
3866 u: hb_codepoint_t,
3867 decomposed: *mut hb_codepoint_t,
3868 user_data: *mut ::std::os::raw::c_void,
3869 ) -> ::std::os::raw::c_uint,
3870>;
3871extern "C" {
3872 #[doc = " hb_unicode_funcs_set_decompose_compatibility_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: (nullable): The function to call when @user_data is not needed anymore\n\n Sets the implementation function for #hb_unicode_decompose_compatibility_func_t.\n\n\n\n Since: 0.9.2\n Deprecated: 2.0.0"]
3873 pub fn hb_unicode_funcs_set_decompose_compatibility_func(
3874 ufuncs: *mut hb_unicode_funcs_t,
3875 func: hb_unicode_decompose_compatibility_func_t,
3876 user_data: *mut ::std::os::raw::c_void,
3877 destroy: hb_destroy_func_t,
3878 );
3879}
3880extern "C" {
3881 pub fn hb_unicode_decompose_compatibility(
3882 ufuncs: *mut hb_unicode_funcs_t,
3883 u: hb_codepoint_t,
3884 decomposed: *mut hb_codepoint_t,
3885 ) -> ::std::os::raw::c_uint;
3886}
3887#[doc = " hb_font_get_glyph_v_kerning_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 kerning-adjustment value for a glyph-pair in\n the specified font, for vertical text segments.\n"]
3888pub type hb_font_get_glyph_v_kerning_func_t = hb_font_get_glyph_kerning_func_t;
3889extern "C" {
3890 #[doc = " hb_font_funcs_set_glyph_v_kerning_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: (nullable): The function to call when @user_data is not needed anymore\n\n Sets the implementation function for #hb_font_get_glyph_v_kerning_func_t.\n\n Since: 0.9.2\n Deprecated: 2.0.0"]
3891 pub fn hb_font_funcs_set_glyph_v_kerning_func(
3892 ffuncs: *mut hb_font_funcs_t,
3893 func: hb_font_get_glyph_v_kerning_func_t,
3894 user_data: *mut ::std::os::raw::c_void,
3895 destroy: hb_destroy_func_t,
3896 );
3897}
3898extern "C" {
3899 pub fn hb_font_get_glyph_v_kerning(
3900 font: *mut hb_font_t,
3901 top_glyph: hb_codepoint_t,
3902 bottom_glyph: hb_codepoint_t,
3903 ) -> hb_position_t;
3904}
3905#[doc = " hb_font_get_glyph_shape_func_t:\n @font: #hb_font_t to work upon\n @font_data: @font user data pointer\n @glyph: The glyph ID to query\n @draw_funcs: The draw functions to send the shape data to\n @draw_data: The data accompanying the draw functions\n @user_data: User data pointer passed by the caller\n\n A virtual method for the #hb_font_funcs_t of an #hb_font_t object.\n\n Since: 4.0.0\n Deprecated: 7.0.0: Use #hb_font_draw_glyph_func_t instead"]
3906pub type hb_font_get_glyph_shape_func_t = ::std::option::Option<
3907 unsafe extern "C" fn(
3908 font: *mut hb_font_t,
3909 font_data: *mut ::std::os::raw::c_void,
3910 glyph: hb_codepoint_t,
3911 draw_funcs: *mut hb_draw_funcs_t,
3912 draw_data: *mut ::std::os::raw::c_void,
3913 user_data: *mut ::std::os::raw::c_void,
3914 ),
3915>;
3916extern "C" {
3917 #[doc = " hb_font_funcs_set_glyph_shape_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: (nullable): The function to call when @user_data is not needed anymore\n\n Sets the implementation function for #hb_font_get_glyph_shape_func_t,\n which is the same as #hb_font_draw_glyph_func_t.\n\n Since: 4.0.0\n Deprecated: 7.0.0: Use hb_font_funcs_set_draw_glyph_func() instead"]
3918 pub fn hb_font_funcs_set_glyph_shape_func(
3919 ffuncs: *mut hb_font_funcs_t,
3920 func: hb_font_get_glyph_shape_func_t,
3921 user_data: *mut ::std::os::raw::c_void,
3922 destroy: hb_destroy_func_t,
3923 );
3924}
3925extern "C" {
3926 pub fn hb_font_get_glyph_shape(
3927 font: *mut hb_font_t,
3928 glyph: hb_codepoint_t,
3929 dfuncs: *mut hb_draw_funcs_t,
3930 draw_data: *mut ::std::os::raw::c_void,
3931 );
3932}
3933extern "C" {
3934 pub fn hb_shape(
3935 font: *mut hb_font_t,
3936 buffer: *mut hb_buffer_t,
3937 features: *const hb_feature_t,
3938 num_features: ::std::os::raw::c_uint,
3939 );
3940}
3941extern "C" {
3942 pub fn hb_shape_full(
3943 font: *mut hb_font_t,
3944 buffer: *mut hb_buffer_t,
3945 features: *const hb_feature_t,
3946 num_features: ::std::os::raw::c_uint,
3947 shaper_list: *const *const ::std::os::raw::c_char,
3948 ) -> hb_bool_t;
3949}
3950extern "C" {
3951 pub fn hb_shape_justify(
3952 font: *mut hb_font_t,
3953 buffer: *mut hb_buffer_t,
3954 features: *const hb_feature_t,
3955 num_features: ::std::os::raw::c_uint,
3956 shaper_list: *const *const ::std::os::raw::c_char,
3957 min_target_advance: f32,
3958 max_target_advance: f32,
3959 advance: *mut f32,
3960 var_tag: *mut hb_tag_t,
3961 var_value: *mut f32,
3962 ) -> hb_bool_t;
3963}
3964extern "C" {
3965 pub fn hb_shape_list_shapers() -> *mut *const ::std::os::raw::c_char;
3966}
3967#[repr(C)]
3968#[derive(Debug, Copy, Clone)]
3969pub struct hb_shape_plan_t {
3970 _unused: [u8; 0],
3971}
3972extern "C" {
3973 pub fn hb_shape_plan_create(
3974 face: *mut hb_face_t,
3975 props: *const hb_segment_properties_t,
3976 user_features: *const hb_feature_t,
3977 num_user_features: ::std::os::raw::c_uint,
3978 shaper_list: *const *const ::std::os::raw::c_char,
3979 ) -> *mut hb_shape_plan_t;
3980}
3981extern "C" {
3982 pub fn hb_shape_plan_create_cached(
3983 face: *mut hb_face_t,
3984 props: *const hb_segment_properties_t,
3985 user_features: *const hb_feature_t,
3986 num_user_features: ::std::os::raw::c_uint,
3987 shaper_list: *const *const ::std::os::raw::c_char,
3988 ) -> *mut hb_shape_plan_t;
3989}
3990extern "C" {
3991 pub fn hb_shape_plan_create2(
3992 face: *mut hb_face_t,
3993 props: *const hb_segment_properties_t,
3994 user_features: *const hb_feature_t,
3995 num_user_features: ::std::os::raw::c_uint,
3996 coords: *const ::std::os::raw::c_int,
3997 num_coords: ::std::os::raw::c_uint,
3998 shaper_list: *const *const ::std::os::raw::c_char,
3999 ) -> *mut hb_shape_plan_t;
4000}
4001extern "C" {
4002 pub fn hb_shape_plan_create_cached2(
4003 face: *mut hb_face_t,
4004 props: *const hb_segment_properties_t,
4005 user_features: *const hb_feature_t,
4006 num_user_features: ::std::os::raw::c_uint,
4007 coords: *const ::std::os::raw::c_int,
4008 num_coords: ::std::os::raw::c_uint,
4009 shaper_list: *const *const ::std::os::raw::c_char,
4010 ) -> *mut hb_shape_plan_t;
4011}
4012extern "C" {
4013 pub fn hb_shape_plan_get_empty() -> *mut hb_shape_plan_t;
4014}
4015extern "C" {
4016 pub fn hb_shape_plan_reference(shape_plan: *mut hb_shape_plan_t) -> *mut hb_shape_plan_t;
4017}
4018extern "C" {
4019 pub fn hb_shape_plan_destroy(shape_plan: *mut hb_shape_plan_t);
4020}
4021extern "C" {
4022 pub fn hb_shape_plan_set_user_data(
4023 shape_plan: *mut hb_shape_plan_t,
4024 key: *mut hb_user_data_key_t,
4025 data: *mut ::std::os::raw::c_void,
4026 destroy: hb_destroy_func_t,
4027 replace: hb_bool_t,
4028 ) -> hb_bool_t;
4029}
4030extern "C" {
4031 pub fn hb_shape_plan_get_user_data(
4032 shape_plan: *const hb_shape_plan_t,
4033 key: *mut hb_user_data_key_t,
4034 ) -> *mut ::std::os::raw::c_void;
4035}
4036extern "C" {
4037 pub fn hb_shape_plan_execute(
4038 shape_plan: *mut hb_shape_plan_t,
4039 font: *mut hb_font_t,
4040 buffer: *mut hb_buffer_t,
4041 features: *const hb_feature_t,
4042 num_features: ::std::os::raw::c_uint,
4043 ) -> hb_bool_t;
4044}
4045extern "C" {
4046 pub fn hb_shape_plan_get_shaper(
4047 shape_plan: *mut hb_shape_plan_t,
4048 ) -> *const ::std::os::raw::c_char;
4049}
4050pub const hb_style_tag_t_HB_STYLE_TAG_ITALIC: hb_style_tag_t = 1769234796;
4051pub const hb_style_tag_t_HB_STYLE_TAG_OPTICAL_SIZE: hb_style_tag_t = 1869640570;
4052pub const hb_style_tag_t_HB_STYLE_TAG_SLANT_ANGLE: hb_style_tag_t = 1936486004;
4053pub const hb_style_tag_t_HB_STYLE_TAG_SLANT_RATIO: hb_style_tag_t = 1399615092;
4054pub const hb_style_tag_t_HB_STYLE_TAG_WIDTH: hb_style_tag_t = 2003072104;
4055pub const hb_style_tag_t_HB_STYLE_TAG_WEIGHT: hb_style_tag_t = 2003265652;
4056pub const hb_style_tag_t__HB_STYLE_TAG_MAX_VALUE: hb_style_tag_t = 2147483647;
4057#[doc = " hb_style_tag_t:\n @HB_STYLE_TAG_ITALIC: Used to vary between non-italic and italic.\n A value of 0 can be interpreted as \"Roman\" (non-italic); a value of 1 can\n be interpreted as (fully) italic.\n @HB_STYLE_TAG_OPTICAL_SIZE: Used to vary design to suit different text sizes.\n Non-zero. Values can be interpreted as text size, in points.\n @HB_STYLE_TAG_SLANT_ANGLE: Used to vary between upright and slanted text. Values\n must be greater than -90 and less than +90. Values can be interpreted as\n the angle, in counter-clockwise degrees, of oblique slant from whatever the\n designer considers to be upright for that font design. Typical right-leaning\n Italic fonts have a negative slant angle (typically around -12)\n @HB_STYLE_TAG_SLANT_RATIO: same as @HB_STYLE_TAG_SLANT_ANGLE expression as ratio.\n Typical right-leaning Italic fonts have a positive slant ratio (typically around 0.2)\n @HB_STYLE_TAG_WIDTH: Used to vary width of text from narrower to wider.\n Non-zero. Values can be interpreted as a percentage of whatever the font\n designer considers “normal width” for that font design.\n @HB_STYLE_TAG_WEIGHT: Used to vary stroke thicknesses or other design details\n to give variation from lighter to blacker. Values can be interpreted in direct\n comparison to values for usWeightClass in the OS/2 table,\n or the CSS font-weight property.\n\n Defined by [OpenType Design-Variation Axis Tag Registry](https://docs.microsoft.com/en-us/typography/opentype/spec/dvaraxisreg).\n\n Since: 3.0.0"]
4058pub type hb_style_tag_t = ::std::os::raw::c_uint;
4059extern "C" {
4060 pub fn hb_style_get_value(font: *mut hb_font_t, style_tag: hb_style_tag_t) -> f32;
4061}
4062extern "C" {
4063 pub fn hb_version(
4064 major: *mut ::std::os::raw::c_uint,
4065 minor: *mut ::std::os::raw::c_uint,
4066 micro: *mut ::std::os::raw::c_uint,
4067 );
4068}
4069extern "C" {
4070 pub fn hb_version_string() -> *const ::std::os::raw::c_char;
4071}
4072extern "C" {
4073 pub fn hb_version_atleast(
4074 major: ::std::os::raw::c_uint,
4075 minor: ::std::os::raw::c_uint,
4076 micro: ::std::os::raw::c_uint,
4077 ) -> hb_bool_t;
4078}
4079impl hb_ot_name_id_predefined_t {
4080 pub const COPYRIGHT: hb_ot_name_id_predefined_t = hb_ot_name_id_predefined_t(0);
4081}
4082impl hb_ot_name_id_predefined_t {
4083 pub const FONT_FAMILY: hb_ot_name_id_predefined_t = hb_ot_name_id_predefined_t(1);
4084}
4085impl hb_ot_name_id_predefined_t {
4086 pub const FONT_SUBFAMILY: hb_ot_name_id_predefined_t = hb_ot_name_id_predefined_t(2);
4087}
4088impl hb_ot_name_id_predefined_t {
4089 pub const UNIQUE_ID: hb_ot_name_id_predefined_t = hb_ot_name_id_predefined_t(3);
4090}
4091impl hb_ot_name_id_predefined_t {
4092 pub const FULL_NAME: hb_ot_name_id_predefined_t = hb_ot_name_id_predefined_t(4);
4093}
4094impl hb_ot_name_id_predefined_t {
4095 pub const VERSION_STRING: hb_ot_name_id_predefined_t = hb_ot_name_id_predefined_t(5);
4096}
4097impl hb_ot_name_id_predefined_t {
4098 pub const POSTSCRIPT_NAME: hb_ot_name_id_predefined_t = hb_ot_name_id_predefined_t(6);
4099}
4100impl hb_ot_name_id_predefined_t {
4101 pub const TRADEMARK: hb_ot_name_id_predefined_t = hb_ot_name_id_predefined_t(7);
4102}
4103impl hb_ot_name_id_predefined_t {
4104 pub const MANUFACTURER: hb_ot_name_id_predefined_t = hb_ot_name_id_predefined_t(8);
4105}
4106impl hb_ot_name_id_predefined_t {
4107 pub const DESIGNER: hb_ot_name_id_predefined_t = hb_ot_name_id_predefined_t(9);
4108}
4109impl hb_ot_name_id_predefined_t {
4110 pub const DESCRIPTION: hb_ot_name_id_predefined_t = hb_ot_name_id_predefined_t(10);
4111}
4112impl hb_ot_name_id_predefined_t {
4113 pub const VENDOR_URL: hb_ot_name_id_predefined_t = hb_ot_name_id_predefined_t(11);
4114}
4115impl hb_ot_name_id_predefined_t {
4116 pub const DESIGNER_URL: hb_ot_name_id_predefined_t = hb_ot_name_id_predefined_t(12);
4117}
4118impl hb_ot_name_id_predefined_t {
4119 pub const LICENSE: hb_ot_name_id_predefined_t = hb_ot_name_id_predefined_t(13);
4120}
4121impl hb_ot_name_id_predefined_t {
4122 pub const LICENSE_URL: hb_ot_name_id_predefined_t = hb_ot_name_id_predefined_t(14);
4123}
4124impl hb_ot_name_id_predefined_t {
4125 pub const TYPOGRAPHIC_FAMILY: hb_ot_name_id_predefined_t = hb_ot_name_id_predefined_t(16);
4126}
4127impl hb_ot_name_id_predefined_t {
4128 pub const TYPOGRAPHIC_SUBFAMILY: hb_ot_name_id_predefined_t = hb_ot_name_id_predefined_t(17);
4129}
4130impl hb_ot_name_id_predefined_t {
4131 pub const MAC_FULL_NAME: hb_ot_name_id_predefined_t = hb_ot_name_id_predefined_t(18);
4132}
4133impl hb_ot_name_id_predefined_t {
4134 pub const SAMPLE_TEXT: hb_ot_name_id_predefined_t = hb_ot_name_id_predefined_t(19);
4135}
4136impl hb_ot_name_id_predefined_t {
4137 pub const CID_FINDFONT_NAME: hb_ot_name_id_predefined_t = hb_ot_name_id_predefined_t(20);
4138}
4139impl hb_ot_name_id_predefined_t {
4140 pub const WWS_FAMILY: hb_ot_name_id_predefined_t = hb_ot_name_id_predefined_t(21);
4141}
4142impl hb_ot_name_id_predefined_t {
4143 pub const WWS_SUBFAMILY: hb_ot_name_id_predefined_t = hb_ot_name_id_predefined_t(22);
4144}
4145impl hb_ot_name_id_predefined_t {
4146 pub const LIGHT_BACKGROUND: hb_ot_name_id_predefined_t = hb_ot_name_id_predefined_t(23);
4147}
4148impl hb_ot_name_id_predefined_t {
4149 pub const DARK_BACKGROUND: hb_ot_name_id_predefined_t = hb_ot_name_id_predefined_t(24);
4150}
4151impl hb_ot_name_id_predefined_t {
4152 pub const VARIATIONS_PS_PREFIX: hb_ot_name_id_predefined_t = hb_ot_name_id_predefined_t(25);
4153}
4154impl hb_ot_name_id_predefined_t {
4155 pub const INVALID: hb_ot_name_id_predefined_t = hb_ot_name_id_predefined_t(65535);
4156}
4157impl ::std::ops::BitOr<hb_ot_name_id_predefined_t> for hb_ot_name_id_predefined_t {
4158 type Output = Self;
4159 #[inline]
4160 fn bitor(self, other: Self) -> Self {
4161 hb_ot_name_id_predefined_t(self.0 | other.0)
4162 }
4163}
4164impl ::std::ops::BitOrAssign for hb_ot_name_id_predefined_t {
4165 #[inline]
4166 fn bitor_assign(&mut self, rhs: hb_ot_name_id_predefined_t) {
4167 self.0 |= rhs.0;
4168 }
4169}
4170impl ::std::ops::BitAnd<hb_ot_name_id_predefined_t> for hb_ot_name_id_predefined_t {
4171 type Output = Self;
4172 #[inline]
4173 fn bitand(self, other: Self) -> Self {
4174 hb_ot_name_id_predefined_t(self.0 & other.0)
4175 }
4176}
4177impl ::std::ops::BitAndAssign for hb_ot_name_id_predefined_t {
4178 #[inline]
4179 fn bitand_assign(&mut self, rhs: hb_ot_name_id_predefined_t) {
4180 self.0 &= rhs.0;
4181 }
4182}
4183#[repr(transparent)]
4184#[doc = " hb_ot_name_id_predefined_t:\n @COPYRIGHT: Copyright notice\n @FONT_FAMILY: Font Family name\n @FONT_SUBFAMILY: Font Subfamily name\n @UNIQUE_ID: Unique font identifier\n @FULL_NAME: Full font name that reflects\n all family and relevant subfamily descriptors\n @VERSION_STRING: Version string\n @POSTSCRIPT_NAME: PostScript name for the font\n @TRADEMARK: Trademark\n @MANUFACTURER: Manufacturer Name\n @DESIGNER: Designer\n @DESCRIPTION: Description\n @VENDOR_URL: URL of font vendor\n @DESIGNER_URL: URL of typeface designer\n @LICENSE: License Description\n @LICENSE_URL: URL where additional licensing\n information can be found\n @TYPOGRAPHIC_FAMILY: Typographic Family name\n @TYPOGRAPHIC_SUBFAMILY: Typographic Subfamily name\n @MAC_FULL_NAME: Compatible Full Name for MacOS\n @SAMPLE_TEXT: Sample text\n @CID_FINDFONT_NAME: PostScript CID findfont name\n @WWS_FAMILY: WWS Family Name\n @WWS_SUBFAMILY: WWS Subfamily Name\n @LIGHT_BACKGROUND: Light Background Palette\n @DARK_BACKGROUND: Dark Background Palette\n @VARIATIONS_PS_PREFIX: Variations PostScript Name Prefix\n @INVALID: Value to represent a nonexistent name ID.\n\n An enum type representing the pre-defined name IDs.\n\n For more information on these fields, see the\n [OpenType spec](https://docs.microsoft.com/en-us/typography/opentype/spec/name#name-ids).\n\n Since: 7.0.0"]
4185#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
4186pub struct hb_ot_name_id_predefined_t(pub ::std::os::raw::c_uint);
4187#[doc = " hb_ot_name_id_t:\n\n An integral type representing an OpenType 'name' table name identifier.\n There are predefined name IDs, as well as name IDs return from other\n API. These can be used to fetch name strings from a font face.\n\n Since: 2.0.0"]
4188#[repr(transparent)]
4189#[derive(Debug, Copy, Clone)]
4190pub struct hb_ot_name_id_t(pub ::std::os::raw::c_uint);
4191#[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"]
4192#[repr(C)]
4193#[derive(Copy, Clone)]
4194pub struct hb_ot_name_entry_t {
4195 pub name_id: hb_ot_name_id_t,
4196 pub var: hb_var_int_t,
4197 pub language: hb_language_t,
4198}
4199#[test]
4200fn bindgen_test_layout_hb_ot_name_entry_t() {
4201 const UNINIT: ::std::mem::MaybeUninit<hb_ot_name_entry_t> = ::std::mem::MaybeUninit::uninit();
4202 let ptr = UNINIT.as_ptr();
4203 assert_eq!(
4204 ::std::mem::size_of::<hb_ot_name_entry_t>(),
4205 16usize,
4206 concat!("Size of: ", stringify!(hb_ot_name_entry_t))
4207 );
4208 assert_eq!(
4209 ::std::mem::align_of::<hb_ot_name_entry_t>(),
4210 8usize,
4211 concat!("Alignment of ", stringify!(hb_ot_name_entry_t))
4212 );
4213 assert_eq!(
4214 unsafe { ::std::ptr::addr_of!((*ptr).name_id) as usize - ptr as usize },
4215 0usize,
4216 concat!("Offset of field: ", stringify!(hb_ot_name_entry_t), "::", stringify!(name_id))
4217 );
4218 assert_eq!(
4219 unsafe { ::std::ptr::addr_of!((*ptr).var) as usize - ptr as usize },
4220 4usize,
4221 concat!("Offset of field: ", stringify!(hb_ot_name_entry_t), "::", stringify!(var))
4222 );
4223 assert_eq!(
4224 unsafe { ::std::ptr::addr_of!((*ptr).language) as usize - ptr as usize },
4225 8usize,
4226 concat!("Offset of field: ", stringify!(hb_ot_name_entry_t), "::", stringify!(language))
4227 );
4228}
4229extern "C" {
4230 pub fn hb_ot_name_list_names(
4231 face: *mut hb_face_t,
4232 num_entries: *mut ::std::os::raw::c_uint,
4233 ) -> *const hb_ot_name_entry_t;
4234}
4235extern "C" {
4236 pub fn hb_ot_name_get_utf8(
4237 face: *mut hb_face_t,
4238 name_id: hb_ot_name_id_t,
4239 language: hb_language_t,
4240 text_size: *mut ::std::os::raw::c_uint,
4241 text: *mut ::std::os::raw::c_char,
4242 ) -> ::std::os::raw::c_uint;
4243}
4244extern "C" {
4245 pub fn hb_ot_name_get_utf16(
4246 face: *mut hb_face_t,
4247 name_id: hb_ot_name_id_t,
4248 language: hb_language_t,
4249 text_size: *mut ::std::os::raw::c_uint,
4250 text: *mut u16,
4251 ) -> ::std::os::raw::c_uint;
4252}
4253extern "C" {
4254 pub fn hb_ot_name_get_utf32(
4255 face: *mut hb_face_t,
4256 name_id: hb_ot_name_id_t,
4257 language: hb_language_t,
4258 text_size: *mut ::std::os::raw::c_uint,
4259 text: *mut u32,
4260 ) -> ::std::os::raw::c_uint;
4261}
4262extern "C" {
4263 pub fn hb_ot_color_has_palettes(face: *mut hb_face_t) -> hb_bool_t;
4264}
4265extern "C" {
4266 pub fn hb_ot_color_palette_get_count(face: *mut hb_face_t) -> ::std::os::raw::c_uint;
4267}
4268extern "C" {
4269 pub fn hb_ot_color_palette_get_name_id(
4270 face: *mut hb_face_t,
4271 palette_index: ::std::os::raw::c_uint,
4272 ) -> hb_ot_name_id_t;
4273}
4274extern "C" {
4275 pub fn hb_ot_color_palette_color_get_name_id(
4276 face: *mut hb_face_t,
4277 color_index: ::std::os::raw::c_uint,
4278 ) -> hb_ot_name_id_t;
4279}
4280pub const hb_ot_color_palette_flags_t_HB_OT_COLOR_PALETTE_FLAG_DEFAULT:
4281 hb_ot_color_palette_flags_t = 0;
4282pub const hb_ot_color_palette_flags_t_HB_OT_COLOR_PALETTE_FLAG_USABLE_WITH_LIGHT_BACKGROUND:
4283 hb_ot_color_palette_flags_t = 1;
4284pub const hb_ot_color_palette_flags_t_HB_OT_COLOR_PALETTE_FLAG_USABLE_WITH_DARK_BACKGROUND:
4285 hb_ot_color_palette_flags_t = 2;
4286#[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 Flags that describe the properties of color palette.\n\n Since: 2.1.0"]
4287pub type hb_ot_color_palette_flags_t = ::std::os::raw::c_uint;
4288extern "C" {
4289 pub fn hb_ot_color_palette_get_flags(
4290 face: *mut hb_face_t,
4291 palette_index: ::std::os::raw::c_uint,
4292 ) -> hb_ot_color_palette_flags_t;
4293}
4294extern "C" {
4295 pub fn hb_ot_color_palette_get_colors(
4296 face: *mut hb_face_t,
4297 palette_index: ::std::os::raw::c_uint,
4298 start_offset: ::std::os::raw::c_uint,
4299 color_count: *mut ::std::os::raw::c_uint,
4300 colors: *mut hb_color_t,
4301 ) -> ::std::os::raw::c_uint;
4302}
4303extern "C" {
4304 pub fn hb_ot_color_has_layers(face: *mut hb_face_t) -> hb_bool_t;
4305}
4306#[doc = " hb_ot_color_layer_t:\n @glyph: the glyph ID of the layer\n @color_index: the palette color index of the layer\n\n Pairs of glyph and color index.\n\n A color index of 0xFFFF does not refer to a palette\n color, but indicates that the foreground color should\n be used.\n\n Since: 2.1.0"]
4307#[repr(C)]
4308#[derive(Debug, Copy, Clone)]
4309pub struct hb_ot_color_layer_t {
4310 pub glyph: hb_codepoint_t,
4311 pub color_index: ::std::os::raw::c_uint,
4312}
4313#[test]
4314fn bindgen_test_layout_hb_ot_color_layer_t() {
4315 const UNINIT: ::std::mem::MaybeUninit<hb_ot_color_layer_t> = ::std::mem::MaybeUninit::uninit();
4316 let ptr = UNINIT.as_ptr();
4317 assert_eq!(
4318 ::std::mem::size_of::<hb_ot_color_layer_t>(),
4319 8usize,
4320 concat!("Size of: ", stringify!(hb_ot_color_layer_t))
4321 );
4322 assert_eq!(
4323 ::std::mem::align_of::<hb_ot_color_layer_t>(),
4324 4usize,
4325 concat!("Alignment of ", stringify!(hb_ot_color_layer_t))
4326 );
4327 assert_eq!(
4328 unsafe { ::std::ptr::addr_of!((*ptr).glyph) as usize - ptr as usize },
4329 0usize,
4330 concat!("Offset of field: ", stringify!(hb_ot_color_layer_t), "::", stringify!(glyph))
4331 );
4332 assert_eq!(
4333 unsafe { ::std::ptr::addr_of!((*ptr).color_index) as usize - ptr as usize },
4334 4usize,
4335 concat!(
4336 "Offset of field: ",
4337 stringify!(hb_ot_color_layer_t),
4338 "::",
4339 stringify!(color_index)
4340 )
4341 );
4342}
4343extern "C" {
4344 pub fn hb_ot_color_glyph_get_layers(
4345 face: *mut hb_face_t,
4346 glyph: hb_codepoint_t,
4347 start_offset: ::std::os::raw::c_uint,
4348 layer_count: *mut ::std::os::raw::c_uint,
4349 layers: *mut hb_ot_color_layer_t,
4350 ) -> ::std::os::raw::c_uint;
4351}
4352extern "C" {
4353 pub fn hb_ot_color_has_paint(face: *mut hb_face_t) -> hb_bool_t;
4354}
4355extern "C" {
4356 pub fn hb_ot_color_glyph_has_paint(face: *mut hb_face_t, glyph: hb_codepoint_t) -> hb_bool_t;
4357}
4358extern "C" {
4359 pub fn hb_ot_color_has_svg(face: *mut hb_face_t) -> hb_bool_t;
4360}
4361extern "C" {
4362 pub fn hb_ot_color_glyph_reference_svg(
4363 face: *mut hb_face_t,
4364 glyph: hb_codepoint_t,
4365 ) -> *mut hb_blob_t;
4366}
4367extern "C" {
4368 pub fn hb_ot_color_has_png(face: *mut hb_face_t) -> hb_bool_t;
4369}
4370extern "C" {
4371 pub fn hb_ot_color_glyph_reference_png(
4372 font: *mut hb_font_t,
4373 glyph: hb_codepoint_t,
4374 ) -> *mut hb_blob_t;
4375}
4376extern "C" {
4377 pub fn hb_ot_layout_table_choose_script(
4378 face: *mut hb_face_t,
4379 table_tag: hb_tag_t,
4380 script_tags: *const hb_tag_t,
4381 script_index: *mut ::std::os::raw::c_uint,
4382 chosen_script: *mut hb_tag_t,
4383 ) -> hb_bool_t;
4384}
4385extern "C" {
4386 pub fn hb_ot_layout_script_find_language(
4387 face: *mut hb_face_t,
4388 table_tag: hb_tag_t,
4389 script_index: ::std::os::raw::c_uint,
4390 language_tag: hb_tag_t,
4391 language_index: *mut ::std::os::raw::c_uint,
4392 ) -> hb_bool_t;
4393}
4394extern "C" {
4395 pub fn hb_ot_tags_from_script(
4396 script: hb_script_t,
4397 script_tag_1: *mut hb_tag_t,
4398 script_tag_2: *mut hb_tag_t,
4399 );
4400}
4401extern "C" {
4402 pub fn hb_ot_tag_from_language(language: hb_language_t) -> hb_tag_t;
4403}
4404#[doc = " hb_ot_var_axis_t:\n @tag: axis tag\n @name_id: axis name identifier\n @min_value: minimum value of the axis\n @default_value: default value of the axis\n @max_value: maximum value of the axis\n\n Use #hb_ot_var_axis_info_t instead.\n\n Since: 1.4.2\n Deprecated: 2.2.0"]
4405#[repr(C)]
4406#[derive(Debug, Copy, Clone)]
4407pub struct hb_ot_var_axis_t {
4408 pub tag: hb_tag_t,
4409 pub name_id: hb_ot_name_id_t,
4410 pub min_value: f32,
4411 pub default_value: f32,
4412 pub max_value: f32,
4413}
4414#[test]
4415fn bindgen_test_layout_hb_ot_var_axis_t() {
4416 const UNINIT: ::std::mem::MaybeUninit<hb_ot_var_axis_t> = ::std::mem::MaybeUninit::uninit();
4417 let ptr = UNINIT.as_ptr();
4418 assert_eq!(
4419 ::std::mem::size_of::<hb_ot_var_axis_t>(),
4420 20usize,
4421 concat!("Size of: ", stringify!(hb_ot_var_axis_t))
4422 );
4423 assert_eq!(
4424 ::std::mem::align_of::<hb_ot_var_axis_t>(),
4425 4usize,
4426 concat!("Alignment of ", stringify!(hb_ot_var_axis_t))
4427 );
4428 assert_eq!(
4429 unsafe { ::std::ptr::addr_of!((*ptr).tag) as usize - ptr as usize },
4430 0usize,
4431 concat!("Offset of field: ", stringify!(hb_ot_var_axis_t), "::", stringify!(tag))
4432 );
4433 assert_eq!(
4434 unsafe { ::std::ptr::addr_of!((*ptr).name_id) as usize - ptr as usize },
4435 4usize,
4436 concat!("Offset of field: ", stringify!(hb_ot_var_axis_t), "::", stringify!(name_id))
4437 );
4438 assert_eq!(
4439 unsafe { ::std::ptr::addr_of!((*ptr).min_value) as usize - ptr as usize },
4440 8usize,
4441 concat!("Offset of field: ", stringify!(hb_ot_var_axis_t), "::", stringify!(min_value))
4442 );
4443 assert_eq!(
4444 unsafe { ::std::ptr::addr_of!((*ptr).default_value) as usize - ptr as usize },
4445 12usize,
4446 concat!(
4447 "Offset of field: ",
4448 stringify!(hb_ot_var_axis_t),
4449 "::",
4450 stringify!(default_value)
4451 )
4452 );
4453 assert_eq!(
4454 unsafe { ::std::ptr::addr_of!((*ptr).max_value) as usize - ptr as usize },
4455 16usize,
4456 concat!("Offset of field: ", stringify!(hb_ot_var_axis_t), "::", stringify!(max_value))
4457 );
4458}
4459extern "C" {
4460 pub fn hb_ot_var_get_axes(
4461 face: *mut hb_face_t,
4462 start_offset: ::std::os::raw::c_uint,
4463 axes_count: *mut ::std::os::raw::c_uint,
4464 axes_array: *mut hb_ot_var_axis_t,
4465 ) -> ::std::os::raw::c_uint;
4466}
4467extern "C" {
4468 pub fn hb_ot_var_find_axis(
4469 face: *mut hb_face_t,
4470 axis_tag: hb_tag_t,
4471 axis_index: *mut ::std::os::raw::c_uint,
4472 axis_info: *mut hb_ot_var_axis_t,
4473 ) -> hb_bool_t;
4474}
4475extern "C" {
4476 pub fn hb_ot_font_set_funcs(font: *mut hb_font_t);
4477}
4478extern "C" {
4479 pub fn hb_ot_tags_from_script_and_language(
4480 script: hb_script_t,
4481 language: hb_language_t,
4482 script_count: *mut ::std::os::raw::c_uint,
4483 script_tags: *mut hb_tag_t,
4484 language_count: *mut ::std::os::raw::c_uint,
4485 language_tags: *mut hb_tag_t,
4486 );
4487}
4488extern "C" {
4489 pub fn hb_ot_tag_to_script(tag: hb_tag_t) -> hb_script_t;
4490}
4491extern "C" {
4492 pub fn hb_ot_tag_to_language(tag: hb_tag_t) -> hb_language_t;
4493}
4494extern "C" {
4495 pub fn hb_ot_tags_to_script_and_language(
4496 script_tag: hb_tag_t,
4497 language_tag: hb_tag_t,
4498 script: *mut hb_script_t,
4499 language: *mut hb_language_t,
4500 );
4501}
4502extern "C" {
4503 pub fn hb_ot_layout_has_glyph_classes(face: *mut hb_face_t) -> hb_bool_t;
4504}
4505pub const hb_ot_layout_glyph_class_t_HB_OT_LAYOUT_GLYPH_CLASS_UNCLASSIFIED:
4506 hb_ot_layout_glyph_class_t = 0;
4507pub const hb_ot_layout_glyph_class_t_HB_OT_LAYOUT_GLYPH_CLASS_BASE_GLYPH:
4508 hb_ot_layout_glyph_class_t = 1;
4509pub const hb_ot_layout_glyph_class_t_HB_OT_LAYOUT_GLYPH_CLASS_LIGATURE: hb_ot_layout_glyph_class_t =
4510 2;
4511pub const hb_ot_layout_glyph_class_t_HB_OT_LAYOUT_GLYPH_CLASS_MARK: hb_ot_layout_glyph_class_t = 3;
4512pub const hb_ot_layout_glyph_class_t_HB_OT_LAYOUT_GLYPH_CLASS_COMPONENT:
4513 hb_ot_layout_glyph_class_t = 4;
4514#[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"]
4515pub type hb_ot_layout_glyph_class_t = ::std::os::raw::c_uint;
4516extern "C" {
4517 pub fn hb_ot_layout_get_glyph_class(
4518 face: *mut hb_face_t,
4519 glyph: hb_codepoint_t,
4520 ) -> hb_ot_layout_glyph_class_t;
4521}
4522extern "C" {
4523 pub fn hb_ot_layout_get_glyphs_in_class(
4524 face: *mut hb_face_t,
4525 klass: hb_ot_layout_glyph_class_t,
4526 glyphs: *mut hb_set_t,
4527 );
4528}
4529extern "C" {
4530 pub fn hb_ot_layout_get_attach_points(
4531 face: *mut hb_face_t,
4532 glyph: hb_codepoint_t,
4533 start_offset: ::std::os::raw::c_uint,
4534 point_count: *mut ::std::os::raw::c_uint,
4535 point_array: *mut ::std::os::raw::c_uint,
4536 ) -> ::std::os::raw::c_uint;
4537}
4538extern "C" {
4539 pub fn hb_ot_layout_get_ligature_carets(
4540 font: *mut hb_font_t,
4541 direction: hb_direction_t,
4542 glyph: hb_codepoint_t,
4543 start_offset: ::std::os::raw::c_uint,
4544 caret_count: *mut ::std::os::raw::c_uint,
4545 caret_array: *mut hb_position_t,
4546 ) -> ::std::os::raw::c_uint;
4547}
4548extern "C" {
4549 pub fn hb_ot_layout_table_get_script_tags(
4550 face: *mut hb_face_t,
4551 table_tag: hb_tag_t,
4552 start_offset: ::std::os::raw::c_uint,
4553 script_count: *mut ::std::os::raw::c_uint,
4554 script_tags: *mut hb_tag_t,
4555 ) -> ::std::os::raw::c_uint;
4556}
4557extern "C" {
4558 pub fn hb_ot_layout_table_find_script(
4559 face: *mut hb_face_t,
4560 table_tag: hb_tag_t,
4561 script_tag: hb_tag_t,
4562 script_index: *mut ::std::os::raw::c_uint,
4563 ) -> hb_bool_t;
4564}
4565extern "C" {
4566 pub fn hb_ot_layout_table_select_script(
4567 face: *mut hb_face_t,
4568 table_tag: hb_tag_t,
4569 script_count: ::std::os::raw::c_uint,
4570 script_tags: *const hb_tag_t,
4571 script_index: *mut ::std::os::raw::c_uint,
4572 chosen_script: *mut hb_tag_t,
4573 ) -> hb_bool_t;
4574}
4575extern "C" {
4576 pub fn hb_ot_layout_table_get_feature_tags(
4577 face: *mut hb_face_t,
4578 table_tag: hb_tag_t,
4579 start_offset: ::std::os::raw::c_uint,
4580 feature_count: *mut ::std::os::raw::c_uint,
4581 feature_tags: *mut hb_tag_t,
4582 ) -> ::std::os::raw::c_uint;
4583}
4584extern "C" {
4585 pub fn hb_ot_layout_script_get_language_tags(
4586 face: *mut hb_face_t,
4587 table_tag: hb_tag_t,
4588 script_index: ::std::os::raw::c_uint,
4589 start_offset: ::std::os::raw::c_uint,
4590 language_count: *mut ::std::os::raw::c_uint,
4591 language_tags: *mut hb_tag_t,
4592 ) -> ::std::os::raw::c_uint;
4593}
4594extern "C" {
4595 pub fn hb_ot_layout_script_select_language(
4596 face: *mut hb_face_t,
4597 table_tag: hb_tag_t,
4598 script_index: ::std::os::raw::c_uint,
4599 language_count: ::std::os::raw::c_uint,
4600 language_tags: *const hb_tag_t,
4601 language_index: *mut ::std::os::raw::c_uint,
4602 ) -> hb_bool_t;
4603}
4604extern "C" {
4605 pub fn hb_ot_layout_script_select_language2(
4606 face: *mut hb_face_t,
4607 table_tag: hb_tag_t,
4608 script_index: ::std::os::raw::c_uint,
4609 language_count: ::std::os::raw::c_uint,
4610 language_tags: *const hb_tag_t,
4611 language_index: *mut ::std::os::raw::c_uint,
4612 chosen_language: *mut hb_tag_t,
4613 ) -> hb_bool_t;
4614}
4615extern "C" {
4616 pub fn hb_ot_layout_language_get_required_feature_index(
4617 face: *mut hb_face_t,
4618 table_tag: hb_tag_t,
4619 script_index: ::std::os::raw::c_uint,
4620 language_index: ::std::os::raw::c_uint,
4621 feature_index: *mut ::std::os::raw::c_uint,
4622 ) -> hb_bool_t;
4623}
4624extern "C" {
4625 pub fn hb_ot_layout_language_get_required_feature(
4626 face: *mut hb_face_t,
4627 table_tag: hb_tag_t,
4628 script_index: ::std::os::raw::c_uint,
4629 language_index: ::std::os::raw::c_uint,
4630 feature_index: *mut ::std::os::raw::c_uint,
4631 feature_tag: *mut hb_tag_t,
4632 ) -> hb_bool_t;
4633}
4634extern "C" {
4635 pub fn hb_ot_layout_language_get_feature_indexes(
4636 face: *mut hb_face_t,
4637 table_tag: hb_tag_t,
4638 script_index: ::std::os::raw::c_uint,
4639 language_index: ::std::os::raw::c_uint,
4640 start_offset: ::std::os::raw::c_uint,
4641 feature_count: *mut ::std::os::raw::c_uint,
4642 feature_indexes: *mut ::std::os::raw::c_uint,
4643 ) -> ::std::os::raw::c_uint;
4644}
4645extern "C" {
4646 pub fn hb_ot_layout_language_get_feature_tags(
4647 face: *mut hb_face_t,
4648 table_tag: hb_tag_t,
4649 script_index: ::std::os::raw::c_uint,
4650 language_index: ::std::os::raw::c_uint,
4651 start_offset: ::std::os::raw::c_uint,
4652 feature_count: *mut ::std::os::raw::c_uint,
4653 feature_tags: *mut hb_tag_t,
4654 ) -> ::std::os::raw::c_uint;
4655}
4656extern "C" {
4657 pub fn hb_ot_layout_language_find_feature(
4658 face: *mut hb_face_t,
4659 table_tag: hb_tag_t,
4660 script_index: ::std::os::raw::c_uint,
4661 language_index: ::std::os::raw::c_uint,
4662 feature_tag: hb_tag_t,
4663 feature_index: *mut ::std::os::raw::c_uint,
4664 ) -> hb_bool_t;
4665}
4666extern "C" {
4667 pub fn hb_ot_layout_feature_get_lookups(
4668 face: *mut hb_face_t,
4669 table_tag: hb_tag_t,
4670 feature_index: ::std::os::raw::c_uint,
4671 start_offset: ::std::os::raw::c_uint,
4672 lookup_count: *mut ::std::os::raw::c_uint,
4673 lookup_indexes: *mut ::std::os::raw::c_uint,
4674 ) -> ::std::os::raw::c_uint;
4675}
4676extern "C" {
4677 pub fn hb_ot_layout_table_get_lookup_count(
4678 face: *mut hb_face_t,
4679 table_tag: hb_tag_t,
4680 ) -> ::std::os::raw::c_uint;
4681}
4682extern "C" {
4683 pub fn hb_ot_layout_collect_features(
4684 face: *mut hb_face_t,
4685 table_tag: hb_tag_t,
4686 scripts: *const hb_tag_t,
4687 languages: *const hb_tag_t,
4688 features: *const hb_tag_t,
4689 feature_indexes: *mut hb_set_t,
4690 );
4691}
4692extern "C" {
4693 pub fn hb_ot_layout_collect_features_map(
4694 face: *mut hb_face_t,
4695 table_tag: hb_tag_t,
4696 script_index: ::std::os::raw::c_uint,
4697 language_index: ::std::os::raw::c_uint,
4698 feature_map: *mut hb_map_t,
4699 );
4700}
4701extern "C" {
4702 pub fn hb_ot_layout_collect_lookups(
4703 face: *mut hb_face_t,
4704 table_tag: hb_tag_t,
4705 scripts: *const hb_tag_t,
4706 languages: *const hb_tag_t,
4707 features: *const hb_tag_t,
4708 lookup_indexes: *mut hb_set_t,
4709 );
4710}
4711extern "C" {
4712 pub fn hb_ot_layout_lookup_collect_glyphs(
4713 face: *mut hb_face_t,
4714 table_tag: hb_tag_t,
4715 lookup_index: ::std::os::raw::c_uint,
4716 glyphs_before: *mut hb_set_t,
4717 glyphs_input: *mut hb_set_t,
4718 glyphs_after: *mut hb_set_t,
4719 glyphs_output: *mut hb_set_t,
4720 );
4721}
4722extern "C" {
4723 pub fn hb_ot_layout_table_find_feature_variations(
4724 face: *mut hb_face_t,
4725 table_tag: hb_tag_t,
4726 coords: *const ::std::os::raw::c_int,
4727 num_coords: ::std::os::raw::c_uint,
4728 variations_index: *mut ::std::os::raw::c_uint,
4729 ) -> hb_bool_t;
4730}
4731extern "C" {
4732 pub fn hb_ot_layout_feature_with_variations_get_lookups(
4733 face: *mut hb_face_t,
4734 table_tag: hb_tag_t,
4735 feature_index: ::std::os::raw::c_uint,
4736 variations_index: ::std::os::raw::c_uint,
4737 start_offset: ::std::os::raw::c_uint,
4738 lookup_count: *mut ::std::os::raw::c_uint,
4739 lookup_indexes: *mut ::std::os::raw::c_uint,
4740 ) -> ::std::os::raw::c_uint;
4741}
4742extern "C" {
4743 pub fn hb_ot_layout_has_substitution(face: *mut hb_face_t) -> hb_bool_t;
4744}
4745extern "C" {
4746 pub fn hb_ot_layout_lookup_get_glyph_alternates(
4747 face: *mut hb_face_t,
4748 lookup_index: ::std::os::raw::c_uint,
4749 glyph: hb_codepoint_t,
4750 start_offset: ::std::os::raw::c_uint,
4751 alternate_count: *mut ::std::os::raw::c_uint,
4752 alternate_glyphs: *mut hb_codepoint_t,
4753 ) -> ::std::os::raw::c_uint;
4754}
4755extern "C" {
4756 pub fn hb_ot_layout_lookup_would_substitute(
4757 face: *mut hb_face_t,
4758 lookup_index: ::std::os::raw::c_uint,
4759 glyphs: *const hb_codepoint_t,
4760 glyphs_length: ::std::os::raw::c_uint,
4761 zero_context: hb_bool_t,
4762 ) -> hb_bool_t;
4763}
4764extern "C" {
4765 pub fn hb_ot_layout_lookup_substitute_closure(
4766 face: *mut hb_face_t,
4767 lookup_index: ::std::os::raw::c_uint,
4768 glyphs: *mut hb_set_t,
4769 );
4770}
4771extern "C" {
4772 pub fn hb_ot_layout_lookups_substitute_closure(
4773 face: *mut hb_face_t,
4774 lookups: *const hb_set_t,
4775 glyphs: *mut hb_set_t,
4776 );
4777}
4778extern "C" {
4779 pub fn hb_ot_layout_has_positioning(face: *mut hb_face_t) -> hb_bool_t;
4780}
4781extern "C" {
4782 pub fn hb_ot_layout_get_size_params(
4783 face: *mut hb_face_t,
4784 design_size: *mut ::std::os::raw::c_uint,
4785 subfamily_id: *mut ::std::os::raw::c_uint,
4786 subfamily_name_id: *mut hb_ot_name_id_t,
4787 range_start: *mut ::std::os::raw::c_uint,
4788 range_end: *mut ::std::os::raw::c_uint,
4789 ) -> hb_bool_t;
4790}
4791extern "C" {
4792 pub fn hb_ot_layout_lookup_get_optical_bound(
4793 font: *mut hb_font_t,
4794 lookup_index: ::std::os::raw::c_uint,
4795 direction: hb_direction_t,
4796 glyph: hb_codepoint_t,
4797 ) -> hb_position_t;
4798}
4799extern "C" {
4800 pub fn hb_ot_layout_feature_get_name_ids(
4801 face: *mut hb_face_t,
4802 table_tag: hb_tag_t,
4803 feature_index: ::std::os::raw::c_uint,
4804 label_id: *mut hb_ot_name_id_t,
4805 tooltip_id: *mut hb_ot_name_id_t,
4806 sample_id: *mut hb_ot_name_id_t,
4807 num_named_parameters: *mut ::std::os::raw::c_uint,
4808 first_param_id: *mut hb_ot_name_id_t,
4809 ) -> hb_bool_t;
4810}
4811extern "C" {
4812 pub fn hb_ot_layout_feature_get_characters(
4813 face: *mut hb_face_t,
4814 table_tag: hb_tag_t,
4815 feature_index: ::std::os::raw::c_uint,
4816 start_offset: ::std::os::raw::c_uint,
4817 char_count: *mut ::std::os::raw::c_uint,
4818 characters: *mut hb_codepoint_t,
4819 ) -> ::std::os::raw::c_uint;
4820}
4821extern "C" {
4822 pub fn hb_ot_layout_get_font_extents(
4823 font: *mut hb_font_t,
4824 direction: hb_direction_t,
4825 script_tag: hb_tag_t,
4826 language_tag: hb_tag_t,
4827 extents: *mut hb_font_extents_t,
4828 ) -> hb_bool_t;
4829}
4830extern "C" {
4831 pub fn hb_ot_layout_get_font_extents2(
4832 font: *mut hb_font_t,
4833 direction: hb_direction_t,
4834 script: hb_script_t,
4835 language: hb_language_t,
4836 extents: *mut hb_font_extents_t,
4837 ) -> hb_bool_t;
4838}
4839pub const hb_ot_layout_baseline_tag_t_HB_OT_LAYOUT_BASELINE_TAG_ROMAN: hb_ot_layout_baseline_tag_t =
4840 1919905134;
4841pub const hb_ot_layout_baseline_tag_t_HB_OT_LAYOUT_BASELINE_TAG_HANGING:
4842 hb_ot_layout_baseline_tag_t = 1751215719;
4843pub const hb_ot_layout_baseline_tag_t_HB_OT_LAYOUT_BASELINE_TAG_IDEO_FACE_BOTTOM_OR_LEFT:
4844 hb_ot_layout_baseline_tag_t = 1768121954;
4845pub const hb_ot_layout_baseline_tag_t_HB_OT_LAYOUT_BASELINE_TAG_IDEO_FACE_TOP_OR_RIGHT:
4846 hb_ot_layout_baseline_tag_t = 1768121972;
4847pub const hb_ot_layout_baseline_tag_t_HB_OT_LAYOUT_BASELINE_TAG_IDEO_FACE_CENTRAL:
4848 hb_ot_layout_baseline_tag_t = 1231251043;
4849pub const hb_ot_layout_baseline_tag_t_HB_OT_LAYOUT_BASELINE_TAG_IDEO_EMBOX_BOTTOM_OR_LEFT:
4850 hb_ot_layout_baseline_tag_t = 1768187247;
4851pub const hb_ot_layout_baseline_tag_t_HB_OT_LAYOUT_BASELINE_TAG_IDEO_EMBOX_TOP_OR_RIGHT:
4852 hb_ot_layout_baseline_tag_t = 1768191088;
4853pub const hb_ot_layout_baseline_tag_t_HB_OT_LAYOUT_BASELINE_TAG_IDEO_EMBOX_CENTRAL:
4854 hb_ot_layout_baseline_tag_t = 1231315813;
4855pub const hb_ot_layout_baseline_tag_t_HB_OT_LAYOUT_BASELINE_TAG_MATH: hb_ot_layout_baseline_tag_t =
4856 1835103336;
4857pub const hb_ot_layout_baseline_tag_t__HB_OT_LAYOUT_BASELINE_TAG_MAX_VALUE:
4858 hb_ot_layout_baseline_tag_t = 2147483647;
4859#[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_FACE_CENTRAL: The center of the ideographic character face. Since: 4.0.0\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 @HB_OT_LAYOUT_BASELINE_TAG_IDEO_EMBOX_CENTRAL: The center of the ideographic em-box. Since: 4.0.0\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 [Baseline Tags](https://docs.microsoft.com/en-us/typography/opentype/spec/baselinetags) registry.\n\n Since: 2.6.0"]
4860pub type hb_ot_layout_baseline_tag_t = ::std::os::raw::c_uint;
4861extern "C" {
4862 pub fn hb_ot_layout_get_horizontal_baseline_tag_for_script(
4863 script: hb_script_t,
4864 ) -> hb_ot_layout_baseline_tag_t;
4865}
4866extern "C" {
4867 pub fn hb_ot_layout_get_baseline(
4868 font: *mut hb_font_t,
4869 baseline_tag: hb_ot_layout_baseline_tag_t,
4870 direction: hb_direction_t,
4871 script_tag: hb_tag_t,
4872 language_tag: hb_tag_t,
4873 coord: *mut hb_position_t,
4874 ) -> hb_bool_t;
4875}
4876extern "C" {
4877 pub fn hb_ot_layout_get_baseline2(
4878 font: *mut hb_font_t,
4879 baseline_tag: hb_ot_layout_baseline_tag_t,
4880 direction: hb_direction_t,
4881 script: hb_script_t,
4882 language: hb_language_t,
4883 coord: *mut hb_position_t,
4884 ) -> hb_bool_t;
4885}
4886extern "C" {
4887 pub fn hb_ot_layout_get_baseline_with_fallback(
4888 font: *mut hb_font_t,
4889 baseline_tag: hb_ot_layout_baseline_tag_t,
4890 direction: hb_direction_t,
4891 script_tag: hb_tag_t,
4892 language_tag: hb_tag_t,
4893 coord: *mut hb_position_t,
4894 );
4895}
4896extern "C" {
4897 pub fn hb_ot_layout_get_baseline_with_fallback2(
4898 font: *mut hb_font_t,
4899 baseline_tag: hb_ot_layout_baseline_tag_t,
4900 direction: hb_direction_t,
4901 script: hb_script_t,
4902 language: hb_language_t,
4903 coord: *mut hb_position_t,
4904 );
4905}
4906pub const hb_ot_math_constant_t_HB_OT_MATH_CONSTANT_SCRIPT_PERCENT_SCALE_DOWN:
4907 hb_ot_math_constant_t = 0;
4908pub const hb_ot_math_constant_t_HB_OT_MATH_CONSTANT_SCRIPT_SCRIPT_PERCENT_SCALE_DOWN:
4909 hb_ot_math_constant_t = 1;
4910pub const hb_ot_math_constant_t_HB_OT_MATH_CONSTANT_DELIMITED_SUB_FORMULA_MIN_HEIGHT:
4911 hb_ot_math_constant_t = 2;
4912pub const hb_ot_math_constant_t_HB_OT_MATH_CONSTANT_DISPLAY_OPERATOR_MIN_HEIGHT:
4913 hb_ot_math_constant_t = 3;
4914pub const hb_ot_math_constant_t_HB_OT_MATH_CONSTANT_MATH_LEADING: hb_ot_math_constant_t = 4;
4915pub const hb_ot_math_constant_t_HB_OT_MATH_CONSTANT_AXIS_HEIGHT: hb_ot_math_constant_t = 5;
4916pub const hb_ot_math_constant_t_HB_OT_MATH_CONSTANT_ACCENT_BASE_HEIGHT: hb_ot_math_constant_t = 6;
4917pub const hb_ot_math_constant_t_HB_OT_MATH_CONSTANT_FLATTENED_ACCENT_BASE_HEIGHT:
4918 hb_ot_math_constant_t = 7;
4919pub const hb_ot_math_constant_t_HB_OT_MATH_CONSTANT_SUBSCRIPT_SHIFT_DOWN: hb_ot_math_constant_t = 8;
4920pub const hb_ot_math_constant_t_HB_OT_MATH_CONSTANT_SUBSCRIPT_TOP_MAX: hb_ot_math_constant_t = 9;
4921pub const hb_ot_math_constant_t_HB_OT_MATH_CONSTANT_SUBSCRIPT_BASELINE_DROP_MIN:
4922 hb_ot_math_constant_t = 10;
4923pub const hb_ot_math_constant_t_HB_OT_MATH_CONSTANT_SUPERSCRIPT_SHIFT_UP: hb_ot_math_constant_t =
4924 11;
4925pub const hb_ot_math_constant_t_HB_OT_MATH_CONSTANT_SUPERSCRIPT_SHIFT_UP_CRAMPED:
4926 hb_ot_math_constant_t = 12;
4927pub const hb_ot_math_constant_t_HB_OT_MATH_CONSTANT_SUPERSCRIPT_BOTTOM_MIN: hb_ot_math_constant_t =
4928 13;
4929pub const hb_ot_math_constant_t_HB_OT_MATH_CONSTANT_SUPERSCRIPT_BASELINE_DROP_MAX:
4930 hb_ot_math_constant_t = 14;
4931pub const hb_ot_math_constant_t_HB_OT_MATH_CONSTANT_SUB_SUPERSCRIPT_GAP_MIN: hb_ot_math_constant_t =
4932 15;
4933pub const hb_ot_math_constant_t_HB_OT_MATH_CONSTANT_SUPERSCRIPT_BOTTOM_MAX_WITH_SUBSCRIPT:
4934 hb_ot_math_constant_t = 16;
4935pub const hb_ot_math_constant_t_HB_OT_MATH_CONSTANT_SPACE_AFTER_SCRIPT: hb_ot_math_constant_t = 17;
4936pub const hb_ot_math_constant_t_HB_OT_MATH_CONSTANT_UPPER_LIMIT_GAP_MIN: hb_ot_math_constant_t = 18;
4937pub const hb_ot_math_constant_t_HB_OT_MATH_CONSTANT_UPPER_LIMIT_BASELINE_RISE_MIN:
4938 hb_ot_math_constant_t = 19;
4939pub const hb_ot_math_constant_t_HB_OT_MATH_CONSTANT_LOWER_LIMIT_GAP_MIN: hb_ot_math_constant_t = 20;
4940pub const hb_ot_math_constant_t_HB_OT_MATH_CONSTANT_LOWER_LIMIT_BASELINE_DROP_MIN:
4941 hb_ot_math_constant_t = 21;
4942pub const hb_ot_math_constant_t_HB_OT_MATH_CONSTANT_STACK_TOP_SHIFT_UP: hb_ot_math_constant_t = 22;
4943pub const hb_ot_math_constant_t_HB_OT_MATH_CONSTANT_STACK_TOP_DISPLAY_STYLE_SHIFT_UP:
4944 hb_ot_math_constant_t = 23;
4945pub const hb_ot_math_constant_t_HB_OT_MATH_CONSTANT_STACK_BOTTOM_SHIFT_DOWN: hb_ot_math_constant_t =
4946 24;
4947pub const hb_ot_math_constant_t_HB_OT_MATH_CONSTANT_STACK_BOTTOM_DISPLAY_STYLE_SHIFT_DOWN:
4948 hb_ot_math_constant_t = 25;
4949pub const hb_ot_math_constant_t_HB_OT_MATH_CONSTANT_STACK_GAP_MIN: hb_ot_math_constant_t = 26;
4950pub const hb_ot_math_constant_t_HB_OT_MATH_CONSTANT_STACK_DISPLAY_STYLE_GAP_MIN:
4951 hb_ot_math_constant_t = 27;
4952pub const hb_ot_math_constant_t_HB_OT_MATH_CONSTANT_STRETCH_STACK_TOP_SHIFT_UP:
4953 hb_ot_math_constant_t = 28;
4954pub const hb_ot_math_constant_t_HB_OT_MATH_CONSTANT_STRETCH_STACK_BOTTOM_SHIFT_DOWN:
4955 hb_ot_math_constant_t = 29;
4956pub const hb_ot_math_constant_t_HB_OT_MATH_CONSTANT_STRETCH_STACK_GAP_ABOVE_MIN:
4957 hb_ot_math_constant_t = 30;
4958pub const hb_ot_math_constant_t_HB_OT_MATH_CONSTANT_STRETCH_STACK_GAP_BELOW_MIN:
4959 hb_ot_math_constant_t = 31;
4960pub const hb_ot_math_constant_t_HB_OT_MATH_CONSTANT_FRACTION_NUMERATOR_SHIFT_UP:
4961 hb_ot_math_constant_t = 32;
4962pub const hb_ot_math_constant_t_HB_OT_MATH_CONSTANT_FRACTION_NUMERATOR_DISPLAY_STYLE_SHIFT_UP:
4963 hb_ot_math_constant_t = 33;
4964pub const hb_ot_math_constant_t_HB_OT_MATH_CONSTANT_FRACTION_DENOMINATOR_SHIFT_DOWN:
4965 hb_ot_math_constant_t = 34;
4966pub const hb_ot_math_constant_t_HB_OT_MATH_CONSTANT_FRACTION_DENOMINATOR_DISPLAY_STYLE_SHIFT_DOWN : hb_ot_math_constant_t = 35 ;
4967pub const hb_ot_math_constant_t_HB_OT_MATH_CONSTANT_FRACTION_NUMERATOR_GAP_MIN:
4968 hb_ot_math_constant_t = 36;
4969pub const hb_ot_math_constant_t_HB_OT_MATH_CONSTANT_FRACTION_NUM_DISPLAY_STYLE_GAP_MIN:
4970 hb_ot_math_constant_t = 37;
4971pub const hb_ot_math_constant_t_HB_OT_MATH_CONSTANT_FRACTION_RULE_THICKNESS: hb_ot_math_constant_t =
4972 38;
4973pub const hb_ot_math_constant_t_HB_OT_MATH_CONSTANT_FRACTION_DENOMINATOR_GAP_MIN:
4974 hb_ot_math_constant_t = 39;
4975pub const hb_ot_math_constant_t_HB_OT_MATH_CONSTANT_FRACTION_DENOM_DISPLAY_STYLE_GAP_MIN:
4976 hb_ot_math_constant_t = 40;
4977pub const hb_ot_math_constant_t_HB_OT_MATH_CONSTANT_SKEWED_FRACTION_HORIZONTAL_GAP:
4978 hb_ot_math_constant_t = 41;
4979pub const hb_ot_math_constant_t_HB_OT_MATH_CONSTANT_SKEWED_FRACTION_VERTICAL_GAP:
4980 hb_ot_math_constant_t = 42;
4981pub const hb_ot_math_constant_t_HB_OT_MATH_CONSTANT_OVERBAR_VERTICAL_GAP: hb_ot_math_constant_t =
4982 43;
4983pub const hb_ot_math_constant_t_HB_OT_MATH_CONSTANT_OVERBAR_RULE_THICKNESS: hb_ot_math_constant_t =
4984 44;
4985pub const hb_ot_math_constant_t_HB_OT_MATH_CONSTANT_OVERBAR_EXTRA_ASCENDER: hb_ot_math_constant_t =
4986 45;
4987pub const hb_ot_math_constant_t_HB_OT_MATH_CONSTANT_UNDERBAR_VERTICAL_GAP: hb_ot_math_constant_t =
4988 46;
4989pub const hb_ot_math_constant_t_HB_OT_MATH_CONSTANT_UNDERBAR_RULE_THICKNESS: hb_ot_math_constant_t =
4990 47;
4991pub const hb_ot_math_constant_t_HB_OT_MATH_CONSTANT_UNDERBAR_EXTRA_DESCENDER:
4992 hb_ot_math_constant_t = 48;
4993pub const hb_ot_math_constant_t_HB_OT_MATH_CONSTANT_RADICAL_VERTICAL_GAP: hb_ot_math_constant_t =
4994 49;
4995pub const hb_ot_math_constant_t_HB_OT_MATH_CONSTANT_RADICAL_DISPLAY_STYLE_VERTICAL_GAP:
4996 hb_ot_math_constant_t = 50;
4997pub const hb_ot_math_constant_t_HB_OT_MATH_CONSTANT_RADICAL_RULE_THICKNESS: hb_ot_math_constant_t =
4998 51;
4999pub const hb_ot_math_constant_t_HB_OT_MATH_CONSTANT_RADICAL_EXTRA_ASCENDER: hb_ot_math_constant_t =
5000 52;
5001pub const hb_ot_math_constant_t_HB_OT_MATH_CONSTANT_RADICAL_KERN_BEFORE_DEGREE:
5002 hb_ot_math_constant_t = 53;
5003pub const hb_ot_math_constant_t_HB_OT_MATH_CONSTANT_RADICAL_KERN_AFTER_DEGREE:
5004 hb_ot_math_constant_t = 54;
5005pub const hb_ot_math_constant_t_HB_OT_MATH_CONSTANT_RADICAL_DEGREE_BOTTOM_RAISE_PERCENT:
5006 hb_ot_math_constant_t = 55;
5007#[doc = " hb_ot_math_constant_t:\n @HB_OT_MATH_CONSTANT_SCRIPT_PERCENT_SCALE_DOWN: scriptPercentScaleDown\n @HB_OT_MATH_CONSTANT_SCRIPT_SCRIPT_PERCENT_SCALE_DOWN: scriptScriptPercentScaleDown\n @HB_OT_MATH_CONSTANT_DELIMITED_SUB_FORMULA_MIN_HEIGHT: delimitedSubFormulaMinHeight\n @HB_OT_MATH_CONSTANT_DISPLAY_OPERATOR_MIN_HEIGHT: displayOperatorMinHeight\n @HB_OT_MATH_CONSTANT_MATH_LEADING: mathLeading\n @HB_OT_MATH_CONSTANT_AXIS_HEIGHT: axisHeight\n @HB_OT_MATH_CONSTANT_ACCENT_BASE_HEIGHT: accentBaseHeight\n @HB_OT_MATH_CONSTANT_FLATTENED_ACCENT_BASE_HEIGHT: flattenedAccentBaseHeight\n @HB_OT_MATH_CONSTANT_SUBSCRIPT_SHIFT_DOWN: subscriptShiftDown\n @HB_OT_MATH_CONSTANT_SUBSCRIPT_TOP_MAX: subscriptTopMax\n @HB_OT_MATH_CONSTANT_SUBSCRIPT_BASELINE_DROP_MIN: subscriptBaselineDropMin\n @HB_OT_MATH_CONSTANT_SUPERSCRIPT_SHIFT_UP: superscriptShiftUp\n @HB_OT_MATH_CONSTANT_SUPERSCRIPT_SHIFT_UP_CRAMPED: superscriptShiftUpCramped\n @HB_OT_MATH_CONSTANT_SUPERSCRIPT_BOTTOM_MIN: superscriptBottomMin\n @HB_OT_MATH_CONSTANT_SUPERSCRIPT_BASELINE_DROP_MAX: superscriptBaselineDropMax\n @HB_OT_MATH_CONSTANT_SUB_SUPERSCRIPT_GAP_MIN: subSuperscriptGapMin\n @HB_OT_MATH_CONSTANT_SUPERSCRIPT_BOTTOM_MAX_WITH_SUBSCRIPT: superscriptBottomMaxWithSubscript\n @HB_OT_MATH_CONSTANT_SPACE_AFTER_SCRIPT: spaceAfterScript\n @HB_OT_MATH_CONSTANT_UPPER_LIMIT_GAP_MIN: upperLimitGapMin\n @HB_OT_MATH_CONSTANT_UPPER_LIMIT_BASELINE_RISE_MIN: upperLimitBaselineRiseMin\n @HB_OT_MATH_CONSTANT_LOWER_LIMIT_GAP_MIN: lowerLimitGapMin\n @HB_OT_MATH_CONSTANT_LOWER_LIMIT_BASELINE_DROP_MIN: lowerLimitBaselineDropMin\n @HB_OT_MATH_CONSTANT_STACK_TOP_SHIFT_UP: stackTopShiftUp\n @HB_OT_MATH_CONSTANT_STACK_TOP_DISPLAY_STYLE_SHIFT_UP: stackTopDisplayStyleShiftUp\n @HB_OT_MATH_CONSTANT_STACK_BOTTOM_SHIFT_DOWN: stackBottomShiftDown\n @HB_OT_MATH_CONSTANT_STACK_BOTTOM_DISPLAY_STYLE_SHIFT_DOWN: stackBottomDisplayStyleShiftDown\n @HB_OT_MATH_CONSTANT_STACK_GAP_MIN: stackGapMin\n @HB_OT_MATH_CONSTANT_STACK_DISPLAY_STYLE_GAP_MIN: stackDisplayStyleGapMin\n @HB_OT_MATH_CONSTANT_STRETCH_STACK_TOP_SHIFT_UP: stretchStackTopShiftUp\n @HB_OT_MATH_CONSTANT_STRETCH_STACK_BOTTOM_SHIFT_DOWN: stretchStackBottomShiftDown\n @HB_OT_MATH_CONSTANT_STRETCH_STACK_GAP_ABOVE_MIN: stretchStackGapAboveMin\n @HB_OT_MATH_CONSTANT_STRETCH_STACK_GAP_BELOW_MIN: stretchStackGapBelowMin\n @HB_OT_MATH_CONSTANT_FRACTION_NUMERATOR_SHIFT_UP: fractionNumeratorShiftUp\n @HB_OT_MATH_CONSTANT_FRACTION_NUMERATOR_DISPLAY_STYLE_SHIFT_UP: fractionNumeratorDisplayStyleShiftUp\n @HB_OT_MATH_CONSTANT_FRACTION_DENOMINATOR_SHIFT_DOWN: fractionDenominatorShiftDown\n @HB_OT_MATH_CONSTANT_FRACTION_DENOMINATOR_DISPLAY_STYLE_SHIFT_DOWN: fractionDenominatorDisplayStyleShiftDown\n @HB_OT_MATH_CONSTANT_FRACTION_NUMERATOR_GAP_MIN: fractionNumeratorGapMin\n @HB_OT_MATH_CONSTANT_FRACTION_NUM_DISPLAY_STYLE_GAP_MIN: fractionNumDisplayStyleGapMin\n @HB_OT_MATH_CONSTANT_FRACTION_RULE_THICKNESS: fractionRuleThickness\n @HB_OT_MATH_CONSTANT_FRACTION_DENOMINATOR_GAP_MIN: fractionDenominatorGapMin\n @HB_OT_MATH_CONSTANT_FRACTION_DENOM_DISPLAY_STYLE_GAP_MIN: fractionDenomDisplayStyleGapMin\n @HB_OT_MATH_CONSTANT_SKEWED_FRACTION_HORIZONTAL_GAP: skewedFractionHorizontalGap\n @HB_OT_MATH_CONSTANT_SKEWED_FRACTION_VERTICAL_GAP: skewedFractionVerticalGap\n @HB_OT_MATH_CONSTANT_OVERBAR_VERTICAL_GAP: overbarVerticalGap\n @HB_OT_MATH_CONSTANT_OVERBAR_RULE_THICKNESS: overbarRuleThickness\n @HB_OT_MATH_CONSTANT_OVERBAR_EXTRA_ASCENDER: overbarExtraAscender\n @HB_OT_MATH_CONSTANT_UNDERBAR_VERTICAL_GAP: underbarVerticalGap\n @HB_OT_MATH_CONSTANT_UNDERBAR_RULE_THICKNESS: underbarRuleThickness\n @HB_OT_MATH_CONSTANT_UNDERBAR_EXTRA_DESCENDER: underbarExtraDescender\n @HB_OT_MATH_CONSTANT_RADICAL_VERTICAL_GAP: radicalVerticalGap\n @HB_OT_MATH_CONSTANT_RADICAL_DISPLAY_STYLE_VERTICAL_GAP: radicalDisplayStyleVerticalGap\n @HB_OT_MATH_CONSTANT_RADICAL_RULE_THICKNESS: radicalRuleThickness\n @HB_OT_MATH_CONSTANT_RADICAL_EXTRA_ASCENDER: radicalExtraAscender\n @HB_OT_MATH_CONSTANT_RADICAL_KERN_BEFORE_DEGREE: radicalKernBeforeDegree\n @HB_OT_MATH_CONSTANT_RADICAL_KERN_AFTER_DEGREE: radicalKernAfterDegree\n @HB_OT_MATH_CONSTANT_RADICAL_DEGREE_BOTTOM_RAISE_PERCENT: radicalDegreeBottomRaisePercent\n\n The 'MATH' table constants, refer to\n [OpenType documentation](https://docs.microsoft.com/en-us/typography/opentype/spec/math#mathconstants-table)\n For more explanations.\n\n Since: 1.3.3"]
5008pub type hb_ot_math_constant_t = ::std::os::raw::c_uint;
5009pub const hb_ot_math_kern_t_HB_OT_MATH_KERN_TOP_RIGHT: hb_ot_math_kern_t = 0;
5010pub const hb_ot_math_kern_t_HB_OT_MATH_KERN_TOP_LEFT: hb_ot_math_kern_t = 1;
5011pub const hb_ot_math_kern_t_HB_OT_MATH_KERN_BOTTOM_RIGHT: hb_ot_math_kern_t = 2;
5012pub const hb_ot_math_kern_t_HB_OT_MATH_KERN_BOTTOM_LEFT: hb_ot_math_kern_t = 3;
5013#[doc = " hb_ot_math_kern_t:\n @HB_OT_MATH_KERN_TOP_RIGHT: The top right corner of the glyph.\n @HB_OT_MATH_KERN_TOP_LEFT: The top left corner of the glyph.\n @HB_OT_MATH_KERN_BOTTOM_RIGHT: The bottom right corner of the glyph.\n @HB_OT_MATH_KERN_BOTTOM_LEFT: The bottom left corner of the glyph.\n\n The math kerning-table types defined for the four corners\n of a glyph.\n\n Since: 1.3.3"]
5014pub type hb_ot_math_kern_t = ::std::os::raw::c_uint;
5015#[doc = " hb_ot_math_kern_entry_t:\n @max_correction_height: The maximum height at which this entry should be used\n @kern_value: The kern value of the entry\n\n Data type to hold math kerning (cut-in) information for a glyph.\n\n Since: 3.4.0"]
5016#[repr(C)]
5017#[derive(Debug, Copy, Clone)]
5018pub struct hb_ot_math_kern_entry_t {
5019 pub max_correction_height: hb_position_t,
5020 pub kern_value: hb_position_t,
5021}
5022#[test]
5023fn bindgen_test_layout_hb_ot_math_kern_entry_t() {
5024 const UNINIT: ::std::mem::MaybeUninit<hb_ot_math_kern_entry_t> =
5025 ::std::mem::MaybeUninit::uninit();
5026 let ptr = UNINIT.as_ptr();
5027 assert_eq!(
5028 ::std::mem::size_of::<hb_ot_math_kern_entry_t>(),
5029 8usize,
5030 concat!("Size of: ", stringify!(hb_ot_math_kern_entry_t))
5031 );
5032 assert_eq!(
5033 ::std::mem::align_of::<hb_ot_math_kern_entry_t>(),
5034 4usize,
5035 concat!("Alignment of ", stringify!(hb_ot_math_kern_entry_t))
5036 );
5037 assert_eq!(
5038 unsafe { ::std::ptr::addr_of!((*ptr).max_correction_height) as usize - ptr as usize },
5039 0usize,
5040 concat!(
5041 "Offset of field: ",
5042 stringify!(hb_ot_math_kern_entry_t),
5043 "::",
5044 stringify!(max_correction_height)
5045 )
5046 );
5047 assert_eq!(
5048 unsafe { ::std::ptr::addr_of!((*ptr).kern_value) as usize - ptr as usize },
5049 4usize,
5050 concat!(
5051 "Offset of field: ",
5052 stringify!(hb_ot_math_kern_entry_t),
5053 "::",
5054 stringify!(kern_value)
5055 )
5056 );
5057}
5058#[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"]
5059#[repr(C)]
5060#[derive(Debug, Copy, Clone)]
5061pub struct hb_ot_math_glyph_variant_t {
5062 pub glyph: hb_codepoint_t,
5063 pub advance: hb_position_t,
5064}
5065#[test]
5066fn bindgen_test_layout_hb_ot_math_glyph_variant_t() {
5067 const UNINIT: ::std::mem::MaybeUninit<hb_ot_math_glyph_variant_t> =
5068 ::std::mem::MaybeUninit::uninit();
5069 let ptr = UNINIT.as_ptr();
5070 assert_eq!(
5071 ::std::mem::size_of::<hb_ot_math_glyph_variant_t>(),
5072 8usize,
5073 concat!("Size of: ", stringify!(hb_ot_math_glyph_variant_t))
5074 );
5075 assert_eq!(
5076 ::std::mem::align_of::<hb_ot_math_glyph_variant_t>(),
5077 4usize,
5078 concat!("Alignment of ", stringify!(hb_ot_math_glyph_variant_t))
5079 );
5080 assert_eq!(
5081 unsafe { ::std::ptr::addr_of!((*ptr).glyph) as usize - ptr as usize },
5082 0usize,
5083 concat!(
5084 "Offset of field: ",
5085 stringify!(hb_ot_math_glyph_variant_t),
5086 "::",
5087 stringify!(glyph)
5088 )
5089 );
5090 assert_eq!(
5091 unsafe { ::std::ptr::addr_of!((*ptr).advance) as usize - ptr as usize },
5092 4usize,
5093 concat!(
5094 "Offset of field: ",
5095 stringify!(hb_ot_math_glyph_variant_t),
5096 "::",
5097 stringify!(advance)
5098 )
5099 );
5100}
5101pub const hb_ot_math_glyph_part_flags_t_HB_OT_MATH_GLYPH_PART_FLAG_EXTENDER:
5102 hb_ot_math_glyph_part_flags_t = 1;
5103#[doc = " hb_ot_math_glyph_part_flags_t:\n @HB_OT_MATH_GLYPH_PART_FLAG_EXTENDER: This is an extender glyph part that\n can be repeated to reach the desired length.\n\n Flags for math glyph parts.\n\n Since: 1.3.3"]
5104pub type hb_ot_math_glyph_part_flags_t = ::std::os::raw::c_uint;
5105#[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"]
5106#[repr(C)]
5107#[derive(Debug, Copy, Clone)]
5108pub struct hb_ot_math_glyph_part_t {
5109 pub glyph: hb_codepoint_t,
5110 pub start_connector_length: hb_position_t,
5111 pub end_connector_length: hb_position_t,
5112 pub full_advance: hb_position_t,
5113 pub flags: hb_ot_math_glyph_part_flags_t,
5114}
5115#[test]
5116fn bindgen_test_layout_hb_ot_math_glyph_part_t() {
5117 const UNINIT: ::std::mem::MaybeUninit<hb_ot_math_glyph_part_t> =
5118 ::std::mem::MaybeUninit::uninit();
5119 let ptr = UNINIT.as_ptr();
5120 assert_eq!(
5121 ::std::mem::size_of::<hb_ot_math_glyph_part_t>(),
5122 20usize,
5123 concat!("Size of: ", stringify!(hb_ot_math_glyph_part_t))
5124 );
5125 assert_eq!(
5126 ::std::mem::align_of::<hb_ot_math_glyph_part_t>(),
5127 4usize,
5128 concat!("Alignment of ", stringify!(hb_ot_math_glyph_part_t))
5129 );
5130 assert_eq!(
5131 unsafe { ::std::ptr::addr_of!((*ptr).glyph) as usize - ptr as usize },
5132 0usize,
5133 concat!(
5134 "Offset of field: ",
5135 stringify!(hb_ot_math_glyph_part_t),
5136 "::",
5137 stringify!(glyph)
5138 )
5139 );
5140 assert_eq!(
5141 unsafe { ::std::ptr::addr_of!((*ptr).start_connector_length) as usize - ptr as usize },
5142 4usize,
5143 concat!(
5144 "Offset of field: ",
5145 stringify!(hb_ot_math_glyph_part_t),
5146 "::",
5147 stringify!(start_connector_length)
5148 )
5149 );
5150 assert_eq!(
5151 unsafe { ::std::ptr::addr_of!((*ptr).end_connector_length) as usize - ptr as usize },
5152 8usize,
5153 concat!(
5154 "Offset of field: ",
5155 stringify!(hb_ot_math_glyph_part_t),
5156 "::",
5157 stringify!(end_connector_length)
5158 )
5159 );
5160 assert_eq!(
5161 unsafe { ::std::ptr::addr_of!((*ptr).full_advance) as usize - ptr as usize },
5162 12usize,
5163 concat!(
5164 "Offset of field: ",
5165 stringify!(hb_ot_math_glyph_part_t),
5166 "::",
5167 stringify!(full_advance)
5168 )
5169 );
5170 assert_eq!(
5171 unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize },
5172 16usize,
5173 concat!(
5174 "Offset of field: ",
5175 stringify!(hb_ot_math_glyph_part_t),
5176 "::",
5177 stringify!(flags)
5178 )
5179 );
5180}
5181extern "C" {
5182 pub fn hb_ot_math_has_data(face: *mut hb_face_t) -> hb_bool_t;
5183}
5184extern "C" {
5185 pub fn hb_ot_math_get_constant(
5186 font: *mut hb_font_t,
5187 constant: hb_ot_math_constant_t,
5188 ) -> hb_position_t;
5189}
5190extern "C" {
5191 pub fn hb_ot_math_get_glyph_italics_correction(
5192 font: *mut hb_font_t,
5193 glyph: hb_codepoint_t,
5194 ) -> hb_position_t;
5195}
5196extern "C" {
5197 pub fn hb_ot_math_get_glyph_top_accent_attachment(
5198 font: *mut hb_font_t,
5199 glyph: hb_codepoint_t,
5200 ) -> hb_position_t;
5201}
5202extern "C" {
5203 pub fn hb_ot_math_is_glyph_extended_shape(
5204 face: *mut hb_face_t,
5205 glyph: hb_codepoint_t,
5206 ) -> hb_bool_t;
5207}
5208extern "C" {
5209 pub fn hb_ot_math_get_glyph_kerning(
5210 font: *mut hb_font_t,
5211 glyph: hb_codepoint_t,
5212 kern: hb_ot_math_kern_t,
5213 correction_height: hb_position_t,
5214 ) -> hb_position_t;
5215}
5216extern "C" {
5217 pub fn hb_ot_math_get_glyph_kernings(
5218 font: *mut hb_font_t,
5219 glyph: hb_codepoint_t,
5220 kern: hb_ot_math_kern_t,
5221 start_offset: ::std::os::raw::c_uint,
5222 entries_count: *mut ::std::os::raw::c_uint,
5223 kern_entries: *mut hb_ot_math_kern_entry_t,
5224 ) -> ::std::os::raw::c_uint;
5225}
5226extern "C" {
5227 pub fn hb_ot_math_get_glyph_variants(
5228 font: *mut hb_font_t,
5229 glyph: hb_codepoint_t,
5230 direction: hb_direction_t,
5231 start_offset: ::std::os::raw::c_uint,
5232 variants_count: *mut ::std::os::raw::c_uint,
5233 variants: *mut hb_ot_math_glyph_variant_t,
5234 ) -> ::std::os::raw::c_uint;
5235}
5236extern "C" {
5237 pub fn hb_ot_math_get_min_connector_overlap(
5238 font: *mut hb_font_t,
5239 direction: hb_direction_t,
5240 ) -> hb_position_t;
5241}
5242extern "C" {
5243 pub fn hb_ot_math_get_glyph_assembly(
5244 font: *mut hb_font_t,
5245 glyph: hb_codepoint_t,
5246 direction: hb_direction_t,
5247 start_offset: ::std::os::raw::c_uint,
5248 parts_count: *mut ::std::os::raw::c_uint,
5249 parts: *mut hb_ot_math_glyph_part_t,
5250 italics_correction: *mut hb_position_t,
5251 ) -> ::std::os::raw::c_uint;
5252}
5253pub const hb_ot_meta_tag_t_HB_OT_META_TAG_DESIGN_LANGUAGES: hb_ot_meta_tag_t = 1684827751;
5254pub const hb_ot_meta_tag_t_HB_OT_META_TAG_SUPPORTED_LANGUAGES: hb_ot_meta_tag_t = 1936485991;
5255pub const hb_ot_meta_tag_t__HB_OT_META_TAG_MAX_VALUE: hb_ot_meta_tag_t = 2147483647;
5256#[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"]
5257pub type hb_ot_meta_tag_t = ::std::os::raw::c_uint;
5258extern "C" {
5259 pub fn hb_ot_meta_get_entry_tags(
5260 face: *mut hb_face_t,
5261 start_offset: ::std::os::raw::c_uint,
5262 entries_count: *mut ::std::os::raw::c_uint,
5263 entries: *mut hb_ot_meta_tag_t,
5264 ) -> ::std::os::raw::c_uint;
5265}
5266extern "C" {
5267 pub fn hb_ot_meta_reference_entry(
5268 face: *mut hb_face_t,
5269 meta_tag: hb_ot_meta_tag_t,
5270 ) -> *mut hb_blob_t;
5271}
5272pub const hb_ot_metrics_tag_t_HB_OT_METRICS_TAG_HORIZONTAL_ASCENDER: hb_ot_metrics_tag_t =
5273 1751216995;
5274pub const hb_ot_metrics_tag_t_HB_OT_METRICS_TAG_HORIZONTAL_DESCENDER: hb_ot_metrics_tag_t =
5275 1751413603;
5276pub const hb_ot_metrics_tag_t_HB_OT_METRICS_TAG_HORIZONTAL_LINE_GAP: hb_ot_metrics_tag_t =
5277 1751934832;
5278pub const hb_ot_metrics_tag_t_HB_OT_METRICS_TAG_HORIZONTAL_CLIPPING_ASCENT: hb_ot_metrics_tag_t =
5279 1751346273;
5280pub const hb_ot_metrics_tag_t_HB_OT_METRICS_TAG_HORIZONTAL_CLIPPING_DESCENT: hb_ot_metrics_tag_t =
5281 1751346276;
5282pub const hb_ot_metrics_tag_t_HB_OT_METRICS_TAG_VERTICAL_ASCENDER: hb_ot_metrics_tag_t = 1986098019;
5283pub const hb_ot_metrics_tag_t_HB_OT_METRICS_TAG_VERTICAL_DESCENDER: hb_ot_metrics_tag_t =
5284 1986294627;
5285pub const hb_ot_metrics_tag_t_HB_OT_METRICS_TAG_VERTICAL_LINE_GAP: hb_ot_metrics_tag_t = 1986815856;
5286pub const hb_ot_metrics_tag_t_HB_OT_METRICS_TAG_HORIZONTAL_CARET_RISE: hb_ot_metrics_tag_t =
5287 1751347827;
5288pub const hb_ot_metrics_tag_t_HB_OT_METRICS_TAG_HORIZONTAL_CARET_RUN: hb_ot_metrics_tag_t =
5289 1751347822;
5290pub const hb_ot_metrics_tag_t_HB_OT_METRICS_TAG_HORIZONTAL_CARET_OFFSET: hb_ot_metrics_tag_t =
5291 1751347046;
5292pub const hb_ot_metrics_tag_t_HB_OT_METRICS_TAG_VERTICAL_CARET_RISE: hb_ot_metrics_tag_t =
5293 1986228851;
5294pub const hb_ot_metrics_tag_t_HB_OT_METRICS_TAG_VERTICAL_CARET_RUN: hb_ot_metrics_tag_t =
5295 1986228846;
5296pub const hb_ot_metrics_tag_t_HB_OT_METRICS_TAG_VERTICAL_CARET_OFFSET: hb_ot_metrics_tag_t =
5297 1986228070;
5298pub const hb_ot_metrics_tag_t_HB_OT_METRICS_TAG_X_HEIGHT: hb_ot_metrics_tag_t = 2020108148;
5299pub const hb_ot_metrics_tag_t_HB_OT_METRICS_TAG_CAP_HEIGHT: hb_ot_metrics_tag_t = 1668311156;
5300pub const hb_ot_metrics_tag_t_HB_OT_METRICS_TAG_SUBSCRIPT_EM_X_SIZE: hb_ot_metrics_tag_t =
5301 1935833203;
5302pub const hb_ot_metrics_tag_t_HB_OT_METRICS_TAG_SUBSCRIPT_EM_Y_SIZE: hb_ot_metrics_tag_t =
5303 1935833459;
5304pub const hb_ot_metrics_tag_t_HB_OT_METRICS_TAG_SUBSCRIPT_EM_X_OFFSET: hb_ot_metrics_tag_t =
5305 1935833199;
5306pub const hb_ot_metrics_tag_t_HB_OT_METRICS_TAG_SUBSCRIPT_EM_Y_OFFSET: hb_ot_metrics_tag_t =
5307 1935833455;
5308pub const hb_ot_metrics_tag_t_HB_OT_METRICS_TAG_SUPERSCRIPT_EM_X_SIZE: hb_ot_metrics_tag_t =
5309 1936750707;
5310pub const hb_ot_metrics_tag_t_HB_OT_METRICS_TAG_SUPERSCRIPT_EM_Y_SIZE: hb_ot_metrics_tag_t =
5311 1936750963;
5312pub const hb_ot_metrics_tag_t_HB_OT_METRICS_TAG_SUPERSCRIPT_EM_X_OFFSET: hb_ot_metrics_tag_t =
5313 1936750703;
5314pub const hb_ot_metrics_tag_t_HB_OT_METRICS_TAG_SUPERSCRIPT_EM_Y_OFFSET: hb_ot_metrics_tag_t =
5315 1936750959;
5316pub const hb_ot_metrics_tag_t_HB_OT_METRICS_TAG_STRIKEOUT_SIZE: hb_ot_metrics_tag_t = 1937011315;
5317pub const hb_ot_metrics_tag_t_HB_OT_METRICS_TAG_STRIKEOUT_OFFSET: hb_ot_metrics_tag_t = 1937011311;
5318pub const hb_ot_metrics_tag_t_HB_OT_METRICS_TAG_UNDERLINE_SIZE: hb_ot_metrics_tag_t = 1970168947;
5319pub const hb_ot_metrics_tag_t_HB_OT_METRICS_TAG_UNDERLINE_OFFSET: hb_ot_metrics_tag_t = 1970168943;
5320pub const hb_ot_metrics_tag_t__HB_OT_METRICS_TAG_MAX_VALUE: hb_ot_metrics_tag_t = 2147483647;
5321#[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 Metric tags corresponding to [MVAR Value\n Tags](https://docs.microsoft.com/en-us/typography/opentype/spec/mvar#value-tags)\n\n Since: 2.6.0"]
5322pub type hb_ot_metrics_tag_t = ::std::os::raw::c_uint;
5323extern "C" {
5324 pub fn hb_ot_metrics_get_position(
5325 font: *mut hb_font_t,
5326 metrics_tag: hb_ot_metrics_tag_t,
5327 position: *mut hb_position_t,
5328 ) -> hb_bool_t;
5329}
5330extern "C" {
5331 pub fn hb_ot_metrics_get_position_with_fallback(
5332 font: *mut hb_font_t,
5333 metrics_tag: hb_ot_metrics_tag_t,
5334 position: *mut hb_position_t,
5335 );
5336}
5337extern "C" {
5338 pub fn hb_ot_metrics_get_variation(
5339 font: *mut hb_font_t,
5340 metrics_tag: hb_ot_metrics_tag_t,
5341 ) -> f32;
5342}
5343extern "C" {
5344 pub fn hb_ot_metrics_get_x_variation(
5345 font: *mut hb_font_t,
5346 metrics_tag: hb_ot_metrics_tag_t,
5347 ) -> hb_position_t;
5348}
5349extern "C" {
5350 pub fn hb_ot_metrics_get_y_variation(
5351 font: *mut hb_font_t,
5352 metrics_tag: hb_ot_metrics_tag_t,
5353 ) -> hb_position_t;
5354}
5355extern "C" {
5356 pub fn hb_ot_shape_glyphs_closure(
5357 font: *mut hb_font_t,
5358 buffer: *mut hb_buffer_t,
5359 features: *const hb_feature_t,
5360 num_features: ::std::os::raw::c_uint,
5361 glyphs: *mut hb_set_t,
5362 );
5363}
5364extern "C" {
5365 pub fn hb_ot_shape_plan_collect_lookups(
5366 shape_plan: *mut hb_shape_plan_t,
5367 table_tag: hb_tag_t,
5368 lookup_indexes: *mut hb_set_t,
5369 );
5370}
5371extern "C" {
5372 pub fn hb_ot_var_has_data(face: *mut hb_face_t) -> hb_bool_t;
5373}
5374extern "C" {
5375 pub fn hb_ot_var_get_axis_count(face: *mut hb_face_t) -> ::std::os::raw::c_uint;
5376}
5377pub const hb_ot_var_axis_flags_t_HB_OT_VAR_AXIS_FLAG_HIDDEN: hb_ot_var_axis_flags_t = 1;
5378pub const hb_ot_var_axis_flags_t__HB_OT_VAR_AXIS_FLAG_MAX_VALUE: hb_ot_var_axis_flags_t =
5379 2147483647;
5380#[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 Flags for #hb_ot_var_axis_info_t.\n\n Since: 2.2.0"]
5381pub type hb_ot_var_axis_flags_t = ::std::os::raw::c_uint;
5382#[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 minimum 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"]
5383#[repr(C)]
5384#[derive(Debug, Copy, Clone)]
5385pub struct hb_ot_var_axis_info_t {
5386 pub axis_index: ::std::os::raw::c_uint,
5387 pub tag: hb_tag_t,
5388 pub name_id: hb_ot_name_id_t,
5389 pub flags: hb_ot_var_axis_flags_t,
5390 pub min_value: f32,
5391 pub default_value: f32,
5392 pub max_value: f32,
5393 pub reserved: ::std::os::raw::c_uint,
5394}
5395#[test]
5396fn bindgen_test_layout_hb_ot_var_axis_info_t() {
5397 const UNINIT: ::std::mem::MaybeUninit<hb_ot_var_axis_info_t> =
5398 ::std::mem::MaybeUninit::uninit();
5399 let ptr = UNINIT.as_ptr();
5400 assert_eq!(
5401 ::std::mem::size_of::<hb_ot_var_axis_info_t>(),
5402 32usize,
5403 concat!("Size of: ", stringify!(hb_ot_var_axis_info_t))
5404 );
5405 assert_eq!(
5406 ::std::mem::align_of::<hb_ot_var_axis_info_t>(),
5407 4usize,
5408 concat!("Alignment of ", stringify!(hb_ot_var_axis_info_t))
5409 );
5410 assert_eq!(
5411 unsafe { ::std::ptr::addr_of!((*ptr).axis_index) as usize - ptr as usize },
5412 0usize,
5413 concat!(
5414 "Offset of field: ",
5415 stringify!(hb_ot_var_axis_info_t),
5416 "::",
5417 stringify!(axis_index)
5418 )
5419 );
5420 assert_eq!(
5421 unsafe { ::std::ptr::addr_of!((*ptr).tag) as usize - ptr as usize },
5422 4usize,
5423 concat!("Offset of field: ", stringify!(hb_ot_var_axis_info_t), "::", stringify!(tag))
5424 );
5425 assert_eq!(
5426 unsafe { ::std::ptr::addr_of!((*ptr).name_id) as usize - ptr as usize },
5427 8usize,
5428 concat!(
5429 "Offset of field: ",
5430 stringify!(hb_ot_var_axis_info_t),
5431 "::",
5432 stringify!(name_id)
5433 )
5434 );
5435 assert_eq!(
5436 unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize },
5437 12usize,
5438 concat!("Offset of field: ", stringify!(hb_ot_var_axis_info_t), "::", stringify!(flags))
5439 );
5440 assert_eq!(
5441 unsafe { ::std::ptr::addr_of!((*ptr).min_value) as usize - ptr as usize },
5442 16usize,
5443 concat!(
5444 "Offset of field: ",
5445 stringify!(hb_ot_var_axis_info_t),
5446 "::",
5447 stringify!(min_value)
5448 )
5449 );
5450 assert_eq!(
5451 unsafe { ::std::ptr::addr_of!((*ptr).default_value) as usize - ptr as usize },
5452 20usize,
5453 concat!(
5454 "Offset of field: ",
5455 stringify!(hb_ot_var_axis_info_t),
5456 "::",
5457 stringify!(default_value)
5458 )
5459 );
5460 assert_eq!(
5461 unsafe { ::std::ptr::addr_of!((*ptr).max_value) as usize - ptr as usize },
5462 24usize,
5463 concat!(
5464 "Offset of field: ",
5465 stringify!(hb_ot_var_axis_info_t),
5466 "::",
5467 stringify!(max_value)
5468 )
5469 );
5470 assert_eq!(
5471 unsafe { ::std::ptr::addr_of!((*ptr).reserved) as usize - ptr as usize },
5472 28usize,
5473 concat!(
5474 "Offset of field: ",
5475 stringify!(hb_ot_var_axis_info_t),
5476 "::",
5477 stringify!(reserved)
5478 )
5479 );
5480}
5481extern "C" {
5482 pub fn hb_ot_var_get_axis_infos(
5483 face: *mut hb_face_t,
5484 start_offset: ::std::os::raw::c_uint,
5485 axes_count: *mut ::std::os::raw::c_uint,
5486 axes_array: *mut hb_ot_var_axis_info_t,
5487 ) -> ::std::os::raw::c_uint;
5488}
5489extern "C" {
5490 pub fn hb_ot_var_find_axis_info(
5491 face: *mut hb_face_t,
5492 axis_tag: hb_tag_t,
5493 axis_info: *mut hb_ot_var_axis_info_t,
5494 ) -> hb_bool_t;
5495}
5496extern "C" {
5497 pub fn hb_ot_var_get_named_instance_count(face: *mut hb_face_t) -> ::std::os::raw::c_uint;
5498}
5499extern "C" {
5500 pub fn hb_ot_var_named_instance_get_subfamily_name_id(
5501 face: *mut hb_face_t,
5502 instance_index: ::std::os::raw::c_uint,
5503 ) -> hb_ot_name_id_t;
5504}
5505extern "C" {
5506 pub fn hb_ot_var_named_instance_get_postscript_name_id(
5507 face: *mut hb_face_t,
5508 instance_index: ::std::os::raw::c_uint,
5509 ) -> hb_ot_name_id_t;
5510}
5511extern "C" {
5512 pub fn hb_ot_var_named_instance_get_design_coords(
5513 face: *mut hb_face_t,
5514 instance_index: ::std::os::raw::c_uint,
5515 coords_length: *mut ::std::os::raw::c_uint,
5516 coords: *mut f32,
5517 ) -> ::std::os::raw::c_uint;
5518}
5519extern "C" {
5520 pub fn hb_ot_var_normalize_variations(
5521 face: *mut hb_face_t,
5522 variations: *const hb_variation_t,
5523 variations_length: ::std::os::raw::c_uint,
5524 coords: *mut ::std::os::raw::c_int,
5525 coords_length: ::std::os::raw::c_uint,
5526 );
5527}
5528extern "C" {
5529 pub fn hb_ot_var_normalize_coords(
5530 face: *mut hb_face_t,
5531 coords_length: ::std::os::raw::c_uint,
5532 design_coords: *const f32,
5533 normalized_coords: *mut ::std::os::raw::c_int,
5534 );
5535}
5536#[repr(C)]
5537#[derive(Debug, Copy, Clone)]
5538pub struct hb_subset_input_t {
5539 _unused: [u8; 0],
5540}
5541#[repr(C)]
5542#[derive(Debug, Copy, Clone)]
5543pub struct hb_subset_plan_t {
5544 _unused: [u8; 0],
5545}
5546impl hb_subset_flags_t {
5547 pub const DEFAULT: hb_subset_flags_t = hb_subset_flags_t(0);
5548}
5549impl hb_subset_flags_t {
5550 pub const NO_HINTING: hb_subset_flags_t = hb_subset_flags_t(1);
5551}
5552impl hb_subset_flags_t {
5553 pub const RETAIN_GIDS: hb_subset_flags_t = hb_subset_flags_t(2);
5554}
5555impl hb_subset_flags_t {
5556 pub const DESUBROUTINIZE: hb_subset_flags_t = hb_subset_flags_t(4);
5557}
5558impl hb_subset_flags_t {
5559 pub const NAME_LEGACY: hb_subset_flags_t = hb_subset_flags_t(8);
5560}
5561impl hb_subset_flags_t {
5562 pub const SET_OVERLAPS_FLAG: hb_subset_flags_t = hb_subset_flags_t(16);
5563}
5564impl hb_subset_flags_t {
5565 pub const PASSTHROUGH_UNRECOGNIZED: hb_subset_flags_t = hb_subset_flags_t(32);
5566}
5567impl hb_subset_flags_t {
5568 pub const NOTDEF_OUTLINE: hb_subset_flags_t = hb_subset_flags_t(64);
5569}
5570impl hb_subset_flags_t {
5571 pub const GLYPH_NAMES: hb_subset_flags_t = hb_subset_flags_t(128);
5572}
5573impl hb_subset_flags_t {
5574 pub const NO_PRUNE_UNICODE_RANGES: hb_subset_flags_t = hb_subset_flags_t(256);
5575}
5576impl hb_subset_flags_t {
5577 pub const NO_LAYOUT_CLOSURE: hb_subset_flags_t = hb_subset_flags_t(512);
5578}
5579impl hb_subset_flags_t {
5580 pub const OPTIMIZE_IUP_DELTAS: hb_subset_flags_t = hb_subset_flags_t(1024);
5581}
5582impl ::std::ops::BitOr<hb_subset_flags_t> for hb_subset_flags_t {
5583 type Output = Self;
5584 #[inline]
5585 fn bitor(self, other: Self) -> Self {
5586 hb_subset_flags_t(self.0 | other.0)
5587 }
5588}
5589impl ::std::ops::BitOrAssign for hb_subset_flags_t {
5590 #[inline]
5591 fn bitor_assign(&mut self, rhs: hb_subset_flags_t) {
5592 self.0 |= rhs.0;
5593 }
5594}
5595impl ::std::ops::BitAnd<hb_subset_flags_t> for hb_subset_flags_t {
5596 type Output = Self;
5597 #[inline]
5598 fn bitand(self, other: Self) -> Self {
5599 hb_subset_flags_t(self.0 & other.0)
5600 }
5601}
5602impl ::std::ops::BitAndAssign for hb_subset_flags_t {
5603 #[inline]
5604 fn bitand_assign(&mut self, rhs: hb_subset_flags_t) {
5605 self.0 &= rhs.0;
5606 }
5607}
5608#[repr(transparent)]
5609#[doc = " hb_subset_flags_t:\n @DEFAULT: all flags at their default value of false.\n @NO_HINTING: If set hinting instructions will be dropped in\n the produced subset. Otherwise hinting instructions will be retained.\n @RETAIN_GIDS: If set glyph indices will not be modified in\n the produced subset. If glyphs are dropped their indices will be retained\n as an empty glyph.\n @DESUBROUTINIZE: If set and subsetting a CFF font the\n subsetter will attempt to remove subroutines from the CFF glyphs.\n @NAME_LEGACY: If set non-unicode name records will be\n retained in the subset.\n @SET_OVERLAPS_FLAG:\tIf set the subsetter will set the\n OVERLAP_SIMPLE flag on each simple glyph.\n @PASSTHROUGH_UNRECOGNIZED: If set the subsetter will not\n drop unrecognized tables and instead pass them through untouched.\n @NOTDEF_OUTLINE: If set the notdef glyph outline will be\n retained in the final subset.\n @GLYPH_NAMES: If set the PS glyph names will be retained\n in the final subset.\n @NO_PRUNE_UNICODE_RANGES: If set then the unicode ranges in\n OS/2 will not be recalculated.\n @NO_LAYOUT_CLOSURE: If set don't perform glyph closure on layout\n substitution rules (GSUB). Since: 7.2.0.\n @OPTIMIZE_IUP_DELTAS: If set perform IUP delta optimization on the\n remaining gvar table's deltas. Since: 8.5.0\n @IFTB_REQUIREMENTS: If set enforce requirements on the output subset\n to allow it to be used with incremental font transfer IFTB patches. Primarily,\n this forces all outline data to use long (32 bit) offsets. Since: EXPERIMENTAL\n\n List of boolean properties that can be configured on the subset input.\n\n Since: 2.9.0"]
5610#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
5611pub struct hb_subset_flags_t(pub ::std::os::raw::c_uint);
5612impl hb_subset_sets_t {
5613 pub const GLYPH_INDEX: hb_subset_sets_t = hb_subset_sets_t(0);
5614}
5615impl hb_subset_sets_t {
5616 pub const UNICODE: hb_subset_sets_t = hb_subset_sets_t(1);
5617}
5618impl hb_subset_sets_t {
5619 pub const NO_SUBSET_TABLE_TAG: hb_subset_sets_t = hb_subset_sets_t(2);
5620}
5621impl hb_subset_sets_t {
5622 pub const DROP_TABLE_TAG: hb_subset_sets_t = hb_subset_sets_t(3);
5623}
5624impl hb_subset_sets_t {
5625 pub const NAME_ID: hb_subset_sets_t = hb_subset_sets_t(4);
5626}
5627impl hb_subset_sets_t {
5628 pub const NAME_LANG_ID: hb_subset_sets_t = hb_subset_sets_t(5);
5629}
5630impl hb_subset_sets_t {
5631 pub const LAYOUT_FEATURE_TAG: hb_subset_sets_t = hb_subset_sets_t(6);
5632}
5633impl hb_subset_sets_t {
5634 pub const LAYOUT_SCRIPT_TAG: hb_subset_sets_t = hb_subset_sets_t(7);
5635}
5636impl ::std::ops::BitOr<hb_subset_sets_t> for hb_subset_sets_t {
5637 type Output = Self;
5638 #[inline]
5639 fn bitor(self, other: Self) -> Self {
5640 hb_subset_sets_t(self.0 | other.0)
5641 }
5642}
5643impl ::std::ops::BitOrAssign for hb_subset_sets_t {
5644 #[inline]
5645 fn bitor_assign(&mut self, rhs: hb_subset_sets_t) {
5646 self.0 |= rhs.0;
5647 }
5648}
5649impl ::std::ops::BitAnd<hb_subset_sets_t> for hb_subset_sets_t {
5650 type Output = Self;
5651 #[inline]
5652 fn bitand(self, other: Self) -> Self {
5653 hb_subset_sets_t(self.0 & other.0)
5654 }
5655}
5656impl ::std::ops::BitAndAssign for hb_subset_sets_t {
5657 #[inline]
5658 fn bitand_assign(&mut self, rhs: hb_subset_sets_t) {
5659 self.0 &= rhs.0;
5660 }
5661}
5662#[repr(transparent)]
5663#[doc = " hb_subset_sets_t:\n @GLYPH_INDEX: the set of glyph indexes to retain in the subset.\n @UNICODE: the set of unicode codepoints to retain in the subset.\n @NO_SUBSET_TABLE_TAG: the set of table tags which specifies tables that should not be\n subsetted.\n @DROP_TABLE_TAG: the set of table tags which specifies tables which will be dropped\n in the subset.\n @NAME_ID: the set of name ids that will be retained.\n @NAME_LANG_ID: the set of name lang ids that will be retained.\n @LAYOUT_FEATURE_TAG: the set of layout feature tags that will be retained\n in the subset.\n @LAYOUT_SCRIPT_TAG: the set of layout script tags that will be retained\n in the subset. Defaults to all tags. Since: 5.0.0\n\n List of sets that can be configured on the subset input.\n\n Since: 2.9.1"]
5664#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
5665pub struct hb_subset_sets_t(pub ::std::os::raw::c_uint);
5666extern "C" {
5667 pub fn hb_subset_input_create_or_fail() -> *mut hb_subset_input_t;
5668}
5669extern "C" {
5670 pub fn hb_subset_input_reference(input: *mut hb_subset_input_t) -> *mut hb_subset_input_t;
5671}
5672extern "C" {
5673 pub fn hb_subset_input_destroy(input: *mut hb_subset_input_t);
5674}
5675extern "C" {
5676 pub fn hb_subset_input_set_user_data(
5677 input: *mut hb_subset_input_t,
5678 key: *mut hb_user_data_key_t,
5679 data: *mut ::std::os::raw::c_void,
5680 destroy: hb_destroy_func_t,
5681 replace: hb_bool_t,
5682 ) -> hb_bool_t;
5683}
5684extern "C" {
5685 pub fn hb_subset_input_get_user_data(
5686 input: *const hb_subset_input_t,
5687 key: *mut hb_user_data_key_t,
5688 ) -> *mut ::std::os::raw::c_void;
5689}
5690extern "C" {
5691 pub fn hb_subset_input_keep_everything(input: *mut hb_subset_input_t);
5692}
5693extern "C" {
5694 pub fn hb_subset_input_unicode_set(input: *mut hb_subset_input_t) -> *mut hb_set_t;
5695}
5696extern "C" {
5697 pub fn hb_subset_input_glyph_set(input: *mut hb_subset_input_t) -> *mut hb_set_t;
5698}
5699extern "C" {
5700 pub fn hb_subset_input_set(
5701 input: *mut hb_subset_input_t,
5702 set_type: hb_subset_sets_t,
5703 ) -> *mut hb_set_t;
5704}
5705extern "C" {
5706 pub fn hb_subset_input_old_to_new_glyph_mapping(input: *mut hb_subset_input_t)
5707 -> *mut hb_map_t;
5708}
5709extern "C" {
5710 pub fn hb_subset_input_get_flags(input: *mut hb_subset_input_t) -> hb_subset_flags_t;
5711}
5712extern "C" {
5713 pub fn hb_subset_input_set_flags(input: *mut hb_subset_input_t, value: ::std::os::raw::c_uint);
5714}
5715extern "C" {
5716 pub fn hb_subset_input_pin_all_axes_to_default(
5717 input: *mut hb_subset_input_t,
5718 face: *mut hb_face_t,
5719 ) -> hb_bool_t;
5720}
5721extern "C" {
5722 pub fn hb_subset_input_pin_axis_to_default(
5723 input: *mut hb_subset_input_t,
5724 face: *mut hb_face_t,
5725 axis_tag: hb_tag_t,
5726 ) -> hb_bool_t;
5727}
5728extern "C" {
5729 pub fn hb_subset_input_pin_axis_location(
5730 input: *mut hb_subset_input_t,
5731 face: *mut hb_face_t,
5732 axis_tag: hb_tag_t,
5733 axis_value: f32,
5734 ) -> hb_bool_t;
5735}
5736extern "C" {
5737 pub fn hb_subset_input_get_axis_range(
5738 input: *mut hb_subset_input_t,
5739 axis_tag: hb_tag_t,
5740 axis_min_value: *mut f32,
5741 axis_max_value: *mut f32,
5742 axis_def_value: *mut f32,
5743 ) -> hb_bool_t;
5744}
5745extern "C" {
5746 pub fn hb_subset_input_set_axis_range(
5747 input: *mut hb_subset_input_t,
5748 face: *mut hb_face_t,
5749 axis_tag: hb_tag_t,
5750 axis_min_value: f32,
5751 axis_max_value: f32,
5752 axis_def_value: f32,
5753 ) -> hb_bool_t;
5754}
5755extern "C" {
5756 pub fn hb_subset_preprocess(source: *mut hb_face_t) -> *mut hb_face_t;
5757}
5758extern "C" {
5759 pub fn hb_subset_or_fail(
5760 source: *mut hb_face_t,
5761 input: *const hb_subset_input_t,
5762 ) -> *mut hb_face_t;
5763}
5764extern "C" {
5765 pub fn hb_subset_plan_execute_or_fail(plan: *mut hb_subset_plan_t) -> *mut hb_face_t;
5766}
5767extern "C" {
5768 pub fn hb_subset_plan_create_or_fail(
5769 face: *mut hb_face_t,
5770 input: *const hb_subset_input_t,
5771 ) -> *mut hb_subset_plan_t;
5772}
5773extern "C" {
5774 pub fn hb_subset_plan_destroy(plan: *mut hb_subset_plan_t);
5775}
5776extern "C" {
5777 pub fn hb_subset_plan_old_to_new_glyph_mapping(plan: *const hb_subset_plan_t) -> *mut hb_map_t;
5778}
5779extern "C" {
5780 pub fn hb_subset_plan_new_to_old_glyph_mapping(plan: *const hb_subset_plan_t) -> *mut hb_map_t;
5781}
5782extern "C" {
5783 pub fn hb_subset_plan_unicode_to_old_glyph_mapping(
5784 plan: *const hb_subset_plan_t,
5785 ) -> *mut hb_map_t;
5786}
5787extern "C" {
5788 pub fn hb_subset_plan_reference(plan: *mut hb_subset_plan_t) -> *mut hb_subset_plan_t;
5789}
5790extern "C" {
5791 pub fn hb_subset_plan_set_user_data(
5792 plan: *mut hb_subset_plan_t,
5793 key: *mut hb_user_data_key_t,
5794 data: *mut ::std::os::raw::c_void,
5795 destroy: hb_destroy_func_t,
5796 replace: hb_bool_t,
5797 ) -> hb_bool_t;
5798}
5799extern "C" {
5800 pub fn hb_subset_plan_get_user_data(
5801 plan: *const hb_subset_plan_t,
5802 key: *mut hb_user_data_key_t,
5803 ) -> *mut ::std::os::raw::c_void;
5804}