diff --git a/harfbuzz b/harfbuzz index b8087db..d5261f7 160000 --- a/harfbuzz +++ b/harfbuzz @@ -1 +1 @@ -Subproject commit b8087dbdd58361aaad8c2b0e57f3414f500cc8a7 +Subproject commit d5261f7234ab072a2aa1758ccfe37372df9927a9 diff --git a/src/bindings.rs b/src/bindings.rs index f1dd0b3..0b02486 100644 --- a/src/bindings.rs +++ b/src/bindings.rs @@ -1,1243 +1,5 @@ -/* automatically generated by rust-bindgen 0.69.4 */ +/* automatically generated by rust-bindgen 0.70.1 */ -pub const __PRI_8_LENGTH_MODIFIER__: &[u8; 3] = b"hh\0"; -pub const __PRI_64_LENGTH_MODIFIER__: &[u8; 3] = b"ll\0"; -pub const __SCN_64_LENGTH_MODIFIER__: &[u8; 3] = b"ll\0"; -pub const __PRI_MAX_LENGTH_MODIFIER__: &[u8; 2] = b"j\0"; -pub const __SCN_MAX_LENGTH_MODIFIER__: &[u8; 2] = b"j\0"; -pub const PRId8: &[u8; 4] = b"hhd\0"; -pub const PRIi8: &[u8; 4] = b"hhi\0"; -pub const PRIo8: &[u8; 4] = b"hho\0"; -pub const PRIu8: &[u8; 4] = b"hhu\0"; -pub const PRIx8: &[u8; 4] = b"hhx\0"; -pub const PRIX8: &[u8; 4] = b"hhX\0"; -pub const PRId16: &[u8; 3] = b"hd\0"; -pub const PRIi16: &[u8; 3] = b"hi\0"; -pub const PRIo16: &[u8; 3] = b"ho\0"; -pub const PRIu16: &[u8; 3] = b"hu\0"; -pub const PRIx16: &[u8; 3] = b"hx\0"; -pub const PRIX16: &[u8; 3] = b"hX\0"; -pub const PRId32: &[u8; 2] = b"d\0"; -pub const PRIi32: &[u8; 2] = b"i\0"; -pub const PRIo32: &[u8; 2] = b"o\0"; -pub const PRIu32: &[u8; 2] = b"u\0"; -pub const PRIx32: &[u8; 2] = b"x\0"; -pub const PRIX32: &[u8; 2] = b"X\0"; -pub const PRId64: &[u8; 4] = b"lld\0"; -pub const PRIi64: &[u8; 4] = b"lli\0"; -pub const PRIo64: &[u8; 4] = b"llo\0"; -pub const PRIu64: &[u8; 4] = b"llu\0"; -pub const PRIx64: &[u8; 4] = b"llx\0"; -pub const PRIX64: &[u8; 4] = b"llX\0"; -pub const PRIdLEAST8: &[u8; 4] = b"hhd\0"; -pub const PRIiLEAST8: &[u8; 4] = b"hhi\0"; -pub const PRIoLEAST8: &[u8; 4] = b"hho\0"; -pub const PRIuLEAST8: &[u8; 4] = b"hhu\0"; -pub const PRIxLEAST8: &[u8; 4] = b"hhx\0"; -pub const PRIXLEAST8: &[u8; 4] = b"hhX\0"; -pub const PRIdLEAST16: &[u8; 3] = b"hd\0"; -pub const PRIiLEAST16: &[u8; 3] = b"hi\0"; -pub const PRIoLEAST16: &[u8; 3] = b"ho\0"; -pub const PRIuLEAST16: &[u8; 3] = b"hu\0"; -pub const PRIxLEAST16: &[u8; 3] = b"hx\0"; -pub const PRIXLEAST16: &[u8; 3] = b"hX\0"; -pub const PRIdLEAST32: &[u8; 2] = b"d\0"; -pub const PRIiLEAST32: &[u8; 2] = b"i\0"; -pub const PRIoLEAST32: &[u8; 2] = b"o\0"; -pub const PRIuLEAST32: &[u8; 2] = b"u\0"; -pub const PRIxLEAST32: &[u8; 2] = b"x\0"; -pub const PRIXLEAST32: &[u8; 2] = b"X\0"; -pub const PRIdLEAST64: &[u8; 4] = b"lld\0"; -pub const PRIiLEAST64: &[u8; 4] = b"lli\0"; -pub const PRIoLEAST64: &[u8; 4] = b"llo\0"; -pub const PRIuLEAST64: &[u8; 4] = b"llu\0"; -pub const PRIxLEAST64: &[u8; 4] = b"llx\0"; -pub const PRIXLEAST64: &[u8; 4] = b"llX\0"; -pub const PRIdFAST8: &[u8; 4] = b"hhd\0"; -pub const PRIiFAST8: &[u8; 4] = b"hhi\0"; -pub const PRIoFAST8: &[u8; 4] = b"hho\0"; -pub const PRIuFAST8: &[u8; 4] = b"hhu\0"; -pub const PRIxFAST8: &[u8; 4] = b"hhx\0"; -pub const PRIXFAST8: &[u8; 4] = b"hhX\0"; -pub const PRIdFAST16: &[u8; 3] = b"hd\0"; -pub const PRIiFAST16: &[u8; 3] = b"hi\0"; -pub const PRIoFAST16: &[u8; 3] = b"ho\0"; -pub const PRIuFAST16: &[u8; 3] = b"hu\0"; -pub const PRIxFAST16: &[u8; 3] = b"hx\0"; -pub const PRIXFAST16: &[u8; 3] = b"hX\0"; -pub const PRIdFAST32: &[u8; 2] = b"d\0"; -pub const PRIiFAST32: &[u8; 2] = b"i\0"; -pub const PRIoFAST32: &[u8; 2] = b"o\0"; -pub const PRIuFAST32: &[u8; 2] = b"u\0"; -pub const PRIxFAST32: &[u8; 2] = b"x\0"; -pub const PRIXFAST32: &[u8; 2] = b"X\0"; -pub const PRIdFAST64: &[u8; 4] = b"lld\0"; -pub const PRIiFAST64: &[u8; 4] = b"lli\0"; -pub const PRIoFAST64: &[u8; 4] = b"llo\0"; -pub const PRIuFAST64: &[u8; 4] = b"llu\0"; -pub const PRIxFAST64: &[u8; 4] = b"llx\0"; -pub const PRIXFAST64: &[u8; 4] = b"llX\0"; -pub const PRIdPTR: &[u8; 3] = b"ld\0"; -pub const PRIiPTR: &[u8; 3] = b"li\0"; -pub const PRIoPTR: &[u8; 3] = b"lo\0"; -pub const PRIuPTR: &[u8; 3] = b"lu\0"; -pub const PRIxPTR: &[u8; 3] = b"lx\0"; -pub const PRIXPTR: &[u8; 3] = b"lX\0"; -pub const PRIdMAX: &[u8; 3] = b"jd\0"; -pub const PRIiMAX: &[u8; 3] = b"ji\0"; -pub const PRIoMAX: &[u8; 3] = b"jo\0"; -pub const PRIuMAX: &[u8; 3] = b"ju\0"; -pub const PRIxMAX: &[u8; 3] = b"jx\0"; -pub const PRIXMAX: &[u8; 3] = b"jX\0"; -pub const SCNd8: &[u8; 4] = b"hhd\0"; -pub const SCNi8: &[u8; 4] = b"hhi\0"; -pub const SCNo8: &[u8; 4] = b"hho\0"; -pub const SCNu8: &[u8; 4] = b"hhu\0"; -pub const SCNx8: &[u8; 4] = b"hhx\0"; -pub const SCNd16: &[u8; 3] = b"hd\0"; -pub const SCNi16: &[u8; 3] = b"hi\0"; -pub const SCNo16: &[u8; 3] = b"ho\0"; -pub const SCNu16: &[u8; 3] = b"hu\0"; -pub const SCNx16: &[u8; 3] = b"hx\0"; -pub const SCNd32: &[u8; 2] = b"d\0"; -pub const SCNi32: &[u8; 2] = b"i\0"; -pub const SCNo32: &[u8; 2] = b"o\0"; -pub const SCNu32: &[u8; 2] = b"u\0"; -pub const SCNx32: &[u8; 2] = b"x\0"; -pub const SCNd64: &[u8; 4] = b"lld\0"; -pub const SCNi64: &[u8; 4] = b"lli\0"; -pub const SCNo64: &[u8; 4] = b"llo\0"; -pub const SCNu64: &[u8; 4] = b"llu\0"; -pub const SCNx64: &[u8; 4] = b"llx\0"; -pub const SCNdLEAST8: &[u8; 4] = b"hhd\0"; -pub const SCNiLEAST8: &[u8; 4] = b"hhi\0"; -pub const SCNoLEAST8: &[u8; 4] = b"hho\0"; -pub const SCNuLEAST8: &[u8; 4] = b"hhu\0"; -pub const SCNxLEAST8: &[u8; 4] = b"hhx\0"; -pub const SCNdLEAST16: &[u8; 3] = b"hd\0"; -pub const SCNiLEAST16: &[u8; 3] = b"hi\0"; -pub const SCNoLEAST16: &[u8; 3] = b"ho\0"; -pub const SCNuLEAST16: &[u8; 3] = b"hu\0"; -pub const SCNxLEAST16: &[u8; 3] = b"hx\0"; -pub const SCNdLEAST32: &[u8; 2] = b"d\0"; -pub const SCNiLEAST32: &[u8; 2] = b"i\0"; -pub const SCNoLEAST32: &[u8; 2] = b"o\0"; -pub const SCNuLEAST32: &[u8; 2] = b"u\0"; -pub const SCNxLEAST32: &[u8; 2] = b"x\0"; -pub const SCNdLEAST64: &[u8; 4] = b"lld\0"; -pub const SCNiLEAST64: &[u8; 4] = b"lli\0"; -pub const SCNoLEAST64: &[u8; 4] = b"llo\0"; -pub const SCNuLEAST64: &[u8; 4] = b"llu\0"; -pub const SCNxLEAST64: &[u8; 4] = b"llx\0"; -pub const SCNdFAST8: &[u8; 4] = b"hhd\0"; -pub const SCNiFAST8: &[u8; 4] = b"hhi\0"; -pub const SCNoFAST8: &[u8; 4] = b"hho\0"; -pub const SCNuFAST8: &[u8; 4] = b"hhu\0"; -pub const SCNxFAST8: &[u8; 4] = b"hhx\0"; -pub const SCNdFAST16: &[u8; 3] = b"hd\0"; -pub const SCNiFAST16: &[u8; 3] = b"hi\0"; -pub const SCNoFAST16: &[u8; 3] = b"ho\0"; -pub const SCNuFAST16: &[u8; 3] = b"hu\0"; -pub const SCNxFAST16: &[u8; 3] = b"hx\0"; -pub const SCNdFAST32: &[u8; 2] = b"d\0"; -pub const SCNiFAST32: &[u8; 2] = b"i\0"; -pub const SCNoFAST32: &[u8; 2] = b"o\0"; -pub const SCNuFAST32: &[u8; 2] = b"u\0"; -pub const SCNxFAST32: &[u8; 2] = b"x\0"; -pub const SCNdFAST64: &[u8; 4] = b"lld\0"; -pub const SCNiFAST64: &[u8; 4] = b"lli\0"; -pub const SCNoFAST64: &[u8; 4] = b"llo\0"; -pub const SCNuFAST64: &[u8; 4] = b"llu\0"; -pub const SCNxFAST64: &[u8; 4] = b"llx\0"; -pub const SCNdPTR: &[u8; 3] = b"ld\0"; -pub const SCNiPTR: &[u8; 3] = b"li\0"; -pub const SCNoPTR: &[u8; 3] = b"lo\0"; -pub const SCNuPTR: &[u8; 3] = b"lu\0"; -pub const SCNxPTR: &[u8; 3] = b"lx\0"; -pub const SCNdMAX: &[u8; 3] = b"jd\0"; -pub const SCNiMAX: &[u8; 3] = b"ji\0"; -pub const SCNoMAX: &[u8; 3] = b"jo\0"; -pub const SCNuMAX: &[u8; 3] = b"ju\0"; -pub const SCNxMAX: &[u8; 3] = b"jx\0"; -pub const __has_safe_buffers: u32 = 1; -pub const __DARWIN_ONLY_64_BIT_INO_T: u32 = 1; -pub const __DARWIN_ONLY_UNIX_CONFORMANCE: u32 = 1; -pub const __DARWIN_ONLY_VERS_1050: u32 = 1; -pub const __DARWIN_UNIX03: u32 = 1; -pub const __DARWIN_64_BIT_INO_T: u32 = 1; -pub const __DARWIN_VERS_1050: u32 = 1; -pub const __DARWIN_NON_CANCELABLE: u32 = 0; -pub const __DARWIN_SUF_EXTSN: &[u8; 14] = b"$DARWIN_EXTSN\0"; -pub const __DARWIN_C_ANSI: u32 = 4096; -pub const __DARWIN_C_FULL: u32 = 900000; -pub const __DARWIN_C_LEVEL: u32 = 900000; -pub const __STDC_WANT_LIB_EXT1__: u32 = 1; -pub const __DARWIN_NO_LONG_LONG: u32 = 0; -pub const _DARWIN_FEATURE_64_BIT_INODE: u32 = 1; -pub const _DARWIN_FEATURE_ONLY_64_BIT_INODE: u32 = 1; -pub const _DARWIN_FEATURE_ONLY_VERS_1050: u32 = 1; -pub const _DARWIN_FEATURE_ONLY_UNIX_CONFORMANCE: u32 = 1; -pub const _DARWIN_FEATURE_UNIX_CONFORMANCE: u32 = 3; -pub const __has_ptrcheck: u32 = 0; -pub const __API_TO_BE_DEPRECATED: u32 = 100000; -pub const __API_TO_BE_DEPRECATED_MACOS: u32 = 100000; -pub const __API_TO_BE_DEPRECATED_IOS: u32 = 100000; -pub const __API_TO_BE_DEPRECATED_MACCATALYST: u32 = 100000; -pub const __API_TO_BE_DEPRECATED_WATCHOS: u32 = 100000; -pub const __API_TO_BE_DEPRECATED_TVOS: u32 = 100000; -pub const __API_TO_BE_DEPRECATED_DRIVERKIT: u32 = 100000; -pub const __API_TO_BE_DEPRECATED_VISIONOS: u32 = 100000; -pub const __MAC_10_0: u32 = 1000; -pub const __MAC_10_1: u32 = 1010; -pub const __MAC_10_2: u32 = 1020; -pub const __MAC_10_3: u32 = 1030; -pub const __MAC_10_4: u32 = 1040; -pub const __MAC_10_5: u32 = 1050; -pub const __MAC_10_6: u32 = 1060; -pub const __MAC_10_7: u32 = 1070; -pub const __MAC_10_8: u32 = 1080; -pub const __MAC_10_9: u32 = 1090; -pub const __MAC_10_10: u32 = 101000; -pub const __MAC_10_10_2: u32 = 101002; -pub const __MAC_10_10_3: u32 = 101003; -pub const __MAC_10_11: u32 = 101100; -pub const __MAC_10_11_2: u32 = 101102; -pub const __MAC_10_11_3: u32 = 101103; -pub const __MAC_10_11_4: u32 = 101104; -pub const __MAC_10_12: u32 = 101200; -pub const __MAC_10_12_1: u32 = 101201; -pub const __MAC_10_12_2: u32 = 101202; -pub const __MAC_10_12_4: u32 = 101204; -pub const __MAC_10_13: u32 = 101300; -pub const __MAC_10_13_1: u32 = 101301; -pub const __MAC_10_13_2: u32 = 101302; -pub const __MAC_10_13_4: u32 = 101304; -pub const __MAC_10_14: u32 = 101400; -pub const __MAC_10_14_1: u32 = 101401; -pub const __MAC_10_14_4: u32 = 101404; -pub const __MAC_10_14_5: u32 = 101405; -pub const __MAC_10_14_6: u32 = 101406; -pub const __MAC_10_15: u32 = 101500; -pub const __MAC_10_15_1: u32 = 101501; -pub const __MAC_10_15_4: u32 = 101504; -pub const __MAC_10_16: u32 = 101600; -pub const __MAC_11_0: u32 = 110000; -pub const __MAC_11_1: u32 = 110100; -pub const __MAC_11_3: u32 = 110300; -pub const __MAC_11_4: u32 = 110400; -pub const __MAC_11_5: u32 = 110500; -pub const __MAC_11_6: u32 = 110600; -pub const __MAC_12_0: u32 = 120000; -pub const __MAC_12_1: u32 = 120100; -pub const __MAC_12_2: u32 = 120200; -pub const __MAC_12_3: u32 = 120300; -pub const __MAC_12_4: u32 = 120400; -pub const __MAC_12_5: u32 = 120500; -pub const __MAC_12_6: u32 = 120600; -pub const __MAC_12_7: u32 = 120700; -pub const __MAC_13_0: u32 = 130000; -pub const __MAC_13_1: u32 = 130100; -pub const __MAC_13_2: u32 = 130200; -pub const __MAC_13_3: u32 = 130300; -pub const __MAC_13_4: u32 = 130400; -pub const __MAC_13_5: u32 = 130500; -pub const __MAC_13_6: u32 = 130600; -pub const __MAC_14_0: u32 = 140000; -pub const __MAC_14_1: u32 = 140100; -pub const __MAC_14_2: u32 = 140200; -pub const __MAC_14_3: u32 = 140300; -pub const __MAC_14_4: u32 = 140400; -pub const __MAC_14_5: u32 = 140500; -pub const __IPHONE_2_0: u32 = 20000; -pub const __IPHONE_2_1: u32 = 20100; -pub const __IPHONE_2_2: u32 = 20200; -pub const __IPHONE_3_0: u32 = 30000; -pub const __IPHONE_3_1: u32 = 30100; -pub const __IPHONE_3_2: u32 = 30200; -pub const __IPHONE_4_0: u32 = 40000; -pub const __IPHONE_4_1: u32 = 40100; -pub const __IPHONE_4_2: u32 = 40200; -pub const __IPHONE_4_3: u32 = 40300; -pub const __IPHONE_5_0: u32 = 50000; -pub const __IPHONE_5_1: u32 = 50100; -pub const __IPHONE_6_0: u32 = 60000; -pub const __IPHONE_6_1: u32 = 60100; -pub const __IPHONE_7_0: u32 = 70000; -pub const __IPHONE_7_1: u32 = 70100; -pub const __IPHONE_8_0: u32 = 80000; -pub const __IPHONE_8_1: u32 = 80100; -pub const __IPHONE_8_2: u32 = 80200; -pub const __IPHONE_8_3: u32 = 80300; -pub const __IPHONE_8_4: u32 = 80400; -pub const __IPHONE_9_0: u32 = 90000; -pub const __IPHONE_9_1: u32 = 90100; -pub const __IPHONE_9_2: u32 = 90200; -pub const __IPHONE_9_3: u32 = 90300; -pub const __IPHONE_10_0: u32 = 100000; -pub const __IPHONE_10_1: u32 = 100100; -pub const __IPHONE_10_2: u32 = 100200; -pub const __IPHONE_10_3: u32 = 100300; -pub const __IPHONE_11_0: u32 = 110000; -pub const __IPHONE_11_1: u32 = 110100; -pub const __IPHONE_11_2: u32 = 110200; -pub const __IPHONE_11_3: u32 = 110300; -pub const __IPHONE_11_4: u32 = 110400; -pub const __IPHONE_12_0: u32 = 120000; -pub const __IPHONE_12_1: u32 = 120100; -pub const __IPHONE_12_2: u32 = 120200; -pub const __IPHONE_12_3: u32 = 120300; -pub const __IPHONE_12_4: u32 = 120400; -pub const __IPHONE_13_0: u32 = 130000; -pub const __IPHONE_13_1: u32 = 130100; -pub const __IPHONE_13_2: u32 = 130200; -pub const __IPHONE_13_3: u32 = 130300; -pub const __IPHONE_13_4: u32 = 130400; -pub const __IPHONE_13_5: u32 = 130500; -pub const __IPHONE_13_6: u32 = 130600; -pub const __IPHONE_13_7: u32 = 130700; -pub const __IPHONE_14_0: u32 = 140000; -pub const __IPHONE_14_1: u32 = 140100; -pub const __IPHONE_14_2: u32 = 140200; -pub const __IPHONE_14_3: u32 = 140300; -pub const __IPHONE_14_5: u32 = 140500; -pub const __IPHONE_14_4: u32 = 140400; -pub const __IPHONE_14_6: u32 = 140600; -pub const __IPHONE_14_7: u32 = 140700; -pub const __IPHONE_14_8: u32 = 140800; -pub const __IPHONE_15_0: u32 = 150000; -pub const __IPHONE_15_1: u32 = 150100; -pub const __IPHONE_15_2: u32 = 150200; -pub const __IPHONE_15_3: u32 = 150300; -pub const __IPHONE_15_4: u32 = 150400; -pub const __IPHONE_15_5: u32 = 150500; -pub const __IPHONE_15_6: u32 = 150600; -pub const __IPHONE_15_7: u32 = 150700; -pub const __IPHONE_15_8: u32 = 150800; -pub const __IPHONE_16_0: u32 = 160000; -pub const __IPHONE_16_1: u32 = 160100; -pub const __IPHONE_16_2: u32 = 160200; -pub const __IPHONE_16_3: u32 = 160300; -pub const __IPHONE_16_4: u32 = 160400; -pub const __IPHONE_16_5: u32 = 160500; -pub const __IPHONE_16_6: u32 = 160600; -pub const __IPHONE_16_7: u32 = 160700; -pub const __IPHONE_17_0: u32 = 170000; -pub const __IPHONE_17_1: u32 = 170100; -pub const __IPHONE_17_2: u32 = 170200; -pub const __IPHONE_17_3: u32 = 170300; -pub const __IPHONE_17_4: u32 = 170400; -pub const __IPHONE_17_5: u32 = 170500; -pub const __WATCHOS_1_0: u32 = 10000; -pub const __WATCHOS_2_0: u32 = 20000; -pub const __WATCHOS_2_1: u32 = 20100; -pub const __WATCHOS_2_2: u32 = 20200; -pub const __WATCHOS_3_0: u32 = 30000; -pub const __WATCHOS_3_1: u32 = 30100; -pub const __WATCHOS_3_1_1: u32 = 30101; -pub const __WATCHOS_3_2: u32 = 30200; -pub const __WATCHOS_4_0: u32 = 40000; -pub const __WATCHOS_4_1: u32 = 40100; -pub const __WATCHOS_4_2: u32 = 40200; -pub const __WATCHOS_4_3: u32 = 40300; -pub const __WATCHOS_5_0: u32 = 50000; -pub const __WATCHOS_5_1: u32 = 50100; -pub const __WATCHOS_5_2: u32 = 50200; -pub const __WATCHOS_5_3: u32 = 50300; -pub const __WATCHOS_6_0: u32 = 60000; -pub const __WATCHOS_6_1: u32 = 60100; -pub const __WATCHOS_6_2: u32 = 60200; -pub const __WATCHOS_7_0: u32 = 70000; -pub const __WATCHOS_7_1: u32 = 70100; -pub const __WATCHOS_7_2: u32 = 70200; -pub const __WATCHOS_7_3: u32 = 70300; -pub const __WATCHOS_7_4: u32 = 70400; -pub const __WATCHOS_7_5: u32 = 70500; -pub const __WATCHOS_7_6: u32 = 70600; -pub const __WATCHOS_8_0: u32 = 80000; -pub const __WATCHOS_8_1: u32 = 80100; -pub const __WATCHOS_8_3: u32 = 80300; -pub const __WATCHOS_8_4: u32 = 80400; -pub const __WATCHOS_8_5: u32 = 80500; -pub const __WATCHOS_8_6: u32 = 80600; -pub const __WATCHOS_8_7: u32 = 80700; -pub const __WATCHOS_8_8: u32 = 80800; -pub const __WATCHOS_9_0: u32 = 90000; -pub const __WATCHOS_9_1: u32 = 90100; -pub const __WATCHOS_9_2: u32 = 90200; -pub const __WATCHOS_9_3: u32 = 90300; -pub const __WATCHOS_9_4: u32 = 90400; -pub const __WATCHOS_9_5: u32 = 90500; -pub const __WATCHOS_9_6: u32 = 90600; -pub const __WATCHOS_10_0: u32 = 100000; -pub const __WATCHOS_10_1: u32 = 100100; -pub const __WATCHOS_10_2: u32 = 100200; -pub const __WATCHOS_10_3: u32 = 100300; -pub const __WATCHOS_10_4: u32 = 100400; -pub const __WATCHOS_10_5: u32 = 100500; -pub const __TVOS_9_0: u32 = 90000; -pub const __TVOS_9_1: u32 = 90100; -pub const __TVOS_9_2: u32 = 90200; -pub const __TVOS_10_0: u32 = 100000; -pub const __TVOS_10_0_1: u32 = 100001; -pub const __TVOS_10_1: u32 = 100100; -pub const __TVOS_10_2: u32 = 100200; -pub const __TVOS_11_0: u32 = 110000; -pub const __TVOS_11_1: u32 = 110100; -pub const __TVOS_11_2: u32 = 110200; -pub const __TVOS_11_3: u32 = 110300; -pub const __TVOS_11_4: u32 = 110400; -pub const __TVOS_12_0: u32 = 120000; -pub const __TVOS_12_1: u32 = 120100; -pub const __TVOS_12_2: u32 = 120200; -pub const __TVOS_12_3: u32 = 120300; -pub const __TVOS_12_4: u32 = 120400; -pub const __TVOS_13_0: u32 = 130000; -pub const __TVOS_13_2: u32 = 130200; -pub const __TVOS_13_3: u32 = 130300; -pub const __TVOS_13_4: u32 = 130400; -pub const __TVOS_14_0: u32 = 140000; -pub const __TVOS_14_1: u32 = 140100; -pub const __TVOS_14_2: u32 = 140200; -pub const __TVOS_14_3: u32 = 140300; -pub const __TVOS_14_5: u32 = 140500; -pub const __TVOS_14_6: u32 = 140600; -pub const __TVOS_14_7: u32 = 140700; -pub const __TVOS_15_0: u32 = 150000; -pub const __TVOS_15_1: u32 = 150100; -pub const __TVOS_15_2: u32 = 150200; -pub const __TVOS_15_3: u32 = 150300; -pub const __TVOS_15_4: u32 = 150400; -pub const __TVOS_15_5: u32 = 150500; -pub const __TVOS_15_6: u32 = 150600; -pub const __TVOS_16_0: u32 = 160000; -pub const __TVOS_16_1: u32 = 160100; -pub const __TVOS_16_2: u32 = 160200; -pub const __TVOS_16_3: u32 = 160300; -pub const __TVOS_16_4: u32 = 160400; -pub const __TVOS_16_5: u32 = 160500; -pub const __TVOS_16_6: u32 = 160600; -pub const __TVOS_17_0: u32 = 170000; -pub const __TVOS_17_1: u32 = 170100; -pub const __TVOS_17_2: u32 = 170200; -pub const __TVOS_17_3: u32 = 170300; -pub const __TVOS_17_4: u32 = 170400; -pub const __TVOS_17_5: u32 = 170500; -pub const __BRIDGEOS_2_0: u32 = 20000; -pub const __BRIDGEOS_3_0: u32 = 30000; -pub const __BRIDGEOS_3_1: u32 = 30100; -pub const __BRIDGEOS_3_4: u32 = 30400; -pub const __BRIDGEOS_4_0: u32 = 40000; -pub const __BRIDGEOS_4_1: u32 = 40100; -pub const __BRIDGEOS_5_0: u32 = 50000; -pub const __BRIDGEOS_5_1: u32 = 50100; -pub const __BRIDGEOS_5_3: u32 = 50300; -pub const __BRIDGEOS_6_0: u32 = 60000; -pub const __BRIDGEOS_6_2: u32 = 60200; -pub const __BRIDGEOS_6_4: u32 = 60400; -pub const __BRIDGEOS_6_5: u32 = 60500; -pub const __BRIDGEOS_6_6: u32 = 60600; -pub const __BRIDGEOS_7_0: u32 = 70000; -pub const __BRIDGEOS_7_1: u32 = 70100; -pub const __BRIDGEOS_7_2: u32 = 70200; -pub const __BRIDGEOS_7_3: u32 = 70300; -pub const __BRIDGEOS_7_4: u32 = 70400; -pub const __BRIDGEOS_7_6: u32 = 70600; -pub const __BRIDGEOS_8_0: u32 = 80000; -pub const __BRIDGEOS_8_1: u32 = 80100; -pub const __BRIDGEOS_8_2: u32 = 80200; -pub const __BRIDGEOS_8_3: u32 = 80300; -pub const __BRIDGEOS_8_4: u32 = 80400; -pub const __BRIDGEOS_8_5: u32 = 80500; -pub const __DRIVERKIT_19_0: u32 = 190000; -pub const __DRIVERKIT_20_0: u32 = 200000; -pub const __DRIVERKIT_21_0: u32 = 210000; -pub const __DRIVERKIT_22_0: u32 = 220000; -pub const __DRIVERKIT_22_4: u32 = 220400; -pub const __DRIVERKIT_22_5: u32 = 220500; -pub const __DRIVERKIT_22_6: u32 = 220600; -pub const __DRIVERKIT_23_0: u32 = 230000; -pub const __DRIVERKIT_23_1: u32 = 230100; -pub const __DRIVERKIT_23_2: u32 = 230200; -pub const __DRIVERKIT_23_3: u32 = 230300; -pub const __DRIVERKIT_23_4: u32 = 230400; -pub const __DRIVERKIT_23_5: u32 = 230500; -pub const __VISIONOS_1_0: u32 = 10000; -pub const __VISIONOS_1_1: u32 = 10100; -pub const __VISIONOS_1_2: u32 = 10200; -pub const MAC_OS_X_VERSION_10_0: u32 = 1000; -pub const MAC_OS_X_VERSION_10_1: u32 = 1010; -pub const MAC_OS_X_VERSION_10_2: u32 = 1020; -pub const MAC_OS_X_VERSION_10_3: u32 = 1030; -pub const MAC_OS_X_VERSION_10_4: u32 = 1040; -pub const MAC_OS_X_VERSION_10_5: u32 = 1050; -pub const MAC_OS_X_VERSION_10_6: u32 = 1060; -pub const MAC_OS_X_VERSION_10_7: u32 = 1070; -pub const MAC_OS_X_VERSION_10_8: u32 = 1080; -pub const MAC_OS_X_VERSION_10_9: u32 = 1090; -pub const MAC_OS_X_VERSION_10_10: u32 = 101000; -pub const MAC_OS_X_VERSION_10_10_2: u32 = 101002; -pub const MAC_OS_X_VERSION_10_10_3: u32 = 101003; -pub const MAC_OS_X_VERSION_10_11: u32 = 101100; -pub const MAC_OS_X_VERSION_10_11_2: u32 = 101102; -pub const MAC_OS_X_VERSION_10_11_3: u32 = 101103; -pub const MAC_OS_X_VERSION_10_11_4: u32 = 101104; -pub const MAC_OS_X_VERSION_10_12: u32 = 101200; -pub const MAC_OS_X_VERSION_10_12_1: u32 = 101201; -pub const MAC_OS_X_VERSION_10_12_2: u32 = 101202; -pub const MAC_OS_X_VERSION_10_12_4: u32 = 101204; -pub const MAC_OS_X_VERSION_10_13: u32 = 101300; -pub const MAC_OS_X_VERSION_10_13_1: u32 = 101301; -pub const MAC_OS_X_VERSION_10_13_2: u32 = 101302; -pub const MAC_OS_X_VERSION_10_13_4: u32 = 101304; -pub const MAC_OS_X_VERSION_10_14: u32 = 101400; -pub const MAC_OS_X_VERSION_10_14_1: u32 = 101401; -pub const MAC_OS_X_VERSION_10_14_4: u32 = 101404; -pub const MAC_OS_X_VERSION_10_14_5: u32 = 101405; -pub const MAC_OS_X_VERSION_10_14_6: u32 = 101406; -pub const MAC_OS_X_VERSION_10_15: u32 = 101500; -pub const MAC_OS_X_VERSION_10_15_1: u32 = 101501; -pub const MAC_OS_X_VERSION_10_15_4: u32 = 101504; -pub const MAC_OS_X_VERSION_10_16: u32 = 101600; -pub const MAC_OS_VERSION_11_0: u32 = 110000; -pub const MAC_OS_VERSION_11_1: u32 = 110100; -pub const MAC_OS_VERSION_11_3: u32 = 110300; -pub const MAC_OS_VERSION_11_4: u32 = 110400; -pub const MAC_OS_VERSION_11_5: u32 = 110500; -pub const MAC_OS_VERSION_11_6: u32 = 110600; -pub const MAC_OS_VERSION_12_0: u32 = 120000; -pub const MAC_OS_VERSION_12_1: u32 = 120100; -pub const MAC_OS_VERSION_12_2: u32 = 120200; -pub const MAC_OS_VERSION_12_3: u32 = 120300; -pub const MAC_OS_VERSION_12_4: u32 = 120400; -pub const MAC_OS_VERSION_12_5: u32 = 120500; -pub const MAC_OS_VERSION_12_6: u32 = 120600; -pub const MAC_OS_VERSION_12_7: u32 = 120700; -pub const MAC_OS_VERSION_13_0: u32 = 130000; -pub const MAC_OS_VERSION_13_1: u32 = 130100; -pub const MAC_OS_VERSION_13_2: u32 = 130200; -pub const MAC_OS_VERSION_13_3: u32 = 130300; -pub const MAC_OS_VERSION_13_4: u32 = 130400; -pub const MAC_OS_VERSION_13_5: u32 = 130500; -pub const MAC_OS_VERSION_13_6: u32 = 130600; -pub const MAC_OS_VERSION_14_0: u32 = 140000; -pub const MAC_OS_VERSION_14_1: u32 = 140100; -pub const MAC_OS_VERSION_14_2: u32 = 140200; -pub const MAC_OS_VERSION_14_3: u32 = 140300; -pub const MAC_OS_VERSION_14_4: u32 = 140400; -pub const MAC_OS_VERSION_14_5: u32 = 140500; -pub const __MAC_OS_X_VERSION_MAX_ALLOWED: u32 = 140500; -pub const __ENABLE_LEGACY_MAC_AVAILABILITY: u32 = 1; -pub const __PTHREAD_SIZE__: u32 = 8176; -pub const __PTHREAD_ATTR_SIZE__: u32 = 56; -pub const __PTHREAD_MUTEXATTR_SIZE__: u32 = 8; -pub const __PTHREAD_MUTEX_SIZE__: u32 = 56; -pub const __PTHREAD_CONDATTR_SIZE__: u32 = 8; -pub const __PTHREAD_COND_SIZE__: u32 = 40; -pub const __PTHREAD_ONCE_SIZE__: u32 = 8; -pub const __PTHREAD_RWLOCK_SIZE__: u32 = 192; -pub const __PTHREAD_RWLOCKATTR_SIZE__: u32 = 16; -pub const __DARWIN_WCHAR_MIN: i32 = -2147483648; -pub const _FORTIFY_SOURCE: u32 = 2; -pub const __WORDSIZE: u32 = 64; -pub const INT8_MAX: u32 = 127; -pub const INT16_MAX: u32 = 32767; -pub const INT32_MAX: u32 = 2147483647; -pub const INT64_MAX: u64 = 9223372036854775807; -pub const INT8_MIN: i32 = -128; -pub const INT16_MIN: i32 = -32768; -pub const INT32_MIN: i32 = -2147483648; -pub const INT64_MIN: i64 = -9223372036854775808; -pub const UINT8_MAX: u32 = 255; -pub const UINT16_MAX: u32 = 65535; -pub const UINT32_MAX: u32 = 4294967295; -pub const UINT64_MAX: i32 = -1; -pub const INT_LEAST8_MIN: i32 = -128; -pub const INT_LEAST16_MIN: i32 = -32768; -pub const INT_LEAST32_MIN: i32 = -2147483648; -pub const INT_LEAST64_MIN: i64 = -9223372036854775808; -pub const INT_LEAST8_MAX: u32 = 127; -pub const INT_LEAST16_MAX: u32 = 32767; -pub const INT_LEAST32_MAX: u32 = 2147483647; -pub const INT_LEAST64_MAX: u64 = 9223372036854775807; -pub const UINT_LEAST8_MAX: u32 = 255; -pub const UINT_LEAST16_MAX: u32 = 65535; -pub const UINT_LEAST32_MAX: u32 = 4294967295; -pub const UINT_LEAST64_MAX: i32 = -1; -pub const INT_FAST8_MIN: i32 = -128; -pub const INT_FAST16_MIN: i32 = -32768; -pub const INT_FAST32_MIN: i32 = -2147483648; -pub const INT_FAST64_MIN: i64 = -9223372036854775808; -pub const INT_FAST8_MAX: u32 = 127; -pub const INT_FAST16_MAX: u32 = 32767; -pub const INT_FAST32_MAX: u32 = 2147483647; -pub const INT_FAST64_MAX: u64 = 9223372036854775807; -pub const UINT_FAST8_MAX: u32 = 255; -pub const UINT_FAST16_MAX: u32 = 65535; -pub const UINT_FAST32_MAX: u32 = 4294967295; -pub const UINT_FAST64_MAX: i32 = -1; -pub const INTPTR_MAX: u64 = 9223372036854775807; -pub const INTPTR_MIN: i64 = -9223372036854775808; -pub const UINTPTR_MAX: i32 = -1; -pub const SIZE_MAX: i32 = -1; -pub const RSIZE_MAX: i32 = -1; -pub const WINT_MIN: i32 = -2147483648; -pub const WINT_MAX: u32 = 2147483647; -pub const SIG_ATOMIC_MIN: i32 = -2147483648; -pub const SIG_ATOMIC_MAX: u32 = 2147483647; -pub const HB_FEATURE_GLOBAL_START: u32 = 0; -pub const HB_UNICODE_MAX: u32 = 1114111; -pub const HB_FONT_NO_VAR_NAMED_INSTANCE: u32 = 4294967295; -pub const HB_BUFFER_REPLACEMENT_CODEPOINT_DEFAULT: u32 = 65533; -pub const HB_UNICODE_COMBINING_CLASS_CCC133: u32 = 133; -pub const HB_UNICODE_MAX_DECOMPOSITION_LEN: u32 = 19; -pub const HB_VERSION_MAJOR: u32 = 9; -pub const HB_VERSION_MINOR: u32 = 0; -pub const HB_VERSION_MICRO: u32 = 0; -pub const HB_VERSION_STRING: &[u8; 6] = b"9.0.0\0"; -pub type __int8_t = ::std::os::raw::c_schar; -pub type __uint8_t = ::std::os::raw::c_uchar; -pub type __int16_t = ::std::os::raw::c_short; -pub type __uint16_t = ::std::os::raw::c_ushort; -pub type __int32_t = ::std::os::raw::c_int; -pub type __uint32_t = ::std::os::raw::c_uint; -pub type __int64_t = ::std::os::raw::c_longlong; -pub type __uint64_t = ::std::os::raw::c_ulonglong; -pub type __darwin_intptr_t = ::std::os::raw::c_long; -pub type __darwin_natural_t = ::std::os::raw::c_uint; -pub type __darwin_ct_rune_t = ::std::os::raw::c_int; -#[repr(C)] -#[derive(Copy, Clone)] -pub union __mbstate_t { - pub __mbstate8: [::std::os::raw::c_char; 128usize], - pub _mbstateL: ::std::os::raw::c_longlong, -} -#[test] -fn bindgen_test_layout___mbstate_t() { - const UNINIT: ::std::mem::MaybeUninit<__mbstate_t> = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::<__mbstate_t>(), - 128usize, - concat!("Size of: ", stringify!(__mbstate_t)) - ); - assert_eq!( - ::std::mem::align_of::<__mbstate_t>(), - 8usize, - concat!("Alignment of ", stringify!(__mbstate_t)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__mbstate8) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__mbstate_t), - "::", - stringify!(__mbstate8) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._mbstateL) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__mbstate_t), - "::", - stringify!(_mbstateL) - ) - ); -} -pub type __darwin_mbstate_t = __mbstate_t; -pub type __darwin_ptrdiff_t = ::std::os::raw::c_long; -pub type __darwin_size_t = ::std::os::raw::c_ulong; -pub type __darwin_va_list = __builtin_va_list; -pub type __darwin_wchar_t = ::std::os::raw::c_int; -pub type __darwin_rune_t = __darwin_wchar_t; -pub type __darwin_wint_t = ::std::os::raw::c_int; -pub type __darwin_clock_t = ::std::os::raw::c_ulong; -pub type __darwin_socklen_t = __uint32_t; -pub type __darwin_ssize_t = ::std::os::raw::c_long; -pub type __darwin_time_t = ::std::os::raw::c_long; -pub type __darwin_blkcnt_t = __int64_t; -pub type __darwin_blksize_t = __int32_t; -pub type __darwin_dev_t = __int32_t; -pub type __darwin_fsblkcnt_t = ::std::os::raw::c_uint; -pub type __darwin_fsfilcnt_t = ::std::os::raw::c_uint; -pub type __darwin_gid_t = __uint32_t; -pub type __darwin_id_t = __uint32_t; -pub type __darwin_ino64_t = __uint64_t; -pub type __darwin_ino_t = __darwin_ino64_t; -pub type __darwin_mach_port_name_t = __darwin_natural_t; -pub type __darwin_mach_port_t = __darwin_mach_port_name_t; -pub type __darwin_mode_t = __uint16_t; -pub type __darwin_off_t = __int64_t; -pub type __darwin_pid_t = __int32_t; -pub type __darwin_sigset_t = __uint32_t; -pub type __darwin_suseconds_t = __int32_t; -pub type __darwin_uid_t = __uint32_t; -pub type __darwin_useconds_t = __uint32_t; -pub type __darwin_uuid_t = [::std::os::raw::c_uchar; 16usize]; -pub type __darwin_uuid_string_t = [::std::os::raw::c_char; 37usize]; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __darwin_pthread_handler_rec { - pub __routine: ::std::option::Option, - pub __arg: *mut ::std::os::raw::c_void, - pub __next: *mut __darwin_pthread_handler_rec, -} -#[test] -fn bindgen_test_layout___darwin_pthread_handler_rec() { - const UNINIT: ::std::mem::MaybeUninit<__darwin_pthread_handler_rec> = - ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::<__darwin_pthread_handler_rec>(), - 24usize, - concat!("Size of: ", stringify!(__darwin_pthread_handler_rec)) - ); - assert_eq!( - ::std::mem::align_of::<__darwin_pthread_handler_rec>(), - 8usize, - concat!("Alignment of ", stringify!(__darwin_pthread_handler_rec)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__routine) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__darwin_pthread_handler_rec), - "::", - stringify!(__routine) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__arg) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(__darwin_pthread_handler_rec), - "::", - stringify!(__arg) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__next) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(__darwin_pthread_handler_rec), - "::", - stringify!(__next) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct _opaque_pthread_attr_t { - pub __sig: ::std::os::raw::c_long, - pub __opaque: [::std::os::raw::c_char; 56usize], -} -#[test] -fn bindgen_test_layout__opaque_pthread_attr_t() { - const UNINIT: ::std::mem::MaybeUninit<_opaque_pthread_attr_t> = - ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::<_opaque_pthread_attr_t>(), - 64usize, - concat!("Size of: ", stringify!(_opaque_pthread_attr_t)) - ); - assert_eq!( - ::std::mem::align_of::<_opaque_pthread_attr_t>(), - 8usize, - concat!("Alignment of ", stringify!(_opaque_pthread_attr_t)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__sig) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(_opaque_pthread_attr_t), - "::", - stringify!(__sig) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__opaque) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(_opaque_pthread_attr_t), - "::", - stringify!(__opaque) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct _opaque_pthread_cond_t { - pub __sig: ::std::os::raw::c_long, - pub __opaque: [::std::os::raw::c_char; 40usize], -} -#[test] -fn bindgen_test_layout__opaque_pthread_cond_t() { - const UNINIT: ::std::mem::MaybeUninit<_opaque_pthread_cond_t> = - ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::<_opaque_pthread_cond_t>(), - 48usize, - concat!("Size of: ", stringify!(_opaque_pthread_cond_t)) - ); - assert_eq!( - ::std::mem::align_of::<_opaque_pthread_cond_t>(), - 8usize, - concat!("Alignment of ", stringify!(_opaque_pthread_cond_t)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__sig) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(_opaque_pthread_cond_t), - "::", - stringify!(__sig) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__opaque) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(_opaque_pthread_cond_t), - "::", - stringify!(__opaque) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct _opaque_pthread_condattr_t { - pub __sig: ::std::os::raw::c_long, - pub __opaque: [::std::os::raw::c_char; 8usize], -} -#[test] -fn bindgen_test_layout__opaque_pthread_condattr_t() { - const UNINIT: ::std::mem::MaybeUninit<_opaque_pthread_condattr_t> = - ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::<_opaque_pthread_condattr_t>(), - 16usize, - concat!("Size of: ", stringify!(_opaque_pthread_condattr_t)) - ); - assert_eq!( - ::std::mem::align_of::<_opaque_pthread_condattr_t>(), - 8usize, - concat!("Alignment of ", stringify!(_opaque_pthread_condattr_t)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__sig) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(_opaque_pthread_condattr_t), - "::", - stringify!(__sig) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__opaque) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(_opaque_pthread_condattr_t), - "::", - stringify!(__opaque) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct _opaque_pthread_mutex_t { - pub __sig: ::std::os::raw::c_long, - pub __opaque: [::std::os::raw::c_char; 56usize], -} -#[test] -fn bindgen_test_layout__opaque_pthread_mutex_t() { - const UNINIT: ::std::mem::MaybeUninit<_opaque_pthread_mutex_t> = - ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::<_opaque_pthread_mutex_t>(), - 64usize, - concat!("Size of: ", stringify!(_opaque_pthread_mutex_t)) - ); - assert_eq!( - ::std::mem::align_of::<_opaque_pthread_mutex_t>(), - 8usize, - concat!("Alignment of ", stringify!(_opaque_pthread_mutex_t)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__sig) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(_opaque_pthread_mutex_t), - "::", - stringify!(__sig) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__opaque) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(_opaque_pthread_mutex_t), - "::", - stringify!(__opaque) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct _opaque_pthread_mutexattr_t { - pub __sig: ::std::os::raw::c_long, - pub __opaque: [::std::os::raw::c_char; 8usize], -} -#[test] -fn bindgen_test_layout__opaque_pthread_mutexattr_t() { - const UNINIT: ::std::mem::MaybeUninit<_opaque_pthread_mutexattr_t> = - ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::<_opaque_pthread_mutexattr_t>(), - 16usize, - concat!("Size of: ", stringify!(_opaque_pthread_mutexattr_t)) - ); - assert_eq!( - ::std::mem::align_of::<_opaque_pthread_mutexattr_t>(), - 8usize, - concat!("Alignment of ", stringify!(_opaque_pthread_mutexattr_t)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__sig) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(_opaque_pthread_mutexattr_t), - "::", - stringify!(__sig) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__opaque) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(_opaque_pthread_mutexattr_t), - "::", - stringify!(__opaque) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct _opaque_pthread_once_t { - pub __sig: ::std::os::raw::c_long, - pub __opaque: [::std::os::raw::c_char; 8usize], -} -#[test] -fn bindgen_test_layout__opaque_pthread_once_t() { - const UNINIT: ::std::mem::MaybeUninit<_opaque_pthread_once_t> = - ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::<_opaque_pthread_once_t>(), - 16usize, - concat!("Size of: ", stringify!(_opaque_pthread_once_t)) - ); - assert_eq!( - ::std::mem::align_of::<_opaque_pthread_once_t>(), - 8usize, - concat!("Alignment of ", stringify!(_opaque_pthread_once_t)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__sig) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(_opaque_pthread_once_t), - "::", - stringify!(__sig) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__opaque) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(_opaque_pthread_once_t), - "::", - stringify!(__opaque) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct _opaque_pthread_rwlock_t { - pub __sig: ::std::os::raw::c_long, - pub __opaque: [::std::os::raw::c_char; 192usize], -} -#[test] -fn bindgen_test_layout__opaque_pthread_rwlock_t() { - const UNINIT: ::std::mem::MaybeUninit<_opaque_pthread_rwlock_t> = - ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::<_opaque_pthread_rwlock_t>(), - 200usize, - concat!("Size of: ", stringify!(_opaque_pthread_rwlock_t)) - ); - assert_eq!( - ::std::mem::align_of::<_opaque_pthread_rwlock_t>(), - 8usize, - concat!("Alignment of ", stringify!(_opaque_pthread_rwlock_t)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__sig) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(_opaque_pthread_rwlock_t), - "::", - stringify!(__sig) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__opaque) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(_opaque_pthread_rwlock_t), - "::", - stringify!(__opaque) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct _opaque_pthread_rwlockattr_t { - pub __sig: ::std::os::raw::c_long, - pub __opaque: [::std::os::raw::c_char; 16usize], -} -#[test] -fn bindgen_test_layout__opaque_pthread_rwlockattr_t() { - const UNINIT: ::std::mem::MaybeUninit<_opaque_pthread_rwlockattr_t> = - ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::<_opaque_pthread_rwlockattr_t>(), - 24usize, - concat!("Size of: ", stringify!(_opaque_pthread_rwlockattr_t)) - ); - assert_eq!( - ::std::mem::align_of::<_opaque_pthread_rwlockattr_t>(), - 8usize, - concat!("Alignment of ", stringify!(_opaque_pthread_rwlockattr_t)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__sig) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(_opaque_pthread_rwlockattr_t), - "::", - stringify!(__sig) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__opaque) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(_opaque_pthread_rwlockattr_t), - "::", - stringify!(__opaque) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct _opaque_pthread_t { - pub __sig: ::std::os::raw::c_long, - pub __cleanup_stack: *mut __darwin_pthread_handler_rec, - pub __opaque: [::std::os::raw::c_char; 8176usize], -} -#[test] -fn bindgen_test_layout__opaque_pthread_t() { - const UNINIT: ::std::mem::MaybeUninit<_opaque_pthread_t> = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::<_opaque_pthread_t>(), - 8192usize, - concat!("Size of: ", stringify!(_opaque_pthread_t)) - ); - assert_eq!( - ::std::mem::align_of::<_opaque_pthread_t>(), - 8usize, - concat!("Alignment of ", stringify!(_opaque_pthread_t)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__sig) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(_opaque_pthread_t), - "::", - stringify!(__sig) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__cleanup_stack) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(_opaque_pthread_t), - "::", - stringify!(__cleanup_stack) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__opaque) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(_opaque_pthread_t), - "::", - stringify!(__opaque) - ) - ); -} -pub type __darwin_pthread_attr_t = _opaque_pthread_attr_t; -pub type __darwin_pthread_cond_t = _opaque_pthread_cond_t; -pub type __darwin_pthread_condattr_t = _opaque_pthread_condattr_t; -pub type __darwin_pthread_key_t = ::std::os::raw::c_ulong; -pub type __darwin_pthread_mutex_t = _opaque_pthread_mutex_t; -pub type __darwin_pthread_mutexattr_t = _opaque_pthread_mutexattr_t; -pub type __darwin_pthread_once_t = _opaque_pthread_once_t; -pub type __darwin_pthread_rwlock_t = _opaque_pthread_rwlock_t; -pub type __darwin_pthread_rwlockattr_t = _opaque_pthread_rwlockattr_t; -pub type __darwin_pthread_t = *mut _opaque_pthread_t; -pub type __darwin_nl_item = ::std::os::raw::c_int; -pub type __darwin_wctrans_t = ::std::os::raw::c_int; -pub type __darwin_wctype_t = __uint32_t; -pub type wchar_t = __darwin_wchar_t; -pub type int_least8_t = i8; -pub type int_least16_t = i16; -pub type int_least32_t = i32; -pub type int_least64_t = i64; -pub type uint_least8_t = u8; -pub type uint_least16_t = u16; -pub type uint_least32_t = u32; -pub type uint_least64_t = u64; -pub type int_fast8_t = i8; -pub type int_fast16_t = i16; -pub type int_fast32_t = i32; -pub type int_fast64_t = i64; -pub type uint_fast8_t = u8; -pub type uint_fast16_t = u16; -pub type uint_fast32_t = u32; -pub type uint_fast64_t = u64; -pub type u_int8_t = ::std::os::raw::c_uchar; -pub type u_int16_t = ::std::os::raw::c_ushort; -pub type u_int32_t = ::std::os::raw::c_uint; -pub type u_int64_t = ::std::os::raw::c_ulonglong; -pub type register_t = i64; -pub type user_addr_t = u_int64_t; -pub type user_size_t = u_int64_t; -pub type user_ssize_t = i64; -pub type user_long_t = i64; -pub type user_ulong_t = u_int64_t; -pub type user_time_t = i64; -pub type user_off_t = i64; -pub type syscall_arg_t = u_int64_t; -pub type intmax_t = ::std::os::raw::c_long; -pub type uintmax_t = ::std::os::raw::c_ulong; -extern "C" { - pub fn imaxabs(j: intmax_t) -> intmax_t; -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct imaxdiv_t { - pub quot: intmax_t, - pub rem: intmax_t, -} -#[test] -fn bindgen_test_layout_imaxdiv_t() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(imaxdiv_t)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(imaxdiv_t)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).quot) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(imaxdiv_t), - "::", - stringify!(quot) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rem) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(imaxdiv_t), - "::", - stringify!(rem) - ) - ); -} -extern "C" { - pub fn imaxdiv(__numer: intmax_t, __denom: intmax_t) -> imaxdiv_t; -} -extern "C" { - pub fn strtoimax( - __nptr: *const ::std::os::raw::c_char, - __endptr: *mut *mut ::std::os::raw::c_char, - __base: ::std::os::raw::c_int, - ) -> intmax_t; -} -extern "C" { - pub fn strtoumax( - __nptr: *const ::std::os::raw::c_char, - __endptr: *mut *mut ::std::os::raw::c_char, - __base: ::std::os::raw::c_int, - ) -> uintmax_t; -} -extern "C" { - pub fn wcstoimax( - __nptr: *const wchar_t, - __endptr: *mut *mut wchar_t, - __base: ::std::os::raw::c_int, - ) -> intmax_t; -} -extern "C" { - pub fn wcstoumax( - __nptr: *const wchar_t, - __endptr: *mut *mut wchar_t, - __base: ::std::os::raw::c_int, - ) -> uintmax_t; -} #[doc = " hb_bool_t:\n\n Data type for booleans.\n"] pub type hb_bool_t = ::std::os::raw::c_int; #[doc = " hb_codepoint_t:\n\n Data type for holding Unicode codepoints. Also\n used to hold glyph IDs.\n"] @@ -1256,81 +18,17 @@ pub union _hb_var_int_t { pub u8_: [u8; 4usize], pub i8_: [i8; 4usize], } -#[test] -fn bindgen_test_layout__hb_var_int_t() { - const UNINIT: ::std::mem::MaybeUninit<_hb_var_int_t> = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::<_hb_var_int_t>(), - 4usize, - concat!("Size of: ", stringify!(_hb_var_int_t)) - ); - assert_eq!( - ::std::mem::align_of::<_hb_var_int_t>(), - 4usize, - concat!("Alignment of ", stringify!(_hb_var_int_t)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).u32_) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(_hb_var_int_t), - "::", - stringify!(u32_) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).i32_) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(_hb_var_int_t), - "::", - stringify!(i32_) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).u16_) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(_hb_var_int_t), - "::", - stringify!(u16_) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).i16_) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(_hb_var_int_t), - "::", - stringify!(i16_) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).u8_) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(_hb_var_int_t), - "::", - stringify!(u8_) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).i8_) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(_hb_var_int_t), - "::", - stringify!(i8_) - ) - ); -} +#[allow(clippy::unnecessary_operation, clippy::identity_op)] +const _: () = { + ["Size of _hb_var_int_t"][::std::mem::size_of::<_hb_var_int_t>() - 4usize]; + ["Alignment of _hb_var_int_t"][::std::mem::align_of::<_hb_var_int_t>() - 4usize]; + ["Offset of field: _hb_var_int_t::u32_"][::std::mem::offset_of!(_hb_var_int_t, u32_) - 0usize]; + ["Offset of field: _hb_var_int_t::i32_"][::std::mem::offset_of!(_hb_var_int_t, i32_) - 0usize]; + ["Offset of field: _hb_var_int_t::u16_"][::std::mem::offset_of!(_hb_var_int_t, u16_) - 0usize]; + ["Offset of field: _hb_var_int_t::i16_"][::std::mem::offset_of!(_hb_var_int_t, i16_) - 0usize]; + ["Offset of field: _hb_var_int_t::u8_"][::std::mem::offset_of!(_hb_var_int_t, u8_) - 0usize]; + ["Offset of field: _hb_var_int_t::i8_"][::std::mem::offset_of!(_hb_var_int_t, i8_) - 0usize]; +}; pub type hb_var_int_t = _hb_var_int_t; #[repr(C)] #[derive(Copy, Clone)] @@ -1343,91 +41,18 @@ pub union _hb_var_num_t { pub u8_: [u8; 4usize], pub i8_: [i8; 4usize], } -#[test] -fn bindgen_test_layout__hb_var_num_t() { - const UNINIT: ::std::mem::MaybeUninit<_hb_var_num_t> = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::<_hb_var_num_t>(), - 4usize, - concat!("Size of: ", stringify!(_hb_var_num_t)) - ); - assert_eq!( - ::std::mem::align_of::<_hb_var_num_t>(), - 4usize, - concat!("Alignment of ", stringify!(_hb_var_num_t)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).f) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(_hb_var_num_t), - "::", - stringify!(f) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).u32_) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(_hb_var_num_t), - "::", - stringify!(u32_) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).i32_) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(_hb_var_num_t), - "::", - stringify!(i32_) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).u16_) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(_hb_var_num_t), - "::", - stringify!(u16_) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).i16_) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(_hb_var_num_t), - "::", - stringify!(i16_) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).u8_) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(_hb_var_num_t), - "::", - stringify!(u8_) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).i8_) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(_hb_var_num_t), - "::", - stringify!(i8_) - ) - ); -} +#[allow(clippy::unnecessary_operation, clippy::identity_op)] +const _: () = { + ["Size of _hb_var_num_t"][::std::mem::size_of::<_hb_var_num_t>() - 4usize]; + ["Alignment of _hb_var_num_t"][::std::mem::align_of::<_hb_var_num_t>() - 4usize]; + ["Offset of field: _hb_var_num_t::f"][::std::mem::offset_of!(_hb_var_num_t, f) - 0usize]; + ["Offset of field: _hb_var_num_t::u32_"][::std::mem::offset_of!(_hb_var_num_t, u32_) - 0usize]; + ["Offset of field: _hb_var_num_t::i32_"][::std::mem::offset_of!(_hb_var_num_t, i32_) - 0usize]; + ["Offset of field: _hb_var_num_t::u16_"][::std::mem::offset_of!(_hb_var_num_t, u16_) - 0usize]; + ["Offset of field: _hb_var_num_t::i16_"][::std::mem::offset_of!(_hb_var_num_t, i16_) - 0usize]; + ["Offset of field: _hb_var_num_t::u8_"][::std::mem::offset_of!(_hb_var_num_t, u8_) - 0usize]; + ["Offset of field: _hb_var_num_t::i8_"][::std::mem::offset_of!(_hb_var_num_t, i8_) - 0usize]; +}; pub type hb_var_num_t = _hb_var_num_t; #[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"] pub type hb_tag_t = u32; @@ -1440,11 +65,11 @@ extern "C" { extern "C" { pub fn hb_tag_to_string(tag: hb_tag_t, buf: *mut ::std::os::raw::c_char); } -pub const hb_direction_t_HB_DIRECTION_INVALID: hb_direction_t = 0; -pub const hb_direction_t_HB_DIRECTION_LTR: hb_direction_t = 4; -pub const hb_direction_t_HB_DIRECTION_RTL: hb_direction_t = 5; -pub const hb_direction_t_HB_DIRECTION_TTB: hb_direction_t = 6; -pub const hb_direction_t_HB_DIRECTION_BTT: hb_direction_t = 7; +pub const HB_DIRECTION_INVALID: hb_direction_t = 0; +pub const HB_DIRECTION_LTR: hb_direction_t = 4; +pub const HB_DIRECTION_RTL: hb_direction_t = 5; +pub const HB_DIRECTION_TTB: hb_direction_t = 6; +pub const HB_DIRECTION_BTT: hb_direction_t = 7; #[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"] pub type hb_direction_t = ::std::os::raw::c_uint; extern "C" { @@ -1478,175 +103,182 @@ extern "C" { extern "C" { pub fn hb_language_matches(language: hb_language_t, specific: hb_language_t) -> hb_bool_t; } -pub const hb_script_t_HB_SCRIPT_COMMON: hb_script_t = 1517910393; -pub const hb_script_t_HB_SCRIPT_INHERITED: hb_script_t = 1516858984; -pub const hb_script_t_HB_SCRIPT_UNKNOWN: hb_script_t = 1517976186; -pub const hb_script_t_HB_SCRIPT_ARABIC: hb_script_t = 1098015074; -pub const hb_script_t_HB_SCRIPT_ARMENIAN: hb_script_t = 1098018158; -pub const hb_script_t_HB_SCRIPT_BENGALI: hb_script_t = 1113943655; -pub const hb_script_t_HB_SCRIPT_CYRILLIC: hb_script_t = 1132032620; -pub const hb_script_t_HB_SCRIPT_DEVANAGARI: hb_script_t = 1147500129; -pub const hb_script_t_HB_SCRIPT_GEORGIAN: hb_script_t = 1197830002; -pub const hb_script_t_HB_SCRIPT_GREEK: hb_script_t = 1198679403; -pub const hb_script_t_HB_SCRIPT_GUJARATI: hb_script_t = 1198877298; -pub const hb_script_t_HB_SCRIPT_GURMUKHI: hb_script_t = 1198879349; -pub const hb_script_t_HB_SCRIPT_HANGUL: hb_script_t = 1214344807; -pub const hb_script_t_HB_SCRIPT_HAN: hb_script_t = 1214344809; -pub const hb_script_t_HB_SCRIPT_HEBREW: hb_script_t = 1214603890; -pub const hb_script_t_HB_SCRIPT_HIRAGANA: hb_script_t = 1214870113; -pub const hb_script_t_HB_SCRIPT_KANNADA: hb_script_t = 1265525857; -pub const hb_script_t_HB_SCRIPT_KATAKANA: hb_script_t = 1264676449; -pub const hb_script_t_HB_SCRIPT_LAO: hb_script_t = 1281453935; -pub const hb_script_t_HB_SCRIPT_LATIN: hb_script_t = 1281455214; -pub const hb_script_t_HB_SCRIPT_MALAYALAM: hb_script_t = 1298954605; -pub const hb_script_t_HB_SCRIPT_ORIYA: hb_script_t = 1332902241; -pub const hb_script_t_HB_SCRIPT_TAMIL: hb_script_t = 1415671148; -pub const hb_script_t_HB_SCRIPT_TELUGU: hb_script_t = 1415933045; -pub const hb_script_t_HB_SCRIPT_THAI: hb_script_t = 1416126825; -pub const hb_script_t_HB_SCRIPT_TIBETAN: hb_script_t = 1416192628; -pub const hb_script_t_HB_SCRIPT_BOPOMOFO: hb_script_t = 1114599535; -pub const hb_script_t_HB_SCRIPT_BRAILLE: hb_script_t = 1114792297; -pub const hb_script_t_HB_SCRIPT_CANADIAN_SYLLABICS: hb_script_t = 1130458739; -pub const hb_script_t_HB_SCRIPT_CHEROKEE: hb_script_t = 1130915186; -pub const hb_script_t_HB_SCRIPT_ETHIOPIC: hb_script_t = 1165256809; -pub const hb_script_t_HB_SCRIPT_KHMER: hb_script_t = 1265134962; -pub const hb_script_t_HB_SCRIPT_MONGOLIAN: hb_script_t = 1299148391; -pub const hb_script_t_HB_SCRIPT_MYANMAR: hb_script_t = 1299803506; -pub const hb_script_t_HB_SCRIPT_OGHAM: hb_script_t = 1332175213; -pub const hb_script_t_HB_SCRIPT_RUNIC: hb_script_t = 1383427698; -pub const hb_script_t_HB_SCRIPT_SINHALA: hb_script_t = 1399418472; -pub const hb_script_t_HB_SCRIPT_SYRIAC: hb_script_t = 1400468067; -pub const hb_script_t_HB_SCRIPT_THAANA: hb_script_t = 1416126817; -pub const hb_script_t_HB_SCRIPT_YI: hb_script_t = 1500080489; -pub const hb_script_t_HB_SCRIPT_DESERET: hb_script_t = 1148416628; -pub const hb_script_t_HB_SCRIPT_GOTHIC: hb_script_t = 1198486632; -pub const hb_script_t_HB_SCRIPT_OLD_ITALIC: hb_script_t = 1232363884; -pub const hb_script_t_HB_SCRIPT_BUHID: hb_script_t = 1114990692; -pub const hb_script_t_HB_SCRIPT_HANUNOO: hb_script_t = 1214344815; -pub const hb_script_t_HB_SCRIPT_TAGALOG: hb_script_t = 1416064103; -pub const hb_script_t_HB_SCRIPT_TAGBANWA: hb_script_t = 1415669602; -pub const hb_script_t_HB_SCRIPT_CYPRIOT: hb_script_t = 1131442804; -pub const hb_script_t_HB_SCRIPT_LIMBU: hb_script_t = 1281977698; -pub const hb_script_t_HB_SCRIPT_LINEAR_B: hb_script_t = 1281977954; -pub const hb_script_t_HB_SCRIPT_OSMANYA: hb_script_t = 1332964705; -pub const hb_script_t_HB_SCRIPT_SHAVIAN: hb_script_t = 1399349623; -pub const hb_script_t_HB_SCRIPT_TAI_LE: hb_script_t = 1415670885; -pub const hb_script_t_HB_SCRIPT_UGARITIC: hb_script_t = 1432838514; -pub const hb_script_t_HB_SCRIPT_BUGINESE: hb_script_t = 1114990441; -pub const hb_script_t_HB_SCRIPT_COPTIC: hb_script_t = 1131376756; -pub const hb_script_t_HB_SCRIPT_GLAGOLITIC: hb_script_t = 1198285159; -pub const hb_script_t_HB_SCRIPT_KHAROSHTHI: hb_script_t = 1265131890; -pub const hb_script_t_HB_SCRIPT_NEW_TAI_LUE: hb_script_t = 1415670901; -pub const hb_script_t_HB_SCRIPT_OLD_PERSIAN: hb_script_t = 1483761007; -pub const hb_script_t_HB_SCRIPT_SYLOTI_NAGRI: hb_script_t = 1400466543; -pub const hb_script_t_HB_SCRIPT_TIFINAGH: hb_script_t = 1415999079; -pub const hb_script_t_HB_SCRIPT_BALINESE: hb_script_t = 1113681001; -pub const hb_script_t_HB_SCRIPT_CUNEIFORM: hb_script_t = 1483961720; -pub const hb_script_t_HB_SCRIPT_NKO: hb_script_t = 1315663727; -pub const hb_script_t_HB_SCRIPT_PHAGS_PA: hb_script_t = 1349017959; -pub const hb_script_t_HB_SCRIPT_PHOENICIAN: hb_script_t = 1349021304; -pub const hb_script_t_HB_SCRIPT_CARIAN: hb_script_t = 1130459753; -pub const hb_script_t_HB_SCRIPT_CHAM: hb_script_t = 1130914157; -pub const hb_script_t_HB_SCRIPT_KAYAH_LI: hb_script_t = 1264675945; -pub const hb_script_t_HB_SCRIPT_LEPCHA: hb_script_t = 1281716323; -pub const hb_script_t_HB_SCRIPT_LYCIAN: hb_script_t = 1283023721; -pub const hb_script_t_HB_SCRIPT_LYDIAN: hb_script_t = 1283023977; -pub const hb_script_t_HB_SCRIPT_OL_CHIKI: hb_script_t = 1332503403; -pub const hb_script_t_HB_SCRIPT_REJANG: hb_script_t = 1382706791; -pub const hb_script_t_HB_SCRIPT_SAURASHTRA: hb_script_t = 1398895986; -pub const hb_script_t_HB_SCRIPT_SUNDANESE: hb_script_t = 1400204900; -pub const hb_script_t_HB_SCRIPT_VAI: hb_script_t = 1449224553; -pub const hb_script_t_HB_SCRIPT_AVESTAN: hb_script_t = 1098281844; -pub const hb_script_t_HB_SCRIPT_BAMUM: hb_script_t = 1113681269; -pub const hb_script_t_HB_SCRIPT_EGYPTIAN_HIEROGLYPHS: hb_script_t = 1164409200; -pub const hb_script_t_HB_SCRIPT_IMPERIAL_ARAMAIC: hb_script_t = 1098018153; -pub const hb_script_t_HB_SCRIPT_INSCRIPTIONAL_PAHLAVI: hb_script_t = 1349020777; -pub const hb_script_t_HB_SCRIPT_INSCRIPTIONAL_PARTHIAN: hb_script_t = 1349678185; -pub const hb_script_t_HB_SCRIPT_JAVANESE: hb_script_t = 1247901281; -pub const hb_script_t_HB_SCRIPT_KAITHI: hb_script_t = 1265920105; -pub const hb_script_t_HB_SCRIPT_LISU: hb_script_t = 1281979253; -pub const hb_script_t_HB_SCRIPT_MEETEI_MAYEK: hb_script_t = 1299473769; -pub const hb_script_t_HB_SCRIPT_OLD_SOUTH_ARABIAN: hb_script_t = 1398895202; -pub const hb_script_t_HB_SCRIPT_OLD_TURKIC: hb_script_t = 1332898664; -pub const hb_script_t_HB_SCRIPT_SAMARITAN: hb_script_t = 1398893938; -pub const hb_script_t_HB_SCRIPT_TAI_THAM: hb_script_t = 1281453665; -pub const hb_script_t_HB_SCRIPT_TAI_VIET: hb_script_t = 1415673460; -pub const hb_script_t_HB_SCRIPT_BATAK: hb_script_t = 1113683051; -pub const hb_script_t_HB_SCRIPT_BRAHMI: hb_script_t = 1114792296; -pub const hb_script_t_HB_SCRIPT_MANDAIC: hb_script_t = 1298230884; -pub const hb_script_t_HB_SCRIPT_CHAKMA: hb_script_t = 1130457965; -pub const hb_script_t_HB_SCRIPT_MEROITIC_CURSIVE: hb_script_t = 1298494051; -pub const hb_script_t_HB_SCRIPT_MEROITIC_HIEROGLYPHS: hb_script_t = 1298494063; -pub const hb_script_t_HB_SCRIPT_MIAO: hb_script_t = 1349284452; -pub const hb_script_t_HB_SCRIPT_SHARADA: hb_script_t = 1399353956; -pub const hb_script_t_HB_SCRIPT_SORA_SOMPENG: hb_script_t = 1399812705; -pub const hb_script_t_HB_SCRIPT_TAKRI: hb_script_t = 1415670642; -pub const hb_script_t_HB_SCRIPT_BASSA_VAH: hb_script_t = 1113682803; -pub const hb_script_t_HB_SCRIPT_CAUCASIAN_ALBANIAN: hb_script_t = 1097295970; -pub const hb_script_t_HB_SCRIPT_DUPLOYAN: hb_script_t = 1148547180; -pub const hb_script_t_HB_SCRIPT_ELBASAN: hb_script_t = 1164730977; -pub const hb_script_t_HB_SCRIPT_GRANTHA: hb_script_t = 1198678382; -pub const hb_script_t_HB_SCRIPT_KHOJKI: hb_script_t = 1265135466; -pub const hb_script_t_HB_SCRIPT_KHUDAWADI: hb_script_t = 1399418468; -pub const hb_script_t_HB_SCRIPT_LINEAR_A: hb_script_t = 1281977953; -pub const hb_script_t_HB_SCRIPT_MAHAJANI: hb_script_t = 1298229354; -pub const hb_script_t_HB_SCRIPT_MANICHAEAN: hb_script_t = 1298230889; -pub const hb_script_t_HB_SCRIPT_MENDE_KIKAKUI: hb_script_t = 1298493028; -pub const hb_script_t_HB_SCRIPT_MODI: hb_script_t = 1299145833; -pub const hb_script_t_HB_SCRIPT_MRO: hb_script_t = 1299345263; -pub const hb_script_t_HB_SCRIPT_NABATAEAN: hb_script_t = 1315070324; -pub const hb_script_t_HB_SCRIPT_OLD_NORTH_ARABIAN: hb_script_t = 1315009122; -pub const hb_script_t_HB_SCRIPT_OLD_PERMIC: hb_script_t = 1348825709; -pub const hb_script_t_HB_SCRIPT_PAHAWH_HMONG: hb_script_t = 1215131239; -pub const hb_script_t_HB_SCRIPT_PALMYRENE: hb_script_t = 1348562029; -pub const hb_script_t_HB_SCRIPT_PAU_CIN_HAU: hb_script_t = 1348564323; -pub const hb_script_t_HB_SCRIPT_PSALTER_PAHLAVI: hb_script_t = 1349020784; -pub const hb_script_t_HB_SCRIPT_SIDDHAM: hb_script_t = 1399415908; -pub const hb_script_t_HB_SCRIPT_TIRHUTA: hb_script_t = 1416196712; -pub const hb_script_t_HB_SCRIPT_WARANG_CITI: hb_script_t = 1466004065; -pub const hb_script_t_HB_SCRIPT_AHOM: hb_script_t = 1097363309; -pub const hb_script_t_HB_SCRIPT_ANATOLIAN_HIEROGLYPHS: hb_script_t = 1215067511; -pub const hb_script_t_HB_SCRIPT_HATRAN: hb_script_t = 1214346354; -pub const hb_script_t_HB_SCRIPT_MULTANI: hb_script_t = 1299541108; -pub const hb_script_t_HB_SCRIPT_OLD_HUNGARIAN: hb_script_t = 1215655527; -pub const hb_script_t_HB_SCRIPT_SIGNWRITING: hb_script_t = 1399287415; -pub const hb_script_t_HB_SCRIPT_ADLAM: hb_script_t = 1097100397; -pub const hb_script_t_HB_SCRIPT_BHAIKSUKI: hb_script_t = 1114139507; -pub const hb_script_t_HB_SCRIPT_MARCHEN: hb_script_t = 1298231907; -pub const hb_script_t_HB_SCRIPT_OSAGE: hb_script_t = 1332963173; -pub const hb_script_t_HB_SCRIPT_TANGUT: hb_script_t = 1415671399; -pub const hb_script_t_HB_SCRIPT_NEWA: hb_script_t = 1315272545; -pub const hb_script_t_HB_SCRIPT_MASARAM_GONDI: hb_script_t = 1198485101; -pub const hb_script_t_HB_SCRIPT_NUSHU: hb_script_t = 1316186229; -pub const hb_script_t_HB_SCRIPT_SOYOMBO: hb_script_t = 1399814511; -pub const hb_script_t_HB_SCRIPT_ZANABAZAR_SQUARE: hb_script_t = 1516334690; -pub const hb_script_t_HB_SCRIPT_DOGRA: hb_script_t = 1148151666; -pub const hb_script_t_HB_SCRIPT_GUNJALA_GONDI: hb_script_t = 1198485095; -pub const hb_script_t_HB_SCRIPT_HANIFI_ROHINGYA: hb_script_t = 1383032935; -pub const hb_script_t_HB_SCRIPT_MAKASAR: hb_script_t = 1298230113; -pub const hb_script_t_HB_SCRIPT_MEDEFAIDRIN: hb_script_t = 1298490470; -pub const hb_script_t_HB_SCRIPT_OLD_SOGDIAN: hb_script_t = 1399809903; -pub const hb_script_t_HB_SCRIPT_SOGDIAN: hb_script_t = 1399809892; -pub const hb_script_t_HB_SCRIPT_ELYMAIC: hb_script_t = 1164736877; -pub const hb_script_t_HB_SCRIPT_NANDINAGARI: hb_script_t = 1315008100; -pub const hb_script_t_HB_SCRIPT_NYIAKENG_PUACHUE_HMONG: hb_script_t = 1215131248; -pub const hb_script_t_HB_SCRIPT_WANCHO: hb_script_t = 1466132591; -pub const hb_script_t_HB_SCRIPT_CHORASMIAN: hb_script_t = 1130918515; -pub const hb_script_t_HB_SCRIPT_DIVES_AKURU: hb_script_t = 1147756907; -pub const hb_script_t_HB_SCRIPT_KHITAN_SMALL_SCRIPT: hb_script_t = 1265202291; -pub const hb_script_t_HB_SCRIPT_YEZIDI: hb_script_t = 1499822697; -pub const hb_script_t_HB_SCRIPT_CYPRO_MINOAN: hb_script_t = 1131441518; -pub const hb_script_t_HB_SCRIPT_OLD_UYGHUR: hb_script_t = 1333094258; -pub const hb_script_t_HB_SCRIPT_TANGSA: hb_script_t = 1416524641; -pub const hb_script_t_HB_SCRIPT_TOTO: hb_script_t = 1416590447; -pub const hb_script_t_HB_SCRIPT_VITHKUQI: hb_script_t = 1449751656; -pub const hb_script_t_HB_SCRIPT_MATH: hb_script_t = 1517122664; -pub const hb_script_t_HB_SCRIPT_KAWI: hb_script_t = 1264678761; -pub const hb_script_t_HB_SCRIPT_NAG_MUNDARI: hb_script_t = 1315006317; -pub const hb_script_t_HB_SCRIPT_INVALID: hb_script_t = 0; -pub const hb_script_t__HB_SCRIPT_MAX_VALUE: hb_script_t = 2147483647; -pub const hb_script_t__HB_SCRIPT_MAX_VALUE_SIGNED: hb_script_t = 2147483647; -#[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"] +pub const HB_SCRIPT_COMMON: hb_script_t = 1517910393; +pub const HB_SCRIPT_INHERITED: hb_script_t = 1516858984; +pub const HB_SCRIPT_UNKNOWN: hb_script_t = 1517976186; +pub const HB_SCRIPT_ARABIC: hb_script_t = 1098015074; +pub const HB_SCRIPT_ARMENIAN: hb_script_t = 1098018158; +pub const HB_SCRIPT_BENGALI: hb_script_t = 1113943655; +pub const HB_SCRIPT_CYRILLIC: hb_script_t = 1132032620; +pub const HB_SCRIPT_DEVANAGARI: hb_script_t = 1147500129; +pub const HB_SCRIPT_GEORGIAN: hb_script_t = 1197830002; +pub const HB_SCRIPT_GREEK: hb_script_t = 1198679403; +pub const HB_SCRIPT_GUJARATI: hb_script_t = 1198877298; +pub const HB_SCRIPT_GURMUKHI: hb_script_t = 1198879349; +pub const HB_SCRIPT_HANGUL: hb_script_t = 1214344807; +pub const HB_SCRIPT_HAN: hb_script_t = 1214344809; +pub const HB_SCRIPT_HEBREW: hb_script_t = 1214603890; +pub const HB_SCRIPT_HIRAGANA: hb_script_t = 1214870113; +pub const HB_SCRIPT_KANNADA: hb_script_t = 1265525857; +pub const HB_SCRIPT_KATAKANA: hb_script_t = 1264676449; +pub const HB_SCRIPT_LAO: hb_script_t = 1281453935; +pub const HB_SCRIPT_LATIN: hb_script_t = 1281455214; +pub const HB_SCRIPT_MALAYALAM: hb_script_t = 1298954605; +pub const HB_SCRIPT_ORIYA: hb_script_t = 1332902241; +pub const HB_SCRIPT_TAMIL: hb_script_t = 1415671148; +pub const HB_SCRIPT_TELUGU: hb_script_t = 1415933045; +pub const HB_SCRIPT_THAI: hb_script_t = 1416126825; +pub const HB_SCRIPT_TIBETAN: hb_script_t = 1416192628; +pub const HB_SCRIPT_BOPOMOFO: hb_script_t = 1114599535; +pub const HB_SCRIPT_BRAILLE: hb_script_t = 1114792297; +pub const HB_SCRIPT_CANADIAN_SYLLABICS: hb_script_t = 1130458739; +pub const HB_SCRIPT_CHEROKEE: hb_script_t = 1130915186; +pub const HB_SCRIPT_ETHIOPIC: hb_script_t = 1165256809; +pub const HB_SCRIPT_KHMER: hb_script_t = 1265134962; +pub const HB_SCRIPT_MONGOLIAN: hb_script_t = 1299148391; +pub const HB_SCRIPT_MYANMAR: hb_script_t = 1299803506; +pub const HB_SCRIPT_OGHAM: hb_script_t = 1332175213; +pub const HB_SCRIPT_RUNIC: hb_script_t = 1383427698; +pub const HB_SCRIPT_SINHALA: hb_script_t = 1399418472; +pub const HB_SCRIPT_SYRIAC: hb_script_t = 1400468067; +pub const HB_SCRIPT_THAANA: hb_script_t = 1416126817; +pub const HB_SCRIPT_YI: hb_script_t = 1500080489; +pub const HB_SCRIPT_DESERET: hb_script_t = 1148416628; +pub const HB_SCRIPT_GOTHIC: hb_script_t = 1198486632; +pub const HB_SCRIPT_OLD_ITALIC: hb_script_t = 1232363884; +pub const HB_SCRIPT_BUHID: hb_script_t = 1114990692; +pub const HB_SCRIPT_HANUNOO: hb_script_t = 1214344815; +pub const HB_SCRIPT_TAGALOG: hb_script_t = 1416064103; +pub const HB_SCRIPT_TAGBANWA: hb_script_t = 1415669602; +pub const HB_SCRIPT_CYPRIOT: hb_script_t = 1131442804; +pub const HB_SCRIPT_LIMBU: hb_script_t = 1281977698; +pub const HB_SCRIPT_LINEAR_B: hb_script_t = 1281977954; +pub const HB_SCRIPT_OSMANYA: hb_script_t = 1332964705; +pub const HB_SCRIPT_SHAVIAN: hb_script_t = 1399349623; +pub const HB_SCRIPT_TAI_LE: hb_script_t = 1415670885; +pub const HB_SCRIPT_UGARITIC: hb_script_t = 1432838514; +pub const HB_SCRIPT_BUGINESE: hb_script_t = 1114990441; +pub const HB_SCRIPT_COPTIC: hb_script_t = 1131376756; +pub const HB_SCRIPT_GLAGOLITIC: hb_script_t = 1198285159; +pub const HB_SCRIPT_KHAROSHTHI: hb_script_t = 1265131890; +pub const HB_SCRIPT_NEW_TAI_LUE: hb_script_t = 1415670901; +pub const HB_SCRIPT_OLD_PERSIAN: hb_script_t = 1483761007; +pub const HB_SCRIPT_SYLOTI_NAGRI: hb_script_t = 1400466543; +pub const HB_SCRIPT_TIFINAGH: hb_script_t = 1415999079; +pub const HB_SCRIPT_BALINESE: hb_script_t = 1113681001; +pub const HB_SCRIPT_CUNEIFORM: hb_script_t = 1483961720; +pub const HB_SCRIPT_NKO: hb_script_t = 1315663727; +pub const HB_SCRIPT_PHAGS_PA: hb_script_t = 1349017959; +pub const HB_SCRIPT_PHOENICIAN: hb_script_t = 1349021304; +pub const HB_SCRIPT_CARIAN: hb_script_t = 1130459753; +pub const HB_SCRIPT_CHAM: hb_script_t = 1130914157; +pub const HB_SCRIPT_KAYAH_LI: hb_script_t = 1264675945; +pub const HB_SCRIPT_LEPCHA: hb_script_t = 1281716323; +pub const HB_SCRIPT_LYCIAN: hb_script_t = 1283023721; +pub const HB_SCRIPT_LYDIAN: hb_script_t = 1283023977; +pub const HB_SCRIPT_OL_CHIKI: hb_script_t = 1332503403; +pub const HB_SCRIPT_REJANG: hb_script_t = 1382706791; +pub const HB_SCRIPT_SAURASHTRA: hb_script_t = 1398895986; +pub const HB_SCRIPT_SUNDANESE: hb_script_t = 1400204900; +pub const HB_SCRIPT_VAI: hb_script_t = 1449224553; +pub const HB_SCRIPT_AVESTAN: hb_script_t = 1098281844; +pub const HB_SCRIPT_BAMUM: hb_script_t = 1113681269; +pub const HB_SCRIPT_EGYPTIAN_HIEROGLYPHS: hb_script_t = 1164409200; +pub const HB_SCRIPT_IMPERIAL_ARAMAIC: hb_script_t = 1098018153; +pub const HB_SCRIPT_INSCRIPTIONAL_PAHLAVI: hb_script_t = 1349020777; +pub const HB_SCRIPT_INSCRIPTIONAL_PARTHIAN: hb_script_t = 1349678185; +pub const HB_SCRIPT_JAVANESE: hb_script_t = 1247901281; +pub const HB_SCRIPT_KAITHI: hb_script_t = 1265920105; +pub const HB_SCRIPT_LISU: hb_script_t = 1281979253; +pub const HB_SCRIPT_MEETEI_MAYEK: hb_script_t = 1299473769; +pub const HB_SCRIPT_OLD_SOUTH_ARABIAN: hb_script_t = 1398895202; +pub const HB_SCRIPT_OLD_TURKIC: hb_script_t = 1332898664; +pub const HB_SCRIPT_SAMARITAN: hb_script_t = 1398893938; +pub const HB_SCRIPT_TAI_THAM: hb_script_t = 1281453665; +pub const HB_SCRIPT_TAI_VIET: hb_script_t = 1415673460; +pub const HB_SCRIPT_BATAK: hb_script_t = 1113683051; +pub const HB_SCRIPT_BRAHMI: hb_script_t = 1114792296; +pub const HB_SCRIPT_MANDAIC: hb_script_t = 1298230884; +pub const HB_SCRIPT_CHAKMA: hb_script_t = 1130457965; +pub const HB_SCRIPT_MEROITIC_CURSIVE: hb_script_t = 1298494051; +pub const HB_SCRIPT_MEROITIC_HIEROGLYPHS: hb_script_t = 1298494063; +pub const HB_SCRIPT_MIAO: hb_script_t = 1349284452; +pub const HB_SCRIPT_SHARADA: hb_script_t = 1399353956; +pub const HB_SCRIPT_SORA_SOMPENG: hb_script_t = 1399812705; +pub const HB_SCRIPT_TAKRI: hb_script_t = 1415670642; +pub const HB_SCRIPT_BASSA_VAH: hb_script_t = 1113682803; +pub const HB_SCRIPT_CAUCASIAN_ALBANIAN: hb_script_t = 1097295970; +pub const HB_SCRIPT_DUPLOYAN: hb_script_t = 1148547180; +pub const HB_SCRIPT_ELBASAN: hb_script_t = 1164730977; +pub const HB_SCRIPT_GRANTHA: hb_script_t = 1198678382; +pub const HB_SCRIPT_KHOJKI: hb_script_t = 1265135466; +pub const HB_SCRIPT_KHUDAWADI: hb_script_t = 1399418468; +pub const HB_SCRIPT_LINEAR_A: hb_script_t = 1281977953; +pub const HB_SCRIPT_MAHAJANI: hb_script_t = 1298229354; +pub const HB_SCRIPT_MANICHAEAN: hb_script_t = 1298230889; +pub const HB_SCRIPT_MENDE_KIKAKUI: hb_script_t = 1298493028; +pub const HB_SCRIPT_MODI: hb_script_t = 1299145833; +pub const HB_SCRIPT_MRO: hb_script_t = 1299345263; +pub const HB_SCRIPT_NABATAEAN: hb_script_t = 1315070324; +pub const HB_SCRIPT_OLD_NORTH_ARABIAN: hb_script_t = 1315009122; +pub const HB_SCRIPT_OLD_PERMIC: hb_script_t = 1348825709; +pub const HB_SCRIPT_PAHAWH_HMONG: hb_script_t = 1215131239; +pub const HB_SCRIPT_PALMYRENE: hb_script_t = 1348562029; +pub const HB_SCRIPT_PAU_CIN_HAU: hb_script_t = 1348564323; +pub const HB_SCRIPT_PSALTER_PAHLAVI: hb_script_t = 1349020784; +pub const HB_SCRIPT_SIDDHAM: hb_script_t = 1399415908; +pub const HB_SCRIPT_TIRHUTA: hb_script_t = 1416196712; +pub const HB_SCRIPT_WARANG_CITI: hb_script_t = 1466004065; +pub const HB_SCRIPT_AHOM: hb_script_t = 1097363309; +pub const HB_SCRIPT_ANATOLIAN_HIEROGLYPHS: hb_script_t = 1215067511; +pub const HB_SCRIPT_HATRAN: hb_script_t = 1214346354; +pub const HB_SCRIPT_MULTANI: hb_script_t = 1299541108; +pub const HB_SCRIPT_OLD_HUNGARIAN: hb_script_t = 1215655527; +pub const HB_SCRIPT_SIGNWRITING: hb_script_t = 1399287415; +pub const HB_SCRIPT_ADLAM: hb_script_t = 1097100397; +pub const HB_SCRIPT_BHAIKSUKI: hb_script_t = 1114139507; +pub const HB_SCRIPT_MARCHEN: hb_script_t = 1298231907; +pub const HB_SCRIPT_OSAGE: hb_script_t = 1332963173; +pub const HB_SCRIPT_TANGUT: hb_script_t = 1415671399; +pub const HB_SCRIPT_NEWA: hb_script_t = 1315272545; +pub const HB_SCRIPT_MASARAM_GONDI: hb_script_t = 1198485101; +pub const HB_SCRIPT_NUSHU: hb_script_t = 1316186229; +pub const HB_SCRIPT_SOYOMBO: hb_script_t = 1399814511; +pub const HB_SCRIPT_ZANABAZAR_SQUARE: hb_script_t = 1516334690; +pub const HB_SCRIPT_DOGRA: hb_script_t = 1148151666; +pub const HB_SCRIPT_GUNJALA_GONDI: hb_script_t = 1198485095; +pub const HB_SCRIPT_HANIFI_ROHINGYA: hb_script_t = 1383032935; +pub const HB_SCRIPT_MAKASAR: hb_script_t = 1298230113; +pub const HB_SCRIPT_MEDEFAIDRIN: hb_script_t = 1298490470; +pub const HB_SCRIPT_OLD_SOGDIAN: hb_script_t = 1399809903; +pub const HB_SCRIPT_SOGDIAN: hb_script_t = 1399809892; +pub const HB_SCRIPT_ELYMAIC: hb_script_t = 1164736877; +pub const HB_SCRIPT_NANDINAGARI: hb_script_t = 1315008100; +pub const HB_SCRIPT_NYIAKENG_PUACHUE_HMONG: hb_script_t = 1215131248; +pub const HB_SCRIPT_WANCHO: hb_script_t = 1466132591; +pub const HB_SCRIPT_CHORASMIAN: hb_script_t = 1130918515; +pub const HB_SCRIPT_DIVES_AKURU: hb_script_t = 1147756907; +pub const HB_SCRIPT_KHITAN_SMALL_SCRIPT: hb_script_t = 1265202291; +pub const HB_SCRIPT_YEZIDI: hb_script_t = 1499822697; +pub const HB_SCRIPT_CYPRO_MINOAN: hb_script_t = 1131441518; +pub const HB_SCRIPT_OLD_UYGHUR: hb_script_t = 1333094258; +pub const HB_SCRIPT_TANGSA: hb_script_t = 1416524641; +pub const HB_SCRIPT_TOTO: hb_script_t = 1416590447; +pub const HB_SCRIPT_VITHKUQI: hb_script_t = 1449751656; +pub const HB_SCRIPT_MATH: hb_script_t = 1517122664; +pub const HB_SCRIPT_KAWI: hb_script_t = 1264678761; +pub const HB_SCRIPT_NAG_MUNDARI: hb_script_t = 1315006317; +pub const HB_SCRIPT_GARAY: hb_script_t = 1197568609; +pub const HB_SCRIPT_GURUNG_KHEMA: hb_script_t = 1198877544; +pub const HB_SCRIPT_KIRAT_RAI: hb_script_t = 1265787241; +pub const HB_SCRIPT_OL_ONAL: hb_script_t = 1332633967; +pub const HB_SCRIPT_SUNUWAR: hb_script_t = 1400204917; +pub const HB_SCRIPT_TODHRI: hb_script_t = 1416586354; +pub const HB_SCRIPT_TULU_TIGALARI: hb_script_t = 1416983655; +pub const HB_SCRIPT_INVALID: hb_script_t = 0; +pub const _HB_SCRIPT_MAX_VALUE: hb_script_t = 2147483647; +pub const _HB_SCRIPT_MAX_VALUE_SIGNED: hb_script_t = 2147483647; +#[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_GARAY: `Gara`, Since: 10.0.0\n @HB_SCRIPT_GURUNG_KHEMA: `Gukh`, Since: 10.0.0\n @HB_SCRIPT_KIRAT_RAI: `Krai`, Since: 10.0.0\n @HB_SCRIPT_OL_ONAL: `Onao`, Since: 10.0.0\n @HB_SCRIPT_SUNUWAR: `Sunu`, Since: 10.0.0\n @HB_SCRIPT_TODHRI: `Todr`, Since: 10.0.0\n @HB_SCRIPT_TULU_TIGALARI: `Tutg`, Since: 10.0.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"] pub type hb_script_t = ::std::os::raw::c_uint; extern "C" { pub fn hb_script_from_iso15924_tag(tag: hb_tag_t) -> hb_script_t; @@ -1669,31 +301,13 @@ extern "C" { pub struct hb_user_data_key_t { pub unused: ::std::os::raw::c_char, } -#[test] -fn bindgen_test_layout_hb_user_data_key_t() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 1usize, - concat!("Size of: ", stringify!(hb_user_data_key_t)) - ); - assert_eq!( - ::std::mem::align_of::(), - 1usize, - concat!("Alignment of ", stringify!(hb_user_data_key_t)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).unused) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(hb_user_data_key_t), - "::", - stringify!(unused) - ) - ); -} +#[allow(clippy::unnecessary_operation, clippy::identity_op)] +const _: () = { + ["Size of hb_user_data_key_t"][::std::mem::size_of::() - 1usize]; + ["Alignment of hb_user_data_key_t"][::std::mem::align_of::() - 1usize]; + ["Offset of field: hb_user_data_key_t::unused"] + [::std::mem::offset_of!(hb_user_data_key_t, unused) - 0usize]; +}; #[doc = " hb_destroy_func_t:\n @user_data: the data to be destroyed\n\n A virtual method for destroy user-data callbacks.\n"] pub type hb_destroy_func_t = ::std::option::Option; @@ -1706,61 +320,15 @@ pub struct hb_feature_t { pub start: ::std::os::raw::c_uint, pub end: ::std::os::raw::c_uint, } -#[test] -fn bindgen_test_layout_hb_feature_t() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(hb_feature_t)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(hb_feature_t)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tag) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(hb_feature_t), - "::", - stringify!(tag) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).value) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(hb_feature_t), - "::", - stringify!(value) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).start) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(hb_feature_t), - "::", - stringify!(start) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).end) as usize - ptr as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(hb_feature_t), - "::", - stringify!(end) - ) - ); -} +#[allow(clippy::unnecessary_operation, clippy::identity_op)] +const _: () = { + ["Size of hb_feature_t"][::std::mem::size_of::() - 16usize]; + ["Alignment of hb_feature_t"][::std::mem::align_of::() - 4usize]; + ["Offset of field: hb_feature_t::tag"][::std::mem::offset_of!(hb_feature_t, tag) - 0usize]; + ["Offset of field: hb_feature_t::value"][::std::mem::offset_of!(hb_feature_t, value) - 4usize]; + ["Offset of field: hb_feature_t::start"][::std::mem::offset_of!(hb_feature_t, start) - 8usize]; + ["Offset of field: hb_feature_t::end"][::std::mem::offset_of!(hb_feature_t, end) - 12usize]; +}; extern "C" { pub fn hb_feature_from_string( str_: *const ::std::os::raw::c_char, @@ -1782,41 +350,14 @@ pub struct hb_variation_t { pub tag: hb_tag_t, pub value: f32, } -#[test] -fn bindgen_test_layout_hb_variation_t() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(hb_variation_t)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(hb_variation_t)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tag) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(hb_variation_t), - "::", - stringify!(tag) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).value) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(hb_variation_t), - "::", - stringify!(value) - ) - ); -} +#[allow(clippy::unnecessary_operation, clippy::identity_op)] +const _: () = { + ["Size of hb_variation_t"][::std::mem::size_of::() - 8usize]; + ["Alignment of hb_variation_t"][::std::mem::align_of::() - 4usize]; + ["Offset of field: hb_variation_t::tag"][::std::mem::offset_of!(hb_variation_t, tag) - 0usize]; + ["Offset of field: hb_variation_t::value"] + [::std::mem::offset_of!(hb_variation_t, value) - 4usize]; +}; extern "C" { pub fn hb_variation_from_string( str_: *const ::std::os::raw::c_char, @@ -1854,70 +395,28 @@ pub struct hb_glyph_extents_t { pub width: hb_position_t, pub height: hb_position_t, } -#[test] -fn bindgen_test_layout_hb_glyph_extents_t() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(hb_glyph_extents_t)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(hb_glyph_extents_t)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).x_bearing) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(hb_glyph_extents_t), - "::", - stringify!(x_bearing) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).y_bearing) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(hb_glyph_extents_t), - "::", - stringify!(y_bearing) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).width) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(hb_glyph_extents_t), - "::", - stringify!(width) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).height) as usize - ptr as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(hb_glyph_extents_t), - "::", - stringify!(height) - ) - ); -} +#[allow(clippy::unnecessary_operation, clippy::identity_op)] +const _: () = { + ["Size of hb_glyph_extents_t"][::std::mem::size_of::() - 16usize]; + ["Alignment of hb_glyph_extents_t"][::std::mem::align_of::() - 4usize]; + ["Offset of field: hb_glyph_extents_t::x_bearing"] + [::std::mem::offset_of!(hb_glyph_extents_t, x_bearing) - 0usize]; + ["Offset of field: hb_glyph_extents_t::y_bearing"] + [::std::mem::offset_of!(hb_glyph_extents_t, y_bearing) - 4usize]; + ["Offset of field: hb_glyph_extents_t::width"] + [::std::mem::offset_of!(hb_glyph_extents_t, width) - 8usize]; + ["Offset of field: hb_glyph_extents_t::height"] + [::std::mem::offset_of!(hb_glyph_extents_t, height) - 12usize]; +}; #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct hb_font_t { _unused: [u8; 0], } -pub const hb_memory_mode_t_HB_MEMORY_MODE_DUPLICATE: hb_memory_mode_t = 0; -pub const hb_memory_mode_t_HB_MEMORY_MODE_READONLY: hb_memory_mode_t = 1; -pub const hb_memory_mode_t_HB_MEMORY_MODE_WRITABLE: hb_memory_mode_t = 2; -pub const hb_memory_mode_t_HB_MEMORY_MODE_READONLY_MAY_MAKE_WRITABLE: hb_memory_mode_t = 3; +pub const HB_MEMORY_MODE_DUPLICATE: hb_memory_mode_t = 0; +pub const HB_MEMORY_MODE_READONLY: hb_memory_mode_t = 1; +pub const HB_MEMORY_MODE_WRITABLE: hb_memory_mode_t = 2; +pub const HB_MEMORY_MODE_READONLY_MAY_MAKE_WRITABLE: hb_memory_mode_t = 3; #[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."] pub type hb_memory_mode_t = ::std::os::raw::c_uint; #[repr(C)] @@ -2006,182 +505,95 @@ extern "C" { length: *mut ::std::os::raw::c_uint, ) -> *mut ::std::os::raw::c_char; } -pub const hb_unicode_general_category_t_HB_UNICODE_GENERAL_CATEGORY_CONTROL: - hb_unicode_general_category_t = 0; -pub const hb_unicode_general_category_t_HB_UNICODE_GENERAL_CATEGORY_FORMAT: - hb_unicode_general_category_t = 1; -pub const hb_unicode_general_category_t_HB_UNICODE_GENERAL_CATEGORY_UNASSIGNED: - hb_unicode_general_category_t = 2; -pub const hb_unicode_general_category_t_HB_UNICODE_GENERAL_CATEGORY_PRIVATE_USE: - hb_unicode_general_category_t = 3; -pub const hb_unicode_general_category_t_HB_UNICODE_GENERAL_CATEGORY_SURROGATE: - hb_unicode_general_category_t = 4; -pub const hb_unicode_general_category_t_HB_UNICODE_GENERAL_CATEGORY_LOWERCASE_LETTER: - hb_unicode_general_category_t = 5; -pub const hb_unicode_general_category_t_HB_UNICODE_GENERAL_CATEGORY_MODIFIER_LETTER: - hb_unicode_general_category_t = 6; -pub const hb_unicode_general_category_t_HB_UNICODE_GENERAL_CATEGORY_OTHER_LETTER: - hb_unicode_general_category_t = 7; -pub const hb_unicode_general_category_t_HB_UNICODE_GENERAL_CATEGORY_TITLECASE_LETTER: - hb_unicode_general_category_t = 8; -pub const hb_unicode_general_category_t_HB_UNICODE_GENERAL_CATEGORY_UPPERCASE_LETTER: - hb_unicode_general_category_t = 9; -pub const hb_unicode_general_category_t_HB_UNICODE_GENERAL_CATEGORY_SPACING_MARK: - hb_unicode_general_category_t = 10; -pub const hb_unicode_general_category_t_HB_UNICODE_GENERAL_CATEGORY_ENCLOSING_MARK: - hb_unicode_general_category_t = 11; -pub const hb_unicode_general_category_t_HB_UNICODE_GENERAL_CATEGORY_NON_SPACING_MARK: - hb_unicode_general_category_t = 12; -pub const hb_unicode_general_category_t_HB_UNICODE_GENERAL_CATEGORY_DECIMAL_NUMBER: - hb_unicode_general_category_t = 13; -pub const hb_unicode_general_category_t_HB_UNICODE_GENERAL_CATEGORY_LETTER_NUMBER: - hb_unicode_general_category_t = 14; -pub const hb_unicode_general_category_t_HB_UNICODE_GENERAL_CATEGORY_OTHER_NUMBER: - hb_unicode_general_category_t = 15; -pub const hb_unicode_general_category_t_HB_UNICODE_GENERAL_CATEGORY_CONNECT_PUNCTUATION: - hb_unicode_general_category_t = 16; -pub const hb_unicode_general_category_t_HB_UNICODE_GENERAL_CATEGORY_DASH_PUNCTUATION: - hb_unicode_general_category_t = 17; -pub const hb_unicode_general_category_t_HB_UNICODE_GENERAL_CATEGORY_CLOSE_PUNCTUATION: - hb_unicode_general_category_t = 18; -pub const hb_unicode_general_category_t_HB_UNICODE_GENERAL_CATEGORY_FINAL_PUNCTUATION: - hb_unicode_general_category_t = 19; -pub const hb_unicode_general_category_t_HB_UNICODE_GENERAL_CATEGORY_INITIAL_PUNCTUATION: - hb_unicode_general_category_t = 20; -pub const hb_unicode_general_category_t_HB_UNICODE_GENERAL_CATEGORY_OTHER_PUNCTUATION: - hb_unicode_general_category_t = 21; -pub const hb_unicode_general_category_t_HB_UNICODE_GENERAL_CATEGORY_OPEN_PUNCTUATION: - hb_unicode_general_category_t = 22; -pub const hb_unicode_general_category_t_HB_UNICODE_GENERAL_CATEGORY_CURRENCY_SYMBOL: - hb_unicode_general_category_t = 23; -pub const hb_unicode_general_category_t_HB_UNICODE_GENERAL_CATEGORY_MODIFIER_SYMBOL: - hb_unicode_general_category_t = 24; -pub const hb_unicode_general_category_t_HB_UNICODE_GENERAL_CATEGORY_MATH_SYMBOL: - hb_unicode_general_category_t = 25; -pub const hb_unicode_general_category_t_HB_UNICODE_GENERAL_CATEGORY_OTHER_SYMBOL: - hb_unicode_general_category_t = 26; -pub const hb_unicode_general_category_t_HB_UNICODE_GENERAL_CATEGORY_LINE_SEPARATOR: - hb_unicode_general_category_t = 27; -pub const hb_unicode_general_category_t_HB_UNICODE_GENERAL_CATEGORY_PARAGRAPH_SEPARATOR: - hb_unicode_general_category_t = 28; -pub const hb_unicode_general_category_t_HB_UNICODE_GENERAL_CATEGORY_SPACE_SEPARATOR: - hb_unicode_general_category_t = 29; +pub const HB_UNICODE_GENERAL_CATEGORY_CONTROL: hb_unicode_general_category_t = 0; +pub const HB_UNICODE_GENERAL_CATEGORY_FORMAT: hb_unicode_general_category_t = 1; +pub const HB_UNICODE_GENERAL_CATEGORY_UNASSIGNED: hb_unicode_general_category_t = 2; +pub const HB_UNICODE_GENERAL_CATEGORY_PRIVATE_USE: hb_unicode_general_category_t = 3; +pub const HB_UNICODE_GENERAL_CATEGORY_SURROGATE: hb_unicode_general_category_t = 4; +pub const HB_UNICODE_GENERAL_CATEGORY_LOWERCASE_LETTER: hb_unicode_general_category_t = 5; +pub const HB_UNICODE_GENERAL_CATEGORY_MODIFIER_LETTER: hb_unicode_general_category_t = 6; +pub const HB_UNICODE_GENERAL_CATEGORY_OTHER_LETTER: hb_unicode_general_category_t = 7; +pub const HB_UNICODE_GENERAL_CATEGORY_TITLECASE_LETTER: hb_unicode_general_category_t = 8; +pub const HB_UNICODE_GENERAL_CATEGORY_UPPERCASE_LETTER: hb_unicode_general_category_t = 9; +pub const HB_UNICODE_GENERAL_CATEGORY_SPACING_MARK: hb_unicode_general_category_t = 10; +pub const HB_UNICODE_GENERAL_CATEGORY_ENCLOSING_MARK: hb_unicode_general_category_t = 11; +pub const HB_UNICODE_GENERAL_CATEGORY_NON_SPACING_MARK: hb_unicode_general_category_t = 12; +pub const HB_UNICODE_GENERAL_CATEGORY_DECIMAL_NUMBER: hb_unicode_general_category_t = 13; +pub const HB_UNICODE_GENERAL_CATEGORY_LETTER_NUMBER: hb_unicode_general_category_t = 14; +pub const HB_UNICODE_GENERAL_CATEGORY_OTHER_NUMBER: hb_unicode_general_category_t = 15; +pub const HB_UNICODE_GENERAL_CATEGORY_CONNECT_PUNCTUATION: hb_unicode_general_category_t = 16; +pub const HB_UNICODE_GENERAL_CATEGORY_DASH_PUNCTUATION: hb_unicode_general_category_t = 17; +pub const HB_UNICODE_GENERAL_CATEGORY_CLOSE_PUNCTUATION: hb_unicode_general_category_t = 18; +pub const HB_UNICODE_GENERAL_CATEGORY_FINAL_PUNCTUATION: hb_unicode_general_category_t = 19; +pub const HB_UNICODE_GENERAL_CATEGORY_INITIAL_PUNCTUATION: hb_unicode_general_category_t = 20; +pub const HB_UNICODE_GENERAL_CATEGORY_OTHER_PUNCTUATION: hb_unicode_general_category_t = 21; +pub const HB_UNICODE_GENERAL_CATEGORY_OPEN_PUNCTUATION: hb_unicode_general_category_t = 22; +pub const HB_UNICODE_GENERAL_CATEGORY_CURRENCY_SYMBOL: hb_unicode_general_category_t = 23; +pub const HB_UNICODE_GENERAL_CATEGORY_MODIFIER_SYMBOL: hb_unicode_general_category_t = 24; +pub const HB_UNICODE_GENERAL_CATEGORY_MATH_SYMBOL: hb_unicode_general_category_t = 25; +pub const HB_UNICODE_GENERAL_CATEGORY_OTHER_SYMBOL: hb_unicode_general_category_t = 26; +pub const HB_UNICODE_GENERAL_CATEGORY_LINE_SEPARATOR: hb_unicode_general_category_t = 27; +pub const HB_UNICODE_GENERAL_CATEGORY_PARAGRAPH_SEPARATOR: hb_unicode_general_category_t = 28; +pub const HB_UNICODE_GENERAL_CATEGORY_SPACE_SEPARATOR: hb_unicode_general_category_t = 29; #[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."] pub type hb_unicode_general_category_t = ::std::os::raw::c_uint; -pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_NOT_REORDERED: - hb_unicode_combining_class_t = 0; -pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_OVERLAY: - hb_unicode_combining_class_t = 1; -pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_NUKTA: - hb_unicode_combining_class_t = 7; -pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_KANA_VOICING: - hb_unicode_combining_class_t = 8; -pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_VIRAMA: - hb_unicode_combining_class_t = 9; -pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_CCC10: - hb_unicode_combining_class_t = 10; -pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_CCC11: - hb_unicode_combining_class_t = 11; -pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_CCC12: - hb_unicode_combining_class_t = 12; -pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_CCC13: - hb_unicode_combining_class_t = 13; -pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_CCC14: - hb_unicode_combining_class_t = 14; -pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_CCC15: - hb_unicode_combining_class_t = 15; -pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_CCC16: - hb_unicode_combining_class_t = 16; -pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_CCC17: - hb_unicode_combining_class_t = 17; -pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_CCC18: - hb_unicode_combining_class_t = 18; -pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_CCC19: - hb_unicode_combining_class_t = 19; -pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_CCC20: - hb_unicode_combining_class_t = 20; -pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_CCC21: - hb_unicode_combining_class_t = 21; -pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_CCC22: - hb_unicode_combining_class_t = 22; -pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_CCC23: - hb_unicode_combining_class_t = 23; -pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_CCC24: - hb_unicode_combining_class_t = 24; -pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_CCC25: - hb_unicode_combining_class_t = 25; -pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_CCC26: - hb_unicode_combining_class_t = 26; -pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_CCC27: - hb_unicode_combining_class_t = 27; -pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_CCC28: - hb_unicode_combining_class_t = 28; -pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_CCC29: - hb_unicode_combining_class_t = 29; -pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_CCC30: - hb_unicode_combining_class_t = 30; -pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_CCC31: - hb_unicode_combining_class_t = 31; -pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_CCC32: - hb_unicode_combining_class_t = 32; -pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_CCC33: - hb_unicode_combining_class_t = 33; -pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_CCC34: - hb_unicode_combining_class_t = 34; -pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_CCC35: - hb_unicode_combining_class_t = 35; -pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_CCC36: - hb_unicode_combining_class_t = 36; -pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_CCC84: - hb_unicode_combining_class_t = 84; -pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_CCC91: - hb_unicode_combining_class_t = 91; -pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_CCC103: - hb_unicode_combining_class_t = 103; -pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_CCC107: - hb_unicode_combining_class_t = 107; -pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_CCC118: - hb_unicode_combining_class_t = 118; -pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_CCC122: - hb_unicode_combining_class_t = 122; -pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_CCC129: - hb_unicode_combining_class_t = 129; -pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_CCC130: - hb_unicode_combining_class_t = 130; -pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_CCC132: - hb_unicode_combining_class_t = 132; -pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_ATTACHED_BELOW_LEFT: - hb_unicode_combining_class_t = 200; -pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_ATTACHED_BELOW: - hb_unicode_combining_class_t = 202; -pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_ATTACHED_ABOVE: - hb_unicode_combining_class_t = 214; -pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_ATTACHED_ABOVE_RIGHT: - hb_unicode_combining_class_t = 216; -pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_BELOW_LEFT: - hb_unicode_combining_class_t = 218; -pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_BELOW: - hb_unicode_combining_class_t = 220; -pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_BELOW_RIGHT: - hb_unicode_combining_class_t = 222; -pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_LEFT: - hb_unicode_combining_class_t = 224; -pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_RIGHT: - hb_unicode_combining_class_t = 226; -pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_ABOVE_LEFT: - hb_unicode_combining_class_t = 228; -pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_ABOVE: - hb_unicode_combining_class_t = 230; -pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_ABOVE_RIGHT: - hb_unicode_combining_class_t = 232; -pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_DOUBLE_BELOW: - hb_unicode_combining_class_t = 233; -pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_DOUBLE_ABOVE: - hb_unicode_combining_class_t = 234; -pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_IOTA_SUBSCRIPT: - hb_unicode_combining_class_t = 240; -pub const hb_unicode_combining_class_t_HB_UNICODE_COMBINING_CLASS_INVALID: - hb_unicode_combining_class_t = 255; +pub const HB_UNICODE_COMBINING_CLASS_NOT_REORDERED: hb_unicode_combining_class_t = 0; +pub const HB_UNICODE_COMBINING_CLASS_OVERLAY: hb_unicode_combining_class_t = 1; +pub const HB_UNICODE_COMBINING_CLASS_NUKTA: hb_unicode_combining_class_t = 7; +pub const HB_UNICODE_COMBINING_CLASS_KANA_VOICING: hb_unicode_combining_class_t = 8; +pub const HB_UNICODE_COMBINING_CLASS_VIRAMA: hb_unicode_combining_class_t = 9; +pub const HB_UNICODE_COMBINING_CLASS_CCC10: hb_unicode_combining_class_t = 10; +pub const HB_UNICODE_COMBINING_CLASS_CCC11: hb_unicode_combining_class_t = 11; +pub const HB_UNICODE_COMBINING_CLASS_CCC12: hb_unicode_combining_class_t = 12; +pub const HB_UNICODE_COMBINING_CLASS_CCC13: hb_unicode_combining_class_t = 13; +pub const HB_UNICODE_COMBINING_CLASS_CCC14: hb_unicode_combining_class_t = 14; +pub const HB_UNICODE_COMBINING_CLASS_CCC15: hb_unicode_combining_class_t = 15; +pub const HB_UNICODE_COMBINING_CLASS_CCC16: hb_unicode_combining_class_t = 16; +pub const HB_UNICODE_COMBINING_CLASS_CCC17: hb_unicode_combining_class_t = 17; +pub const HB_UNICODE_COMBINING_CLASS_CCC18: hb_unicode_combining_class_t = 18; +pub const HB_UNICODE_COMBINING_CLASS_CCC19: hb_unicode_combining_class_t = 19; +pub const HB_UNICODE_COMBINING_CLASS_CCC20: hb_unicode_combining_class_t = 20; +pub const HB_UNICODE_COMBINING_CLASS_CCC21: hb_unicode_combining_class_t = 21; +pub const HB_UNICODE_COMBINING_CLASS_CCC22: hb_unicode_combining_class_t = 22; +pub const HB_UNICODE_COMBINING_CLASS_CCC23: hb_unicode_combining_class_t = 23; +pub const HB_UNICODE_COMBINING_CLASS_CCC24: hb_unicode_combining_class_t = 24; +pub const HB_UNICODE_COMBINING_CLASS_CCC25: hb_unicode_combining_class_t = 25; +pub const HB_UNICODE_COMBINING_CLASS_CCC26: hb_unicode_combining_class_t = 26; +pub const HB_UNICODE_COMBINING_CLASS_CCC27: hb_unicode_combining_class_t = 27; +pub const HB_UNICODE_COMBINING_CLASS_CCC28: hb_unicode_combining_class_t = 28; +pub const HB_UNICODE_COMBINING_CLASS_CCC29: hb_unicode_combining_class_t = 29; +pub const HB_UNICODE_COMBINING_CLASS_CCC30: hb_unicode_combining_class_t = 30; +pub const HB_UNICODE_COMBINING_CLASS_CCC31: hb_unicode_combining_class_t = 31; +pub const HB_UNICODE_COMBINING_CLASS_CCC32: hb_unicode_combining_class_t = 32; +pub const HB_UNICODE_COMBINING_CLASS_CCC33: hb_unicode_combining_class_t = 33; +pub const HB_UNICODE_COMBINING_CLASS_CCC34: hb_unicode_combining_class_t = 34; +pub const HB_UNICODE_COMBINING_CLASS_CCC35: hb_unicode_combining_class_t = 35; +pub const HB_UNICODE_COMBINING_CLASS_CCC36: hb_unicode_combining_class_t = 36; +pub const HB_UNICODE_COMBINING_CLASS_CCC84: hb_unicode_combining_class_t = 84; +pub const HB_UNICODE_COMBINING_CLASS_CCC91: hb_unicode_combining_class_t = 91; +pub const HB_UNICODE_COMBINING_CLASS_CCC103: hb_unicode_combining_class_t = 103; +pub const HB_UNICODE_COMBINING_CLASS_CCC107: hb_unicode_combining_class_t = 107; +pub const HB_UNICODE_COMBINING_CLASS_CCC118: hb_unicode_combining_class_t = 118; +pub const HB_UNICODE_COMBINING_CLASS_CCC122: hb_unicode_combining_class_t = 122; +pub const HB_UNICODE_COMBINING_CLASS_CCC129: hb_unicode_combining_class_t = 129; +pub const HB_UNICODE_COMBINING_CLASS_CCC130: hb_unicode_combining_class_t = 130; +pub const HB_UNICODE_COMBINING_CLASS_CCC132: hb_unicode_combining_class_t = 132; +pub const HB_UNICODE_COMBINING_CLASS_ATTACHED_BELOW_LEFT: hb_unicode_combining_class_t = 200; +pub const HB_UNICODE_COMBINING_CLASS_ATTACHED_BELOW: hb_unicode_combining_class_t = 202; +pub const HB_UNICODE_COMBINING_CLASS_ATTACHED_ABOVE: hb_unicode_combining_class_t = 214; +pub const HB_UNICODE_COMBINING_CLASS_ATTACHED_ABOVE_RIGHT: hb_unicode_combining_class_t = 216; +pub const HB_UNICODE_COMBINING_CLASS_BELOW_LEFT: hb_unicode_combining_class_t = 218; +pub const HB_UNICODE_COMBINING_CLASS_BELOW: hb_unicode_combining_class_t = 220; +pub const HB_UNICODE_COMBINING_CLASS_BELOW_RIGHT: hb_unicode_combining_class_t = 222; +pub const HB_UNICODE_COMBINING_CLASS_LEFT: hb_unicode_combining_class_t = 224; +pub const HB_UNICODE_COMBINING_CLASS_RIGHT: hb_unicode_combining_class_t = 226; +pub const HB_UNICODE_COMBINING_CLASS_ABOVE_LEFT: hb_unicode_combining_class_t = 228; +pub const HB_UNICODE_COMBINING_CLASS_ABOVE: hb_unicode_combining_class_t = 230; +pub const HB_UNICODE_COMBINING_CLASS_ABOVE_RIGHT: hb_unicode_combining_class_t = 232; +pub const HB_UNICODE_COMBINING_CLASS_DOUBLE_BELOW: hb_unicode_combining_class_t = 233; +pub const HB_UNICODE_COMBINING_CLASS_DOUBLE_ABOVE: hb_unicode_combining_class_t = 234; +pub const HB_UNICODE_COMBINING_CLASS_IOTA_SUBSCRIPT: hb_unicode_combining_class_t = 240; +pub const HB_UNICODE_COMBINING_CLASS_INVALID: hb_unicode_combining_class_t = 255; #[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: 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().\n"] pub type hb_unicode_combining_class_t = ::std::os::raw::c_uint; #[repr(C)] @@ -2673,6 +1085,24 @@ extern "C" { extern "C" { pub fn hb_face_get_glyph_count(face: *const hb_face_t) -> ::std::os::raw::c_uint; } +#[doc = " hb_get_table_tags_func_t:\n @face: A face object\n @start_offset: The index of first table tag to retrieve\n @table_count: (inout): Input = the maximum number of table tags to return;\n Output = the actual number of table tags returned (may be zero)\n @table_tags: (out) (array length=table_count): The array of table tags found\n @user_data: User data pointer passed by the caller\n\n Callback function for hb_face_get_table_tags().\n\n Return value: Total number of tables, or zero if it is not possible to list\n\n Since: 10.0.0"] +pub type hb_get_table_tags_func_t = ::std::option::Option< + unsafe extern "C" fn( + face: *const hb_face_t, + start_offset: ::std::os::raw::c_uint, + table_count: *mut ::std::os::raw::c_uint, + table_tags: *mut hb_tag_t, + user_data: *mut ::std::os::raw::c_void, + ) -> ::std::os::raw::c_uint, +>; +extern "C" { + pub fn hb_face_set_get_table_tags_func( + face: *mut hb_face_t, + func: hb_get_table_tags_func_t, + user_data: *mut ::std::os::raw::c_void, + destroy: hb_destroy_func_t, + ); +} extern "C" { pub fn hb_face_get_table_tags( face: *const hb_face_t, @@ -2731,141 +1161,35 @@ pub struct hb_draw_state_t { pub reserved6: hb_var_num_t, pub reserved7: hb_var_num_t, } -#[test] -fn bindgen_test_layout_hb_draw_state_t() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 48usize, - concat!("Size of: ", stringify!(hb_draw_state_t)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(hb_draw_state_t)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).path_open) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(hb_draw_state_t), - "::", - stringify!(path_open) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).path_start_x) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(hb_draw_state_t), - "::", - stringify!(path_start_x) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).path_start_y) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(hb_draw_state_t), - "::", - stringify!(path_start_y) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).current_x) as usize - ptr as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(hb_draw_state_t), - "::", - stringify!(current_x) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).current_y) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(hb_draw_state_t), - "::", - stringify!(current_y) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).reserved1) as usize - ptr as usize }, - 20usize, - concat!( - "Offset of field: ", - stringify!(hb_draw_state_t), - "::", - stringify!(reserved1) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).reserved2) as usize - ptr as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(hb_draw_state_t), - "::", - stringify!(reserved2) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).reserved3) as usize - ptr as usize }, - 28usize, - concat!( - "Offset of field: ", - stringify!(hb_draw_state_t), - "::", - stringify!(reserved3) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).reserved4) as usize - ptr as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(hb_draw_state_t), - "::", - stringify!(reserved4) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).reserved5) as usize - ptr as usize }, - 36usize, - concat!( - "Offset of field: ", - stringify!(hb_draw_state_t), - "::", - stringify!(reserved5) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).reserved6) as usize - ptr as usize }, - 40usize, - concat!( - "Offset of field: ", - stringify!(hb_draw_state_t), - "::", - stringify!(reserved6) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).reserved7) as usize - ptr as usize }, - 44usize, - concat!( - "Offset of field: ", - stringify!(hb_draw_state_t), - "::", - stringify!(reserved7) - ) - ); -} +#[allow(clippy::unnecessary_operation, clippy::identity_op)] +const _: () = { + ["Size of hb_draw_state_t"][::std::mem::size_of::() - 48usize]; + ["Alignment of hb_draw_state_t"][::std::mem::align_of::() - 4usize]; + ["Offset of field: hb_draw_state_t::path_open"] + [::std::mem::offset_of!(hb_draw_state_t, path_open) - 0usize]; + ["Offset of field: hb_draw_state_t::path_start_x"] + [::std::mem::offset_of!(hb_draw_state_t, path_start_x) - 4usize]; + ["Offset of field: hb_draw_state_t::path_start_y"] + [::std::mem::offset_of!(hb_draw_state_t, path_start_y) - 8usize]; + ["Offset of field: hb_draw_state_t::current_x"] + [::std::mem::offset_of!(hb_draw_state_t, current_x) - 12usize]; + ["Offset of field: hb_draw_state_t::current_y"] + [::std::mem::offset_of!(hb_draw_state_t, current_y) - 16usize]; + ["Offset of field: hb_draw_state_t::reserved1"] + [::std::mem::offset_of!(hb_draw_state_t, reserved1) - 20usize]; + ["Offset of field: hb_draw_state_t::reserved2"] + [::std::mem::offset_of!(hb_draw_state_t, reserved2) - 24usize]; + ["Offset of field: hb_draw_state_t::reserved3"] + [::std::mem::offset_of!(hb_draw_state_t, reserved3) - 28usize]; + ["Offset of field: hb_draw_state_t::reserved4"] + [::std::mem::offset_of!(hb_draw_state_t, reserved4) - 32usize]; + ["Offset of field: hb_draw_state_t::reserved5"] + [::std::mem::offset_of!(hb_draw_state_t, reserved5) - 36usize]; + ["Offset of field: hb_draw_state_t::reserved6"] + [::std::mem::offset_of!(hb_draw_state_t, reserved6) - 40usize]; + ["Offset of field: hb_draw_state_t::reserved7"] + [::std::mem::offset_of!(hb_draw_state_t, reserved7) - 44usize]; +}; #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct hb_draw_funcs_t { @@ -3189,54 +1513,20 @@ pub struct hb_color_stop_t { pub is_foreground: hb_bool_t, pub color: hb_color_t, } -#[test] -fn bindgen_test_layout_hb_color_stop_t() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 12usize, - concat!("Size of: ", stringify!(hb_color_stop_t)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(hb_color_stop_t)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).offset) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(hb_color_stop_t), - "::", - stringify!(offset) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).is_foreground) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(hb_color_stop_t), - "::", - stringify!(is_foreground) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).color) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(hb_color_stop_t), - "::", - stringify!(color) - ) - ); -} -pub const hb_paint_extend_t_HB_PAINT_EXTEND_PAD: hb_paint_extend_t = 0; -pub const hb_paint_extend_t_HB_PAINT_EXTEND_REPEAT: hb_paint_extend_t = 1; -pub const hb_paint_extend_t_HB_PAINT_EXTEND_REFLECT: hb_paint_extend_t = 2; +#[allow(clippy::unnecessary_operation, clippy::identity_op)] +const _: () = { + ["Size of hb_color_stop_t"][::std::mem::size_of::() - 12usize]; + ["Alignment of hb_color_stop_t"][::std::mem::align_of::() - 4usize]; + ["Offset of field: hb_color_stop_t::offset"] + [::std::mem::offset_of!(hb_color_stop_t, offset) - 0usize]; + ["Offset of field: hb_color_stop_t::is_foreground"] + [::std::mem::offset_of!(hb_color_stop_t, is_foreground) - 4usize]; + ["Offset of field: hb_color_stop_t::color"] + [::std::mem::offset_of!(hb_color_stop_t, color) - 8usize]; +}; +pub const HB_PAINT_EXTEND_PAD: hb_paint_extend_t = 0; +pub const HB_PAINT_EXTEND_REPEAT: hb_paint_extend_t = 1; +pub const HB_PAINT_EXTEND_REFLECT: hb_paint_extend_t = 2; #[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"] pub type hb_paint_extend_t = ::std::os::raw::c_uint; #[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"] @@ -3276,151 +1566,37 @@ pub struct hb_color_line_t { pub reserved7: *mut ::std::os::raw::c_void, pub reserved8: *mut ::std::os::raw::c_void, } -#[test] -fn bindgen_test_layout_hb_color_line_t() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 104usize, - concat!("Size of: ", stringify!(hb_color_line_t)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(hb_color_line_t)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(hb_color_line_t), - "::", - stringify!(data) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).get_color_stops) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(hb_color_line_t), - "::", - stringify!(get_color_stops) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).get_color_stops_user_data) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(hb_color_line_t), - "::", - stringify!(get_color_stops_user_data) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).get_extend) as usize - ptr as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(hb_color_line_t), - "::", - stringify!(get_extend) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).get_extend_user_data) as usize - ptr as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(hb_color_line_t), - "::", - stringify!(get_extend_user_data) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).reserved0) as usize - ptr as usize }, - 40usize, - concat!( - "Offset of field: ", - stringify!(hb_color_line_t), - "::", - stringify!(reserved0) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).reserved1) as usize - ptr as usize }, - 48usize, - concat!( - "Offset of field: ", - stringify!(hb_color_line_t), - "::", - stringify!(reserved1) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).reserved2) as usize - ptr as usize }, - 56usize, - concat!( - "Offset of field: ", - stringify!(hb_color_line_t), - "::", - stringify!(reserved2) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).reserved3) as usize - ptr as usize }, - 64usize, - concat!( - "Offset of field: ", - stringify!(hb_color_line_t), - "::", - stringify!(reserved3) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).reserved5) as usize - ptr as usize }, - 72usize, - concat!( - "Offset of field: ", - stringify!(hb_color_line_t), - "::", - stringify!(reserved5) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).reserved6) as usize - ptr as usize }, - 80usize, - concat!( - "Offset of field: ", - stringify!(hb_color_line_t), - "::", - stringify!(reserved6) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).reserved7) as usize - ptr as usize }, - 88usize, - concat!( - "Offset of field: ", - stringify!(hb_color_line_t), - "::", - stringify!(reserved7) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).reserved8) as usize - ptr as usize }, - 96usize, - concat!( - "Offset of field: ", - stringify!(hb_color_line_t), - "::", - stringify!(reserved8) - ) - ); -} +#[allow(clippy::unnecessary_operation, clippy::identity_op)] +const _: () = { + ["Size of hb_color_line_t"][::std::mem::size_of::() - 104usize]; + ["Alignment of hb_color_line_t"][::std::mem::align_of::() - 8usize]; + ["Offset of field: hb_color_line_t::data"] + [::std::mem::offset_of!(hb_color_line_t, data) - 0usize]; + ["Offset of field: hb_color_line_t::get_color_stops"] + [::std::mem::offset_of!(hb_color_line_t, get_color_stops) - 8usize]; + ["Offset of field: hb_color_line_t::get_color_stops_user_data"] + [::std::mem::offset_of!(hb_color_line_t, get_color_stops_user_data) - 16usize]; + ["Offset of field: hb_color_line_t::get_extend"] + [::std::mem::offset_of!(hb_color_line_t, get_extend) - 24usize]; + ["Offset of field: hb_color_line_t::get_extend_user_data"] + [::std::mem::offset_of!(hb_color_line_t, get_extend_user_data) - 32usize]; + ["Offset of field: hb_color_line_t::reserved0"] + [::std::mem::offset_of!(hb_color_line_t, reserved0) - 40usize]; + ["Offset of field: hb_color_line_t::reserved1"] + [::std::mem::offset_of!(hb_color_line_t, reserved1) - 48usize]; + ["Offset of field: hb_color_line_t::reserved2"] + [::std::mem::offset_of!(hb_color_line_t, reserved2) - 56usize]; + ["Offset of field: hb_color_line_t::reserved3"] + [::std::mem::offset_of!(hb_color_line_t, reserved3) - 64usize]; + ["Offset of field: hb_color_line_t::reserved5"] + [::std::mem::offset_of!(hb_color_line_t, reserved5) - 72usize]; + ["Offset of field: hb_color_line_t::reserved6"] + [::std::mem::offset_of!(hb_color_line_t, reserved6) - 80usize]; + ["Offset of field: hb_color_line_t::reserved7"] + [::std::mem::offset_of!(hb_color_line_t, reserved7) - 88usize]; + ["Offset of field: hb_color_line_t::reserved8"] + [::std::mem::offset_of!(hb_color_line_t, reserved8) - 96usize]; +}; extern "C" { pub fn hb_color_line_get_color_stops( color_line: *mut hb_color_line_t, @@ -3475,46 +1651,34 @@ pub type hb_paint_sweep_gradient_func_t = ::std::option::Option< user_data: *mut ::std::os::raw::c_void, ), >; -pub const hb_paint_composite_mode_t_HB_PAINT_COMPOSITE_MODE_CLEAR: hb_paint_composite_mode_t = 0; -pub const hb_paint_composite_mode_t_HB_PAINT_COMPOSITE_MODE_SRC: hb_paint_composite_mode_t = 1; -pub const hb_paint_composite_mode_t_HB_PAINT_COMPOSITE_MODE_DEST: hb_paint_composite_mode_t = 2; -pub const hb_paint_composite_mode_t_HB_PAINT_COMPOSITE_MODE_SRC_OVER: hb_paint_composite_mode_t = 3; -pub const hb_paint_composite_mode_t_HB_PAINT_COMPOSITE_MODE_DEST_OVER: hb_paint_composite_mode_t = - 4; -pub const hb_paint_composite_mode_t_HB_PAINT_COMPOSITE_MODE_SRC_IN: hb_paint_composite_mode_t = 5; -pub const hb_paint_composite_mode_t_HB_PAINT_COMPOSITE_MODE_DEST_IN: hb_paint_composite_mode_t = 6; -pub const hb_paint_composite_mode_t_HB_PAINT_COMPOSITE_MODE_SRC_OUT: hb_paint_composite_mode_t = 7; -pub const hb_paint_composite_mode_t_HB_PAINT_COMPOSITE_MODE_DEST_OUT: hb_paint_composite_mode_t = 8; -pub const hb_paint_composite_mode_t_HB_PAINT_COMPOSITE_MODE_SRC_ATOP: hb_paint_composite_mode_t = 9; -pub const hb_paint_composite_mode_t_HB_PAINT_COMPOSITE_MODE_DEST_ATOP: hb_paint_composite_mode_t = - 10; -pub const hb_paint_composite_mode_t_HB_PAINT_COMPOSITE_MODE_XOR: hb_paint_composite_mode_t = 11; -pub const hb_paint_composite_mode_t_HB_PAINT_COMPOSITE_MODE_PLUS: hb_paint_composite_mode_t = 12; -pub const hb_paint_composite_mode_t_HB_PAINT_COMPOSITE_MODE_SCREEN: hb_paint_composite_mode_t = 13; -pub const hb_paint_composite_mode_t_HB_PAINT_COMPOSITE_MODE_OVERLAY: hb_paint_composite_mode_t = 14; -pub const hb_paint_composite_mode_t_HB_PAINT_COMPOSITE_MODE_DARKEN: hb_paint_composite_mode_t = 15; -pub const hb_paint_composite_mode_t_HB_PAINT_COMPOSITE_MODE_LIGHTEN: hb_paint_composite_mode_t = 16; -pub const hb_paint_composite_mode_t_HB_PAINT_COMPOSITE_MODE_COLOR_DODGE: hb_paint_composite_mode_t = - 17; -pub const hb_paint_composite_mode_t_HB_PAINT_COMPOSITE_MODE_COLOR_BURN: hb_paint_composite_mode_t = - 18; -pub const hb_paint_composite_mode_t_HB_PAINT_COMPOSITE_MODE_HARD_LIGHT: hb_paint_composite_mode_t = - 19; -pub const hb_paint_composite_mode_t_HB_PAINT_COMPOSITE_MODE_SOFT_LIGHT: hb_paint_composite_mode_t = - 20; -pub const hb_paint_composite_mode_t_HB_PAINT_COMPOSITE_MODE_DIFFERENCE: hb_paint_composite_mode_t = - 21; -pub const hb_paint_composite_mode_t_HB_PAINT_COMPOSITE_MODE_EXCLUSION: hb_paint_composite_mode_t = - 22; -pub const hb_paint_composite_mode_t_HB_PAINT_COMPOSITE_MODE_MULTIPLY: hb_paint_composite_mode_t = - 23; -pub const hb_paint_composite_mode_t_HB_PAINT_COMPOSITE_MODE_HSL_HUE: hb_paint_composite_mode_t = 24; -pub const hb_paint_composite_mode_t_HB_PAINT_COMPOSITE_MODE_HSL_SATURATION: - hb_paint_composite_mode_t = 25; -pub const hb_paint_composite_mode_t_HB_PAINT_COMPOSITE_MODE_HSL_COLOR: hb_paint_composite_mode_t = - 26; -pub const hb_paint_composite_mode_t_HB_PAINT_COMPOSITE_MODE_HSL_LUMINOSITY: - hb_paint_composite_mode_t = 27; +pub const HB_PAINT_COMPOSITE_MODE_CLEAR: hb_paint_composite_mode_t = 0; +pub const HB_PAINT_COMPOSITE_MODE_SRC: hb_paint_composite_mode_t = 1; +pub const HB_PAINT_COMPOSITE_MODE_DEST: hb_paint_composite_mode_t = 2; +pub const HB_PAINT_COMPOSITE_MODE_SRC_OVER: hb_paint_composite_mode_t = 3; +pub const HB_PAINT_COMPOSITE_MODE_DEST_OVER: hb_paint_composite_mode_t = 4; +pub const HB_PAINT_COMPOSITE_MODE_SRC_IN: hb_paint_composite_mode_t = 5; +pub const HB_PAINT_COMPOSITE_MODE_DEST_IN: hb_paint_composite_mode_t = 6; +pub const HB_PAINT_COMPOSITE_MODE_SRC_OUT: hb_paint_composite_mode_t = 7; +pub const HB_PAINT_COMPOSITE_MODE_DEST_OUT: hb_paint_composite_mode_t = 8; +pub const HB_PAINT_COMPOSITE_MODE_SRC_ATOP: hb_paint_composite_mode_t = 9; +pub const HB_PAINT_COMPOSITE_MODE_DEST_ATOP: hb_paint_composite_mode_t = 10; +pub const HB_PAINT_COMPOSITE_MODE_XOR: hb_paint_composite_mode_t = 11; +pub const HB_PAINT_COMPOSITE_MODE_PLUS: hb_paint_composite_mode_t = 12; +pub const HB_PAINT_COMPOSITE_MODE_SCREEN: hb_paint_composite_mode_t = 13; +pub const HB_PAINT_COMPOSITE_MODE_OVERLAY: hb_paint_composite_mode_t = 14; +pub const HB_PAINT_COMPOSITE_MODE_DARKEN: hb_paint_composite_mode_t = 15; +pub const HB_PAINT_COMPOSITE_MODE_LIGHTEN: hb_paint_composite_mode_t = 16; +pub const HB_PAINT_COMPOSITE_MODE_COLOR_DODGE: hb_paint_composite_mode_t = 17; +pub const HB_PAINT_COMPOSITE_MODE_COLOR_BURN: hb_paint_composite_mode_t = 18; +pub const HB_PAINT_COMPOSITE_MODE_HARD_LIGHT: hb_paint_composite_mode_t = 19; +pub const HB_PAINT_COMPOSITE_MODE_SOFT_LIGHT: hb_paint_composite_mode_t = 20; +pub const HB_PAINT_COMPOSITE_MODE_DIFFERENCE: hb_paint_composite_mode_t = 21; +pub const HB_PAINT_COMPOSITE_MODE_EXCLUSION: hb_paint_composite_mode_t = 22; +pub const HB_PAINT_COMPOSITE_MODE_MULTIPLY: hb_paint_composite_mode_t = 23; +pub const HB_PAINT_COMPOSITE_MODE_HSL_HUE: hb_paint_composite_mode_t = 24; +pub const HB_PAINT_COMPOSITE_MODE_HSL_SATURATION: hb_paint_composite_mode_t = 25; +pub const HB_PAINT_COMPOSITE_MODE_HSL_COLOR: hb_paint_composite_mode_t = 26; +pub const HB_PAINT_COMPOSITE_MODE_HSL_LUMINOSITY: hb_paint_composite_mode_t = 27; #[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"] pub type hb_paint_composite_mode_t = ::std::os::raw::c_uint; #[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"] @@ -3850,141 +2014,35 @@ pub struct hb_font_extents_t { pub reserved2: hb_position_t, pub reserved1: hb_position_t, } -#[test] -fn bindgen_test_layout_hb_font_extents_t() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 48usize, - concat!("Size of: ", stringify!(hb_font_extents_t)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(hb_font_extents_t)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ascender) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(hb_font_extents_t), - "::", - stringify!(ascender) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).descender) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(hb_font_extents_t), - "::", - stringify!(descender) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).line_gap) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(hb_font_extents_t), - "::", - stringify!(line_gap) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).reserved9) as usize - ptr as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(hb_font_extents_t), - "::", - stringify!(reserved9) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).reserved8) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(hb_font_extents_t), - "::", - stringify!(reserved8) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).reserved7) as usize - ptr as usize }, - 20usize, - concat!( - "Offset of field: ", - stringify!(hb_font_extents_t), - "::", - stringify!(reserved7) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).reserved6) as usize - ptr as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(hb_font_extents_t), - "::", - stringify!(reserved6) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).reserved5) as usize - ptr as usize }, - 28usize, - concat!( - "Offset of field: ", - stringify!(hb_font_extents_t), - "::", - stringify!(reserved5) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).reserved4) as usize - ptr as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(hb_font_extents_t), - "::", - stringify!(reserved4) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).reserved3) as usize - ptr as usize }, - 36usize, - concat!( - "Offset of field: ", - stringify!(hb_font_extents_t), - "::", - stringify!(reserved3) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).reserved2) as usize - ptr as usize }, - 40usize, - concat!( - "Offset of field: ", - stringify!(hb_font_extents_t), - "::", - stringify!(reserved2) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).reserved1) as usize - ptr as usize }, - 44usize, - concat!( - "Offset of field: ", - stringify!(hb_font_extents_t), - "::", - stringify!(reserved1) - ) - ); -} +#[allow(clippy::unnecessary_operation, clippy::identity_op)] +const _: () = { + ["Size of hb_font_extents_t"][::std::mem::size_of::() - 48usize]; + ["Alignment of hb_font_extents_t"][::std::mem::align_of::() - 4usize]; + ["Offset of field: hb_font_extents_t::ascender"] + [::std::mem::offset_of!(hb_font_extents_t, ascender) - 0usize]; + ["Offset of field: hb_font_extents_t::descender"] + [::std::mem::offset_of!(hb_font_extents_t, descender) - 4usize]; + ["Offset of field: hb_font_extents_t::line_gap"] + [::std::mem::offset_of!(hb_font_extents_t, line_gap) - 8usize]; + ["Offset of field: hb_font_extents_t::reserved9"] + [::std::mem::offset_of!(hb_font_extents_t, reserved9) - 12usize]; + ["Offset of field: hb_font_extents_t::reserved8"] + [::std::mem::offset_of!(hb_font_extents_t, reserved8) - 16usize]; + ["Offset of field: hb_font_extents_t::reserved7"] + [::std::mem::offset_of!(hb_font_extents_t, reserved7) - 20usize]; + ["Offset of field: hb_font_extents_t::reserved6"] + [::std::mem::offset_of!(hb_font_extents_t, reserved6) - 24usize]; + ["Offset of field: hb_font_extents_t::reserved5"] + [::std::mem::offset_of!(hb_font_extents_t, reserved5) - 28usize]; + ["Offset of field: hb_font_extents_t::reserved4"] + [::std::mem::offset_of!(hb_font_extents_t, reserved4) - 32usize]; + ["Offset of field: hb_font_extents_t::reserved3"] + [::std::mem::offset_of!(hb_font_extents_t, reserved3) - 36usize]; + ["Offset of field: hb_font_extents_t::reserved2"] + [::std::mem::offset_of!(hb_font_extents_t, reserved2) - 40usize]; + ["Offset of field: hb_font_extents_t::reserved1"] + [::std::mem::offset_of!(hb_font_extents_t, reserved1) - 44usize]; +}; #[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"] pub type hb_font_get_font_extents_func_t = ::std::option::Option< unsafe extern "C" fn( @@ -4747,75 +2805,25 @@ pub struct hb_glyph_info_t { pub var1: hb_var_int_t, pub var2: hb_var_int_t, } -#[test] -fn bindgen_test_layout_hb_glyph_info_t() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 20usize, - concat!("Size of: ", stringify!(hb_glyph_info_t)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(hb_glyph_info_t)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).codepoint) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(hb_glyph_info_t), - "::", - stringify!(codepoint) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).mask) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(hb_glyph_info_t), - "::", - stringify!(mask) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).cluster) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(hb_glyph_info_t), - "::", - stringify!(cluster) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).var1) as usize - ptr as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(hb_glyph_info_t), - "::", - stringify!(var1) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).var2) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(hb_glyph_info_t), - "::", - stringify!(var2) - ) - ); -} -pub const hb_glyph_flags_t_HB_GLYPH_FLAG_UNSAFE_TO_BREAK: hb_glyph_flags_t = 1; -pub const hb_glyph_flags_t_HB_GLYPH_FLAG_UNSAFE_TO_CONCAT: hb_glyph_flags_t = 2; -pub const hb_glyph_flags_t_HB_GLYPH_FLAG_SAFE_TO_INSERT_TATWEEL: hb_glyph_flags_t = 4; -pub const hb_glyph_flags_t_HB_GLYPH_FLAG_DEFINED: hb_glyph_flags_t = 7; +#[allow(clippy::unnecessary_operation, clippy::identity_op)] +const _: () = { + ["Size of hb_glyph_info_t"][::std::mem::size_of::() - 20usize]; + ["Alignment of hb_glyph_info_t"][::std::mem::align_of::() - 4usize]; + ["Offset of field: hb_glyph_info_t::codepoint"] + [::std::mem::offset_of!(hb_glyph_info_t, codepoint) - 0usize]; + ["Offset of field: hb_glyph_info_t::mask"] + [::std::mem::offset_of!(hb_glyph_info_t, mask) - 4usize]; + ["Offset of field: hb_glyph_info_t::cluster"] + [::std::mem::offset_of!(hb_glyph_info_t, cluster) - 8usize]; + ["Offset of field: hb_glyph_info_t::var1"] + [::std::mem::offset_of!(hb_glyph_info_t, var1) - 12usize]; + ["Offset of field: hb_glyph_info_t::var2"] + [::std::mem::offset_of!(hb_glyph_info_t, var2) - 16usize]; +}; +pub const HB_GLYPH_FLAG_UNSAFE_TO_BREAK: hb_glyph_flags_t = 1; +pub const HB_GLYPH_FLAG_UNSAFE_TO_CONCAT: hb_glyph_flags_t = 2; +pub const HB_GLYPH_FLAG_SAFE_TO_INSERT_TATWEEL: hb_glyph_flags_t = 4; +pub const HB_GLYPH_FLAG_DEFINED: hb_glyph_flags_t = 7; #[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"] pub type hb_glyph_flags_t = ::std::os::raw::c_uint; extern "C" { @@ -4831,71 +2839,21 @@ pub struct hb_glyph_position_t { pub y_offset: hb_position_t, pub var: hb_var_int_t, } -#[test] -fn bindgen_test_layout_hb_glyph_position_t() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 20usize, - concat!("Size of: ", stringify!(hb_glyph_position_t)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(hb_glyph_position_t)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).x_advance) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(hb_glyph_position_t), - "::", - stringify!(x_advance) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).y_advance) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(hb_glyph_position_t), - "::", - stringify!(y_advance) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).x_offset) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(hb_glyph_position_t), - "::", - stringify!(x_offset) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).y_offset) as usize - ptr as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(hb_glyph_position_t), - "::", - stringify!(y_offset) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).var) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(hb_glyph_position_t), - "::", - stringify!(var) - ) - ); -} +#[allow(clippy::unnecessary_operation, clippy::identity_op)] +const _: () = { + ["Size of hb_glyph_position_t"][::std::mem::size_of::() - 20usize]; + ["Alignment of hb_glyph_position_t"][::std::mem::align_of::() - 4usize]; + ["Offset of field: hb_glyph_position_t::x_advance"] + [::std::mem::offset_of!(hb_glyph_position_t, x_advance) - 0usize]; + ["Offset of field: hb_glyph_position_t::y_advance"] + [::std::mem::offset_of!(hb_glyph_position_t, y_advance) - 4usize]; + ["Offset of field: hb_glyph_position_t::x_offset"] + [::std::mem::offset_of!(hb_glyph_position_t, x_offset) - 8usize]; + ["Offset of field: hb_glyph_position_t::y_offset"] + [::std::mem::offset_of!(hb_glyph_position_t, y_offset) - 12usize]; + ["Offset of field: hb_glyph_position_t::var"] + [::std::mem::offset_of!(hb_glyph_position_t, var) - 16usize]; +}; #[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."] #[repr(C)] #[derive(Debug, Copy, Clone)] @@ -4906,72 +2864,22 @@ pub struct hb_segment_properties_t { pub reserved1: *mut ::std::os::raw::c_void, pub reserved2: *mut ::std::os::raw::c_void, } -#[test] -fn bindgen_test_layout_hb_segment_properties_t() { - const UNINIT: ::std::mem::MaybeUninit = - ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 32usize, - concat!("Size of: ", stringify!(hb_segment_properties_t)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(hb_segment_properties_t)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).direction) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(hb_segment_properties_t), - "::", - stringify!(direction) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).script) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(hb_segment_properties_t), - "::", - stringify!(script) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).language) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(hb_segment_properties_t), - "::", - stringify!(language) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).reserved1) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(hb_segment_properties_t), - "::", - stringify!(reserved1) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).reserved2) as usize - ptr as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(hb_segment_properties_t), - "::", - stringify!(reserved2) - ) - ); -} +#[allow(clippy::unnecessary_operation, clippy::identity_op)] +const _: () = { + ["Size of hb_segment_properties_t"][::std::mem::size_of::() - 32usize]; + ["Alignment of hb_segment_properties_t"] + [::std::mem::align_of::() - 8usize]; + ["Offset of field: hb_segment_properties_t::direction"] + [::std::mem::offset_of!(hb_segment_properties_t, direction) - 0usize]; + ["Offset of field: hb_segment_properties_t::script"] + [::std::mem::offset_of!(hb_segment_properties_t, script) - 4usize]; + ["Offset of field: hb_segment_properties_t::language"] + [::std::mem::offset_of!(hb_segment_properties_t, language) - 8usize]; + ["Offset of field: hb_segment_properties_t::reserved1"] + [::std::mem::offset_of!(hb_segment_properties_t, reserved1) - 16usize]; + ["Offset of field: hb_segment_properties_t::reserved2"] + [::std::mem::offset_of!(hb_segment_properties_t, reserved2) - 24usize]; +}; extern "C" { pub fn hb_segment_properties_equal( a: *const hb_segment_properties_t, @@ -5025,9 +2933,9 @@ extern "C" { key: *mut hb_user_data_key_t, ) -> *mut ::std::os::raw::c_void; } -pub const hb_buffer_content_type_t_HB_BUFFER_CONTENT_TYPE_INVALID: hb_buffer_content_type_t = 0; -pub const hb_buffer_content_type_t_HB_BUFFER_CONTENT_TYPE_UNICODE: hb_buffer_content_type_t = 1; -pub const hb_buffer_content_type_t_HB_BUFFER_CONTENT_TYPE_GLYPHS: hb_buffer_content_type_t = 2; +pub const HB_BUFFER_CONTENT_TYPE_INVALID: hb_buffer_content_type_t = 0; +pub const HB_BUFFER_CONTENT_TYPE_UNICODE: hb_buffer_content_type_t = 1; +pub const HB_BUFFER_CONTENT_TYPE_GLYPHS: hb_buffer_content_type_t = 2; #[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."] pub type hb_buffer_content_type_t = ::std::os::raw::c_uint; extern "C" { @@ -5081,16 +2989,16 @@ extern "C" { extern "C" { pub fn hb_buffer_guess_segment_properties(buffer: *mut hb_buffer_t); } -pub const hb_buffer_flags_t_HB_BUFFER_FLAG_DEFAULT: hb_buffer_flags_t = 0; -pub const hb_buffer_flags_t_HB_BUFFER_FLAG_BOT: hb_buffer_flags_t = 1; -pub const hb_buffer_flags_t_HB_BUFFER_FLAG_EOT: hb_buffer_flags_t = 2; -pub const hb_buffer_flags_t_HB_BUFFER_FLAG_PRESERVE_DEFAULT_IGNORABLES: hb_buffer_flags_t = 4; -pub const hb_buffer_flags_t_HB_BUFFER_FLAG_REMOVE_DEFAULT_IGNORABLES: hb_buffer_flags_t = 8; -pub const hb_buffer_flags_t_HB_BUFFER_FLAG_DO_NOT_INSERT_DOTTED_CIRCLE: hb_buffer_flags_t = 16; -pub const hb_buffer_flags_t_HB_BUFFER_FLAG_VERIFY: hb_buffer_flags_t = 32; -pub const hb_buffer_flags_t_HB_BUFFER_FLAG_PRODUCE_UNSAFE_TO_CONCAT: hb_buffer_flags_t = 64; -pub const hb_buffer_flags_t_HB_BUFFER_FLAG_PRODUCE_SAFE_TO_INSERT_TATWEEL: hb_buffer_flags_t = 128; -pub const hb_buffer_flags_t_HB_BUFFER_FLAG_DEFINED: hb_buffer_flags_t = 255; +pub const HB_BUFFER_FLAG_DEFAULT: hb_buffer_flags_t = 0; +pub const HB_BUFFER_FLAG_BOT: hb_buffer_flags_t = 1; +pub const HB_BUFFER_FLAG_EOT: hb_buffer_flags_t = 2; +pub const HB_BUFFER_FLAG_PRESERVE_DEFAULT_IGNORABLES: hb_buffer_flags_t = 4; +pub const HB_BUFFER_FLAG_REMOVE_DEFAULT_IGNORABLES: hb_buffer_flags_t = 8; +pub const HB_BUFFER_FLAG_DO_NOT_INSERT_DOTTED_CIRCLE: hb_buffer_flags_t = 16; +pub const HB_BUFFER_FLAG_VERIFY: hb_buffer_flags_t = 32; +pub const HB_BUFFER_FLAG_PRODUCE_UNSAFE_TO_CONCAT: hb_buffer_flags_t = 64; +pub const HB_BUFFER_FLAG_PRODUCE_SAFE_TO_INSERT_TATWEEL: hb_buffer_flags_t = 128; +pub const HB_BUFFER_FLAG_DEFINED: hb_buffer_flags_t = 255; #[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"] pub type hb_buffer_flags_t = ::std::os::raw::c_uint; extern "C" { @@ -5099,13 +3007,10 @@ extern "C" { extern "C" { pub fn hb_buffer_get_flags(buffer: *const hb_buffer_t) -> hb_buffer_flags_t; } -pub const hb_buffer_cluster_level_t_HB_BUFFER_CLUSTER_LEVEL_MONOTONE_GRAPHEMES: - hb_buffer_cluster_level_t = 0; -pub const hb_buffer_cluster_level_t_HB_BUFFER_CLUSTER_LEVEL_MONOTONE_CHARACTERS: - hb_buffer_cluster_level_t = 1; -pub const hb_buffer_cluster_level_t_HB_BUFFER_CLUSTER_LEVEL_CHARACTERS: hb_buffer_cluster_level_t = - 2; -pub const hb_buffer_cluster_level_t_HB_BUFFER_CLUSTER_LEVEL_DEFAULT: hb_buffer_cluster_level_t = 0; +pub const HB_BUFFER_CLUSTER_LEVEL_MONOTONE_GRAPHEMES: hb_buffer_cluster_level_t = 0; +pub const HB_BUFFER_CLUSTER_LEVEL_MONOTONE_CHARACTERS: hb_buffer_cluster_level_t = 1; +pub const HB_BUFFER_CLUSTER_LEVEL_CHARACTERS: hb_buffer_cluster_level_t = 2; +pub const HB_BUFFER_CLUSTER_LEVEL_DEFAULT: hb_buffer_cluster_level_t = 0; #[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"] pub type hb_buffer_cluster_level_t = ::std::os::raw::c_uint; extern "C" { @@ -5138,6 +3043,17 @@ extern "C" { extern "C" { pub fn hb_buffer_get_not_found_glyph(buffer: *const hb_buffer_t) -> hb_codepoint_t; } +extern "C" { + pub fn hb_buffer_set_not_found_variation_selector_glyph( + buffer: *mut hb_buffer_t, + not_found_variation_selector: hb_codepoint_t, + ); +} +extern "C" { + pub fn hb_buffer_get_not_found_variation_selector_glyph( + buffer: *const hb_buffer_t, + ) -> hb_codepoint_t; +} extern "C" { pub fn hb_buffer_set_random_state(buffer: *mut hb_buffer_t, state: ::std::os::raw::c_uint); } @@ -5256,30 +3172,19 @@ extern "C" { extern "C" { pub fn hb_buffer_normalize_glyphs(buffer: *mut hb_buffer_t); } -pub const hb_buffer_serialize_flags_t_HB_BUFFER_SERIALIZE_FLAG_DEFAULT: - hb_buffer_serialize_flags_t = 0; -pub const hb_buffer_serialize_flags_t_HB_BUFFER_SERIALIZE_FLAG_NO_CLUSTERS: - hb_buffer_serialize_flags_t = 1; -pub const hb_buffer_serialize_flags_t_HB_BUFFER_SERIALIZE_FLAG_NO_POSITIONS: - hb_buffer_serialize_flags_t = 2; -pub const hb_buffer_serialize_flags_t_HB_BUFFER_SERIALIZE_FLAG_NO_GLYPH_NAMES: - hb_buffer_serialize_flags_t = 4; -pub const hb_buffer_serialize_flags_t_HB_BUFFER_SERIALIZE_FLAG_GLYPH_EXTENTS: - hb_buffer_serialize_flags_t = 8; -pub const hb_buffer_serialize_flags_t_HB_BUFFER_SERIALIZE_FLAG_GLYPH_FLAGS: - hb_buffer_serialize_flags_t = 16; -pub const hb_buffer_serialize_flags_t_HB_BUFFER_SERIALIZE_FLAG_NO_ADVANCES: - hb_buffer_serialize_flags_t = 32; -pub const hb_buffer_serialize_flags_t_HB_BUFFER_SERIALIZE_FLAG_DEFINED: - hb_buffer_serialize_flags_t = 63; +pub const HB_BUFFER_SERIALIZE_FLAG_DEFAULT: hb_buffer_serialize_flags_t = 0; +pub const HB_BUFFER_SERIALIZE_FLAG_NO_CLUSTERS: hb_buffer_serialize_flags_t = 1; +pub const HB_BUFFER_SERIALIZE_FLAG_NO_POSITIONS: hb_buffer_serialize_flags_t = 2; +pub const HB_BUFFER_SERIALIZE_FLAG_NO_GLYPH_NAMES: hb_buffer_serialize_flags_t = 4; +pub const HB_BUFFER_SERIALIZE_FLAG_GLYPH_EXTENTS: hb_buffer_serialize_flags_t = 8; +pub const HB_BUFFER_SERIALIZE_FLAG_GLYPH_FLAGS: hb_buffer_serialize_flags_t = 16; +pub const HB_BUFFER_SERIALIZE_FLAG_NO_ADVANCES: hb_buffer_serialize_flags_t = 32; +pub const HB_BUFFER_SERIALIZE_FLAG_DEFINED: hb_buffer_serialize_flags_t = 63; #[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"] pub type hb_buffer_serialize_flags_t = ::std::os::raw::c_uint; -pub const hb_buffer_serialize_format_t_HB_BUFFER_SERIALIZE_FORMAT_TEXT: - hb_buffer_serialize_format_t = 1413830740; -pub const hb_buffer_serialize_format_t_HB_BUFFER_SERIALIZE_FORMAT_JSON: - hb_buffer_serialize_format_t = 1246973774; -pub const hb_buffer_serialize_format_t_HB_BUFFER_SERIALIZE_FORMAT_INVALID: - hb_buffer_serialize_format_t = 0; +pub const HB_BUFFER_SERIALIZE_FORMAT_TEXT: hb_buffer_serialize_format_t = 1413830740; +pub const HB_BUFFER_SERIALIZE_FORMAT_JSON: hb_buffer_serialize_format_t = 1246973774; +pub const HB_BUFFER_SERIALIZE_FORMAT_INVALID: hb_buffer_serialize_format_t = 0; #[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"] pub type hb_buffer_serialize_format_t = ::std::os::raw::c_uint; extern "C" { @@ -5353,20 +3258,15 @@ extern "C" { format: hb_buffer_serialize_format_t, ) -> hb_bool_t; } -pub const hb_buffer_diff_flags_t_HB_BUFFER_DIFF_FLAG_EQUAL: hb_buffer_diff_flags_t = 0; -pub const hb_buffer_diff_flags_t_HB_BUFFER_DIFF_FLAG_CONTENT_TYPE_MISMATCH: hb_buffer_diff_flags_t = - 1; -pub const hb_buffer_diff_flags_t_HB_BUFFER_DIFF_FLAG_LENGTH_MISMATCH: hb_buffer_diff_flags_t = 2; -pub const hb_buffer_diff_flags_t_HB_BUFFER_DIFF_FLAG_NOTDEF_PRESENT: hb_buffer_diff_flags_t = 4; -pub const hb_buffer_diff_flags_t_HB_BUFFER_DIFF_FLAG_DOTTED_CIRCLE_PRESENT: hb_buffer_diff_flags_t = - 8; -pub const hb_buffer_diff_flags_t_HB_BUFFER_DIFF_FLAG_CODEPOINT_MISMATCH: hb_buffer_diff_flags_t = - 16; -pub const hb_buffer_diff_flags_t_HB_BUFFER_DIFF_FLAG_CLUSTER_MISMATCH: hb_buffer_diff_flags_t = 32; -pub const hb_buffer_diff_flags_t_HB_BUFFER_DIFF_FLAG_GLYPH_FLAGS_MISMATCH: hb_buffer_diff_flags_t = - 64; -pub const hb_buffer_diff_flags_t_HB_BUFFER_DIFF_FLAG_POSITION_MISMATCH: hb_buffer_diff_flags_t = - 128; +pub const HB_BUFFER_DIFF_FLAG_EQUAL: hb_buffer_diff_flags_t = 0; +pub const HB_BUFFER_DIFF_FLAG_CONTENT_TYPE_MISMATCH: hb_buffer_diff_flags_t = 1; +pub const HB_BUFFER_DIFF_FLAG_LENGTH_MISMATCH: hb_buffer_diff_flags_t = 2; +pub const HB_BUFFER_DIFF_FLAG_NOTDEF_PRESENT: hb_buffer_diff_flags_t = 4; +pub const HB_BUFFER_DIFF_FLAG_DOTTED_CIRCLE_PRESENT: hb_buffer_diff_flags_t = 8; +pub const HB_BUFFER_DIFF_FLAG_CODEPOINT_MISMATCH: hb_buffer_diff_flags_t = 16; +pub const HB_BUFFER_DIFF_FLAG_CLUSTER_MISMATCH: hb_buffer_diff_flags_t = 32; +pub const HB_BUFFER_DIFF_FLAG_GLYPH_FLAGS_MISMATCH: hb_buffer_diff_flags_t = 64; +pub const HB_BUFFER_DIFF_FLAG_POSITION_MISMATCH: hb_buffer_diff_flags_t = 128; #[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"] pub type hb_buffer_diff_flags_t = ::std::os::raw::c_uint; extern "C" { @@ -5625,13 +3525,13 @@ extern "C" { shape_plan: *mut hb_shape_plan_t, ) -> *const ::std::os::raw::c_char; } -pub const hb_style_tag_t_HB_STYLE_TAG_ITALIC: hb_style_tag_t = 1769234796; -pub const hb_style_tag_t_HB_STYLE_TAG_OPTICAL_SIZE: hb_style_tag_t = 1869640570; -pub const hb_style_tag_t_HB_STYLE_TAG_SLANT_ANGLE: hb_style_tag_t = 1936486004; -pub const hb_style_tag_t_HB_STYLE_TAG_SLANT_RATIO: hb_style_tag_t = 1399615092; -pub const hb_style_tag_t_HB_STYLE_TAG_WIDTH: hb_style_tag_t = 2003072104; -pub const hb_style_tag_t_HB_STYLE_TAG_WEIGHT: hb_style_tag_t = 2003265652; -pub const hb_style_tag_t__HB_STYLE_TAG_MAX_VALUE: hb_style_tag_t = 2147483647; +pub const HB_STYLE_TAG_ITALIC: hb_style_tag_t = 1769234796; +pub const HB_STYLE_TAG_OPTICAL_SIZE: hb_style_tag_t = 1869640570; +pub const HB_STYLE_TAG_SLANT_ANGLE: hb_style_tag_t = 1936486004; +pub const HB_STYLE_TAG_SLANT_RATIO: hb_style_tag_t = 1399615092; +pub const HB_STYLE_TAG_WIDTH: hb_style_tag_t = 2003072104; +pub const HB_STYLE_TAG_WEIGHT: hb_style_tag_t = 2003265652; +pub const _HB_STYLE_TAG_MAX_VALUE: hb_style_tag_t = 2147483647; #[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"] pub type hb_style_tag_t = ::std::os::raw::c_uint; extern "C" { @@ -5654,4 +3554,1548 @@ extern "C" { micro: ::std::os::raw::c_uint, ) -> hb_bool_t; } -pub type __builtin_va_list = *mut ::std::os::raw::c_char; +pub const HB_OT_NAME_ID_COPYRIGHT: hb_ot_name_id_predefined_t = 0; +pub const HB_OT_NAME_ID_FONT_FAMILY: hb_ot_name_id_predefined_t = 1; +pub const HB_OT_NAME_ID_FONT_SUBFAMILY: hb_ot_name_id_predefined_t = 2; +pub const HB_OT_NAME_ID_UNIQUE_ID: hb_ot_name_id_predefined_t = 3; +pub const HB_OT_NAME_ID_FULL_NAME: hb_ot_name_id_predefined_t = 4; +pub const HB_OT_NAME_ID_VERSION_STRING: hb_ot_name_id_predefined_t = 5; +pub const HB_OT_NAME_ID_POSTSCRIPT_NAME: hb_ot_name_id_predefined_t = 6; +pub const HB_OT_NAME_ID_TRADEMARK: hb_ot_name_id_predefined_t = 7; +pub const HB_OT_NAME_ID_MANUFACTURER: hb_ot_name_id_predefined_t = 8; +pub const HB_OT_NAME_ID_DESIGNER: hb_ot_name_id_predefined_t = 9; +pub const HB_OT_NAME_ID_DESCRIPTION: hb_ot_name_id_predefined_t = 10; +pub const HB_OT_NAME_ID_VENDOR_URL: hb_ot_name_id_predefined_t = 11; +pub const HB_OT_NAME_ID_DESIGNER_URL: hb_ot_name_id_predefined_t = 12; +pub const HB_OT_NAME_ID_LICENSE: hb_ot_name_id_predefined_t = 13; +pub const HB_OT_NAME_ID_LICENSE_URL: hb_ot_name_id_predefined_t = 14; +pub const HB_OT_NAME_ID_TYPOGRAPHIC_FAMILY: hb_ot_name_id_predefined_t = 16; +pub const HB_OT_NAME_ID_TYPOGRAPHIC_SUBFAMILY: hb_ot_name_id_predefined_t = 17; +pub const HB_OT_NAME_ID_MAC_FULL_NAME: hb_ot_name_id_predefined_t = 18; +pub const HB_OT_NAME_ID_SAMPLE_TEXT: hb_ot_name_id_predefined_t = 19; +pub const HB_OT_NAME_ID_CID_FINDFONT_NAME: hb_ot_name_id_predefined_t = 20; +pub const HB_OT_NAME_ID_WWS_FAMILY: hb_ot_name_id_predefined_t = 21; +pub const HB_OT_NAME_ID_WWS_SUBFAMILY: hb_ot_name_id_predefined_t = 22; +pub const HB_OT_NAME_ID_LIGHT_BACKGROUND: hb_ot_name_id_predefined_t = 23; +pub const HB_OT_NAME_ID_DARK_BACKGROUND: hb_ot_name_id_predefined_t = 24; +pub const HB_OT_NAME_ID_VARIATIONS_PS_PREFIX: hb_ot_name_id_predefined_t = 25; +pub const HB_OT_NAME_ID_INVALID: hb_ot_name_id_predefined_t = 65535; +#[doc = " hb_ot_name_id_predefined_t:\n @HB_OT_NAME_ID_COPYRIGHT: Copyright notice\n @HB_OT_NAME_ID_FONT_FAMILY: Font Family name\n @HB_OT_NAME_ID_FONT_SUBFAMILY: Font Subfamily name\n @HB_OT_NAME_ID_UNIQUE_ID: Unique font identifier\n @HB_OT_NAME_ID_FULL_NAME: Full font name that reflects\n all family and relevant subfamily descriptors\n @HB_OT_NAME_ID_VERSION_STRING: Version string\n @HB_OT_NAME_ID_POSTSCRIPT_NAME: PostScript name for the font\n @HB_OT_NAME_ID_TRADEMARK: Trademark\n @HB_OT_NAME_ID_MANUFACTURER: Manufacturer Name\n @HB_OT_NAME_ID_DESIGNER: Designer\n @HB_OT_NAME_ID_DESCRIPTION: Description\n @HB_OT_NAME_ID_VENDOR_URL: URL of font vendor\n @HB_OT_NAME_ID_DESIGNER_URL: URL of typeface designer\n @HB_OT_NAME_ID_LICENSE: License Description\n @HB_OT_NAME_ID_LICENSE_URL: URL where additional licensing\n information can be found\n @HB_OT_NAME_ID_TYPOGRAPHIC_FAMILY: Typographic Family name\n @HB_OT_NAME_ID_TYPOGRAPHIC_SUBFAMILY: Typographic Subfamily name\n @HB_OT_NAME_ID_MAC_FULL_NAME: Compatible Full Name for MacOS\n @HB_OT_NAME_ID_SAMPLE_TEXT: Sample text\n @HB_OT_NAME_ID_CID_FINDFONT_NAME: PostScript CID findfont name\n @HB_OT_NAME_ID_WWS_FAMILY: WWS Family Name\n @HB_OT_NAME_ID_WWS_SUBFAMILY: WWS Subfamily Name\n @HB_OT_NAME_ID_LIGHT_BACKGROUND: Light Background Palette\n @HB_OT_NAME_ID_DARK_BACKGROUND: Dark Background Palette\n @HB_OT_NAME_ID_VARIATIONS_PS_PREFIX: Variations PostScript Name Prefix\n @HB_OT_NAME_ID_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"] +pub type hb_ot_name_id_predefined_t = ::std::os::raw::c_uint; +#[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"] +pub type hb_ot_name_id_t = ::std::os::raw::c_uint; +#[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"] +#[repr(C)] +#[derive(Copy, Clone)] +pub struct hb_ot_name_entry_t { + pub name_id: hb_ot_name_id_t, + pub var: hb_var_int_t, + pub language: hb_language_t, +} +#[allow(clippy::unnecessary_operation, clippy::identity_op)] +const _: () = { + ["Size of hb_ot_name_entry_t"][::std::mem::size_of::() - 16usize]; + ["Alignment of hb_ot_name_entry_t"][::std::mem::align_of::() - 8usize]; + ["Offset of field: hb_ot_name_entry_t::name_id"] + [::std::mem::offset_of!(hb_ot_name_entry_t, name_id) - 0usize]; + ["Offset of field: hb_ot_name_entry_t::var"] + [::std::mem::offset_of!(hb_ot_name_entry_t, var) - 4usize]; + ["Offset of field: hb_ot_name_entry_t::language"] + [::std::mem::offset_of!(hb_ot_name_entry_t, language) - 8usize]; +}; +extern "C" { + pub fn hb_ot_name_list_names( + face: *mut hb_face_t, + num_entries: *mut ::std::os::raw::c_uint, + ) -> *const hb_ot_name_entry_t; +} +extern "C" { + pub fn hb_ot_name_get_utf8( + face: *mut hb_face_t, + name_id: hb_ot_name_id_t, + language: hb_language_t, + text_size: *mut ::std::os::raw::c_uint, + text: *mut ::std::os::raw::c_char, + ) -> ::std::os::raw::c_uint; +} +extern "C" { + pub fn hb_ot_name_get_utf16( + face: *mut hb_face_t, + name_id: hb_ot_name_id_t, + language: hb_language_t, + text_size: *mut ::std::os::raw::c_uint, + text: *mut u16, + ) -> ::std::os::raw::c_uint; +} +extern "C" { + pub fn hb_ot_name_get_utf32( + face: *mut hb_face_t, + name_id: hb_ot_name_id_t, + language: hb_language_t, + text_size: *mut ::std::os::raw::c_uint, + text: *mut u32, + ) -> ::std::os::raw::c_uint; +} +extern "C" { + pub fn hb_ot_color_has_palettes(face: *mut hb_face_t) -> hb_bool_t; +} +extern "C" { + pub fn hb_ot_color_palette_get_count(face: *mut hb_face_t) -> ::std::os::raw::c_uint; +} +extern "C" { + pub fn hb_ot_color_palette_get_name_id( + face: *mut hb_face_t, + palette_index: ::std::os::raw::c_uint, + ) -> hb_ot_name_id_t; +} +extern "C" { + pub fn hb_ot_color_palette_color_get_name_id( + face: *mut hb_face_t, + color_index: ::std::os::raw::c_uint, + ) -> hb_ot_name_id_t; +} +pub const HB_OT_COLOR_PALETTE_FLAG_DEFAULT: hb_ot_color_palette_flags_t = 0; +pub const HB_OT_COLOR_PALETTE_FLAG_USABLE_WITH_LIGHT_BACKGROUND: hb_ot_color_palette_flags_t = 1; +pub const HB_OT_COLOR_PALETTE_FLAG_USABLE_WITH_DARK_BACKGROUND: hb_ot_color_palette_flags_t = 2; +#[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"] +pub type hb_ot_color_palette_flags_t = ::std::os::raw::c_uint; +extern "C" { + pub fn hb_ot_color_palette_get_flags( + face: *mut hb_face_t, + palette_index: ::std::os::raw::c_uint, + ) -> hb_ot_color_palette_flags_t; +} +extern "C" { + pub fn hb_ot_color_palette_get_colors( + face: *mut hb_face_t, + palette_index: ::std::os::raw::c_uint, + start_offset: ::std::os::raw::c_uint, + color_count: *mut ::std::os::raw::c_uint, + colors: *mut hb_color_t, + ) -> ::std::os::raw::c_uint; +} +extern "C" { + pub fn hb_ot_color_has_layers(face: *mut hb_face_t) -> hb_bool_t; +} +#[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"] +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct hb_ot_color_layer_t { + pub glyph: hb_codepoint_t, + pub color_index: ::std::os::raw::c_uint, +} +#[allow(clippy::unnecessary_operation, clippy::identity_op)] +const _: () = { + ["Size of hb_ot_color_layer_t"][::std::mem::size_of::() - 8usize]; + ["Alignment of hb_ot_color_layer_t"][::std::mem::align_of::() - 4usize]; + ["Offset of field: hb_ot_color_layer_t::glyph"] + [::std::mem::offset_of!(hb_ot_color_layer_t, glyph) - 0usize]; + ["Offset of field: hb_ot_color_layer_t::color_index"] + [::std::mem::offset_of!(hb_ot_color_layer_t, color_index) - 4usize]; +}; +extern "C" { + pub fn hb_ot_color_glyph_get_layers( + face: *mut hb_face_t, + glyph: hb_codepoint_t, + start_offset: ::std::os::raw::c_uint, + layer_count: *mut ::std::os::raw::c_uint, + layers: *mut hb_ot_color_layer_t, + ) -> ::std::os::raw::c_uint; +} +extern "C" { + pub fn hb_ot_color_has_paint(face: *mut hb_face_t) -> hb_bool_t; +} +extern "C" { + pub fn hb_ot_color_glyph_has_paint(face: *mut hb_face_t, glyph: hb_codepoint_t) -> hb_bool_t; +} +extern "C" { + pub fn hb_ot_color_has_svg(face: *mut hb_face_t) -> hb_bool_t; +} +extern "C" { + pub fn hb_ot_color_glyph_reference_svg( + face: *mut hb_face_t, + glyph: hb_codepoint_t, + ) -> *mut hb_blob_t; +} +extern "C" { + pub fn hb_ot_color_has_png(face: *mut hb_face_t) -> hb_bool_t; +} +extern "C" { + pub fn hb_ot_color_glyph_reference_png( + font: *mut hb_font_t, + glyph: hb_codepoint_t, + ) -> *mut hb_blob_t; +} +extern "C" { + pub fn hb_ot_layout_table_choose_script( + face: *mut hb_face_t, + table_tag: hb_tag_t, + script_tags: *const hb_tag_t, + script_index: *mut ::std::os::raw::c_uint, + chosen_script: *mut hb_tag_t, + ) -> hb_bool_t; +} +extern "C" { + pub fn hb_ot_layout_script_find_language( + face: *mut hb_face_t, + table_tag: hb_tag_t, + script_index: ::std::os::raw::c_uint, + language_tag: hb_tag_t, + language_index: *mut ::std::os::raw::c_uint, + ) -> hb_bool_t; +} +extern "C" { + pub fn hb_ot_tags_from_script( + script: hb_script_t, + script_tag_1: *mut hb_tag_t, + script_tag_2: *mut hb_tag_t, + ); +} +extern "C" { + pub fn hb_ot_tag_from_language(language: hb_language_t) -> hb_tag_t; +} +#[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"] +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct hb_ot_var_axis_t { + pub tag: hb_tag_t, + pub name_id: hb_ot_name_id_t, + pub min_value: f32, + pub default_value: f32, + pub max_value: f32, +} +#[allow(clippy::unnecessary_operation, clippy::identity_op)] +const _: () = { + ["Size of hb_ot_var_axis_t"][::std::mem::size_of::() - 20usize]; + ["Alignment of hb_ot_var_axis_t"][::std::mem::align_of::() - 4usize]; + ["Offset of field: hb_ot_var_axis_t::tag"] + [::std::mem::offset_of!(hb_ot_var_axis_t, tag) - 0usize]; + ["Offset of field: hb_ot_var_axis_t::name_id"] + [::std::mem::offset_of!(hb_ot_var_axis_t, name_id) - 4usize]; + ["Offset of field: hb_ot_var_axis_t::min_value"] + [::std::mem::offset_of!(hb_ot_var_axis_t, min_value) - 8usize]; + ["Offset of field: hb_ot_var_axis_t::default_value"] + [::std::mem::offset_of!(hb_ot_var_axis_t, default_value) - 12usize]; + ["Offset of field: hb_ot_var_axis_t::max_value"] + [::std::mem::offset_of!(hb_ot_var_axis_t, max_value) - 16usize]; +}; +extern "C" { + pub fn hb_ot_var_get_axes( + face: *mut hb_face_t, + start_offset: ::std::os::raw::c_uint, + axes_count: *mut ::std::os::raw::c_uint, + axes_array: *mut hb_ot_var_axis_t, + ) -> ::std::os::raw::c_uint; +} +extern "C" { + pub fn hb_ot_var_find_axis( + face: *mut hb_face_t, + axis_tag: hb_tag_t, + axis_index: *mut ::std::os::raw::c_uint, + axis_info: *mut hb_ot_var_axis_t, + ) -> hb_bool_t; +} +extern "C" { + pub fn hb_ot_font_set_funcs(font: *mut hb_font_t); +} +extern "C" { + pub fn hb_ot_tags_from_script_and_language( + script: hb_script_t, + language: hb_language_t, + script_count: *mut ::std::os::raw::c_uint, + script_tags: *mut hb_tag_t, + language_count: *mut ::std::os::raw::c_uint, + language_tags: *mut hb_tag_t, + ); +} +extern "C" { + pub fn hb_ot_tag_to_script(tag: hb_tag_t) -> hb_script_t; +} +extern "C" { + pub fn hb_ot_tag_to_language(tag: hb_tag_t) -> hb_language_t; +} +extern "C" { + pub fn hb_ot_tags_to_script_and_language( + script_tag: hb_tag_t, + language_tag: hb_tag_t, + script: *mut hb_script_t, + language: *mut hb_language_t, + ); +} +extern "C" { + pub fn hb_ot_layout_has_glyph_classes(face: *mut hb_face_t) -> hb_bool_t; +} +pub const HB_OT_LAYOUT_GLYPH_CLASS_UNCLASSIFIED: hb_ot_layout_glyph_class_t = 0; +pub const HB_OT_LAYOUT_GLYPH_CLASS_BASE_GLYPH: hb_ot_layout_glyph_class_t = 1; +pub const HB_OT_LAYOUT_GLYPH_CLASS_LIGATURE: hb_ot_layout_glyph_class_t = 2; +pub const HB_OT_LAYOUT_GLYPH_CLASS_MARK: hb_ot_layout_glyph_class_t = 3; +pub const HB_OT_LAYOUT_GLYPH_CLASS_COMPONENT: hb_ot_layout_glyph_class_t = 4; +#[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"] +pub type hb_ot_layout_glyph_class_t = ::std::os::raw::c_uint; +extern "C" { + pub fn hb_ot_layout_get_glyph_class( + face: *mut hb_face_t, + glyph: hb_codepoint_t, + ) -> hb_ot_layout_glyph_class_t; +} +extern "C" { + pub fn hb_ot_layout_get_glyphs_in_class( + face: *mut hb_face_t, + klass: hb_ot_layout_glyph_class_t, + glyphs: *mut hb_set_t, + ); +} +extern "C" { + pub fn hb_ot_layout_get_attach_points( + face: *mut hb_face_t, + glyph: hb_codepoint_t, + start_offset: ::std::os::raw::c_uint, + point_count: *mut ::std::os::raw::c_uint, + point_array: *mut ::std::os::raw::c_uint, + ) -> ::std::os::raw::c_uint; +} +extern "C" { + pub fn hb_ot_layout_get_ligature_carets( + font: *mut hb_font_t, + direction: hb_direction_t, + glyph: hb_codepoint_t, + start_offset: ::std::os::raw::c_uint, + caret_count: *mut ::std::os::raw::c_uint, + caret_array: *mut hb_position_t, + ) -> ::std::os::raw::c_uint; +} +extern "C" { + pub fn hb_ot_layout_table_get_script_tags( + face: *mut hb_face_t, + table_tag: hb_tag_t, + start_offset: ::std::os::raw::c_uint, + script_count: *mut ::std::os::raw::c_uint, + script_tags: *mut hb_tag_t, + ) -> ::std::os::raw::c_uint; +} +extern "C" { + pub fn hb_ot_layout_table_find_script( + face: *mut hb_face_t, + table_tag: hb_tag_t, + script_tag: hb_tag_t, + script_index: *mut ::std::os::raw::c_uint, + ) -> hb_bool_t; +} +extern "C" { + pub fn hb_ot_layout_table_select_script( + face: *mut hb_face_t, + table_tag: hb_tag_t, + script_count: ::std::os::raw::c_uint, + script_tags: *const hb_tag_t, + script_index: *mut ::std::os::raw::c_uint, + chosen_script: *mut hb_tag_t, + ) -> hb_bool_t; +} +extern "C" { + pub fn hb_ot_layout_table_get_feature_tags( + face: *mut hb_face_t, + table_tag: hb_tag_t, + start_offset: ::std::os::raw::c_uint, + feature_count: *mut ::std::os::raw::c_uint, + feature_tags: *mut hb_tag_t, + ) -> ::std::os::raw::c_uint; +} +extern "C" { + pub fn hb_ot_layout_script_get_language_tags( + face: *mut hb_face_t, + table_tag: hb_tag_t, + script_index: ::std::os::raw::c_uint, + start_offset: ::std::os::raw::c_uint, + language_count: *mut ::std::os::raw::c_uint, + language_tags: *mut hb_tag_t, + ) -> ::std::os::raw::c_uint; +} +extern "C" { + pub fn hb_ot_layout_script_select_language( + face: *mut hb_face_t, + table_tag: hb_tag_t, + script_index: ::std::os::raw::c_uint, + language_count: ::std::os::raw::c_uint, + language_tags: *const hb_tag_t, + language_index: *mut ::std::os::raw::c_uint, + ) -> hb_bool_t; +} +extern "C" { + pub fn hb_ot_layout_script_select_language2( + face: *mut hb_face_t, + table_tag: hb_tag_t, + script_index: ::std::os::raw::c_uint, + language_count: ::std::os::raw::c_uint, + language_tags: *const hb_tag_t, + language_index: *mut ::std::os::raw::c_uint, + chosen_language: *mut hb_tag_t, + ) -> hb_bool_t; +} +extern "C" { + pub fn hb_ot_layout_language_get_required_feature_index( + face: *mut hb_face_t, + table_tag: hb_tag_t, + script_index: ::std::os::raw::c_uint, + language_index: ::std::os::raw::c_uint, + feature_index: *mut ::std::os::raw::c_uint, + ) -> hb_bool_t; +} +extern "C" { + pub fn hb_ot_layout_language_get_required_feature( + face: *mut hb_face_t, + table_tag: hb_tag_t, + script_index: ::std::os::raw::c_uint, + language_index: ::std::os::raw::c_uint, + feature_index: *mut ::std::os::raw::c_uint, + feature_tag: *mut hb_tag_t, + ) -> hb_bool_t; +} +extern "C" { + pub fn hb_ot_layout_language_get_feature_indexes( + face: *mut hb_face_t, + table_tag: hb_tag_t, + script_index: ::std::os::raw::c_uint, + language_index: ::std::os::raw::c_uint, + start_offset: ::std::os::raw::c_uint, + feature_count: *mut ::std::os::raw::c_uint, + feature_indexes: *mut ::std::os::raw::c_uint, + ) -> ::std::os::raw::c_uint; +} +extern "C" { + pub fn hb_ot_layout_language_get_feature_tags( + face: *mut hb_face_t, + table_tag: hb_tag_t, + script_index: ::std::os::raw::c_uint, + language_index: ::std::os::raw::c_uint, + start_offset: ::std::os::raw::c_uint, + feature_count: *mut ::std::os::raw::c_uint, + feature_tags: *mut hb_tag_t, + ) -> ::std::os::raw::c_uint; +} +extern "C" { + pub fn hb_ot_layout_language_find_feature( + face: *mut hb_face_t, + table_tag: hb_tag_t, + script_index: ::std::os::raw::c_uint, + language_index: ::std::os::raw::c_uint, + feature_tag: hb_tag_t, + feature_index: *mut ::std::os::raw::c_uint, + ) -> hb_bool_t; +} +extern "C" { + pub fn hb_ot_layout_feature_get_lookups( + face: *mut hb_face_t, + table_tag: hb_tag_t, + feature_index: ::std::os::raw::c_uint, + start_offset: ::std::os::raw::c_uint, + lookup_count: *mut ::std::os::raw::c_uint, + lookup_indexes: *mut ::std::os::raw::c_uint, + ) -> ::std::os::raw::c_uint; +} +extern "C" { + pub fn hb_ot_layout_table_get_lookup_count( + face: *mut hb_face_t, + table_tag: hb_tag_t, + ) -> ::std::os::raw::c_uint; +} +extern "C" { + pub fn hb_ot_layout_collect_features( + face: *mut hb_face_t, + table_tag: hb_tag_t, + scripts: *const hb_tag_t, + languages: *const hb_tag_t, + features: *const hb_tag_t, + feature_indexes: *mut hb_set_t, + ); +} +extern "C" { + pub fn hb_ot_layout_collect_features_map( + face: *mut hb_face_t, + table_tag: hb_tag_t, + script_index: ::std::os::raw::c_uint, + language_index: ::std::os::raw::c_uint, + feature_map: *mut hb_map_t, + ); +} +extern "C" { + pub fn hb_ot_layout_collect_lookups( + face: *mut hb_face_t, + table_tag: hb_tag_t, + scripts: *const hb_tag_t, + languages: *const hb_tag_t, + features: *const hb_tag_t, + lookup_indexes: *mut hb_set_t, + ); +} +extern "C" { + pub fn hb_ot_layout_lookup_collect_glyphs( + face: *mut hb_face_t, + table_tag: hb_tag_t, + lookup_index: ::std::os::raw::c_uint, + glyphs_before: *mut hb_set_t, + glyphs_input: *mut hb_set_t, + glyphs_after: *mut hb_set_t, + glyphs_output: *mut hb_set_t, + ); +} +extern "C" { + pub fn hb_ot_layout_table_find_feature_variations( + face: *mut hb_face_t, + table_tag: hb_tag_t, + coords: *const ::std::os::raw::c_int, + num_coords: ::std::os::raw::c_uint, + variations_index: *mut ::std::os::raw::c_uint, + ) -> hb_bool_t; +} +extern "C" { + pub fn hb_ot_layout_feature_with_variations_get_lookups( + face: *mut hb_face_t, + table_tag: hb_tag_t, + feature_index: ::std::os::raw::c_uint, + variations_index: ::std::os::raw::c_uint, + start_offset: ::std::os::raw::c_uint, + lookup_count: *mut ::std::os::raw::c_uint, + lookup_indexes: *mut ::std::os::raw::c_uint, + ) -> ::std::os::raw::c_uint; +} +extern "C" { + pub fn hb_ot_layout_has_substitution(face: *mut hb_face_t) -> hb_bool_t; +} +extern "C" { + pub fn hb_ot_layout_lookup_get_glyph_alternates( + face: *mut hb_face_t, + lookup_index: ::std::os::raw::c_uint, + glyph: hb_codepoint_t, + start_offset: ::std::os::raw::c_uint, + alternate_count: *mut ::std::os::raw::c_uint, + alternate_glyphs: *mut hb_codepoint_t, + ) -> ::std::os::raw::c_uint; +} +extern "C" { + pub fn hb_ot_layout_lookup_would_substitute( + face: *mut hb_face_t, + lookup_index: ::std::os::raw::c_uint, + glyphs: *const hb_codepoint_t, + glyphs_length: ::std::os::raw::c_uint, + zero_context: hb_bool_t, + ) -> hb_bool_t; +} +extern "C" { + pub fn hb_ot_layout_lookup_substitute_closure( + face: *mut hb_face_t, + lookup_index: ::std::os::raw::c_uint, + glyphs: *mut hb_set_t, + ); +} +extern "C" { + pub fn hb_ot_layout_lookups_substitute_closure( + face: *mut hb_face_t, + lookups: *const hb_set_t, + glyphs: *mut hb_set_t, + ); +} +extern "C" { + pub fn hb_ot_layout_has_positioning(face: *mut hb_face_t) -> hb_bool_t; +} +extern "C" { + pub fn hb_ot_layout_get_size_params( + face: *mut hb_face_t, + design_size: *mut ::std::os::raw::c_uint, + subfamily_id: *mut ::std::os::raw::c_uint, + subfamily_name_id: *mut hb_ot_name_id_t, + range_start: *mut ::std::os::raw::c_uint, + range_end: *mut ::std::os::raw::c_uint, + ) -> hb_bool_t; +} +extern "C" { + pub fn hb_ot_layout_lookup_get_optical_bound( + font: *mut hb_font_t, + lookup_index: ::std::os::raw::c_uint, + direction: hb_direction_t, + glyph: hb_codepoint_t, + ) -> hb_position_t; +} +extern "C" { + pub fn hb_ot_layout_feature_get_name_ids( + face: *mut hb_face_t, + table_tag: hb_tag_t, + feature_index: ::std::os::raw::c_uint, + label_id: *mut hb_ot_name_id_t, + tooltip_id: *mut hb_ot_name_id_t, + sample_id: *mut hb_ot_name_id_t, + num_named_parameters: *mut ::std::os::raw::c_uint, + first_param_id: *mut hb_ot_name_id_t, + ) -> hb_bool_t; +} +extern "C" { + pub fn hb_ot_layout_feature_get_characters( + face: *mut hb_face_t, + table_tag: hb_tag_t, + feature_index: ::std::os::raw::c_uint, + start_offset: ::std::os::raw::c_uint, + char_count: *mut ::std::os::raw::c_uint, + characters: *mut hb_codepoint_t, + ) -> ::std::os::raw::c_uint; +} +extern "C" { + pub fn hb_ot_layout_get_font_extents( + font: *mut hb_font_t, + direction: hb_direction_t, + script_tag: hb_tag_t, + language_tag: hb_tag_t, + extents: *mut hb_font_extents_t, + ) -> hb_bool_t; +} +extern "C" { + pub fn hb_ot_layout_get_font_extents2( + font: *mut hb_font_t, + direction: hb_direction_t, + script: hb_script_t, + language: hb_language_t, + extents: *mut hb_font_extents_t, + ) -> hb_bool_t; +} +pub const HB_OT_LAYOUT_BASELINE_TAG_ROMAN: hb_ot_layout_baseline_tag_t = 1919905134; +pub const HB_OT_LAYOUT_BASELINE_TAG_HANGING: hb_ot_layout_baseline_tag_t = 1751215719; +pub const HB_OT_LAYOUT_BASELINE_TAG_IDEO_FACE_BOTTOM_OR_LEFT: hb_ot_layout_baseline_tag_t = + 1768121954; +pub const HB_OT_LAYOUT_BASELINE_TAG_IDEO_FACE_TOP_OR_RIGHT: hb_ot_layout_baseline_tag_t = + 1768121972; +pub const HB_OT_LAYOUT_BASELINE_TAG_IDEO_FACE_CENTRAL: hb_ot_layout_baseline_tag_t = 1231251043; +pub const HB_OT_LAYOUT_BASELINE_TAG_IDEO_EMBOX_BOTTOM_OR_LEFT: hb_ot_layout_baseline_tag_t = + 1768187247; +pub const HB_OT_LAYOUT_BASELINE_TAG_IDEO_EMBOX_TOP_OR_RIGHT: hb_ot_layout_baseline_tag_t = + 1768191088; +pub const HB_OT_LAYOUT_BASELINE_TAG_IDEO_EMBOX_CENTRAL: hb_ot_layout_baseline_tag_t = 1231315813; +pub const HB_OT_LAYOUT_BASELINE_TAG_MATH: hb_ot_layout_baseline_tag_t = 1835103336; +pub const _HB_OT_LAYOUT_BASELINE_TAG_MAX_VALUE: hb_ot_layout_baseline_tag_t = 2147483647; +#[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"] +pub type hb_ot_layout_baseline_tag_t = ::std::os::raw::c_uint; +extern "C" { + pub fn hb_ot_layout_get_horizontal_baseline_tag_for_script( + script: hb_script_t, + ) -> hb_ot_layout_baseline_tag_t; +} +extern "C" { + pub fn hb_ot_layout_get_baseline( + font: *mut hb_font_t, + baseline_tag: hb_ot_layout_baseline_tag_t, + direction: hb_direction_t, + script_tag: hb_tag_t, + language_tag: hb_tag_t, + coord: *mut hb_position_t, + ) -> hb_bool_t; +} +extern "C" { + pub fn hb_ot_layout_get_baseline2( + font: *mut hb_font_t, + baseline_tag: hb_ot_layout_baseline_tag_t, + direction: hb_direction_t, + script: hb_script_t, + language: hb_language_t, + coord: *mut hb_position_t, + ) -> hb_bool_t; +} +extern "C" { + pub fn hb_ot_layout_get_baseline_with_fallback( + font: *mut hb_font_t, + baseline_tag: hb_ot_layout_baseline_tag_t, + direction: hb_direction_t, + script_tag: hb_tag_t, + language_tag: hb_tag_t, + coord: *mut hb_position_t, + ); +} +extern "C" { + pub fn hb_ot_layout_get_baseline_with_fallback2( + font: *mut hb_font_t, + baseline_tag: hb_ot_layout_baseline_tag_t, + direction: hb_direction_t, + script: hb_script_t, + language: hb_language_t, + coord: *mut hb_position_t, + ); +} +pub const HB_OT_MATH_CONSTANT_SCRIPT_PERCENT_SCALE_DOWN: hb_ot_math_constant_t = 0; +pub const HB_OT_MATH_CONSTANT_SCRIPT_SCRIPT_PERCENT_SCALE_DOWN: hb_ot_math_constant_t = 1; +pub const HB_OT_MATH_CONSTANT_DELIMITED_SUB_FORMULA_MIN_HEIGHT: hb_ot_math_constant_t = 2; +pub const HB_OT_MATH_CONSTANT_DISPLAY_OPERATOR_MIN_HEIGHT: hb_ot_math_constant_t = 3; +pub const HB_OT_MATH_CONSTANT_MATH_LEADING: hb_ot_math_constant_t = 4; +pub const HB_OT_MATH_CONSTANT_AXIS_HEIGHT: hb_ot_math_constant_t = 5; +pub const HB_OT_MATH_CONSTANT_ACCENT_BASE_HEIGHT: hb_ot_math_constant_t = 6; +pub const HB_OT_MATH_CONSTANT_FLATTENED_ACCENT_BASE_HEIGHT: hb_ot_math_constant_t = 7; +pub const HB_OT_MATH_CONSTANT_SUBSCRIPT_SHIFT_DOWN: hb_ot_math_constant_t = 8; +pub const HB_OT_MATH_CONSTANT_SUBSCRIPT_TOP_MAX: hb_ot_math_constant_t = 9; +pub const HB_OT_MATH_CONSTANT_SUBSCRIPT_BASELINE_DROP_MIN: hb_ot_math_constant_t = 10; +pub const HB_OT_MATH_CONSTANT_SUPERSCRIPT_SHIFT_UP: hb_ot_math_constant_t = 11; +pub const HB_OT_MATH_CONSTANT_SUPERSCRIPT_SHIFT_UP_CRAMPED: hb_ot_math_constant_t = 12; +pub const HB_OT_MATH_CONSTANT_SUPERSCRIPT_BOTTOM_MIN: hb_ot_math_constant_t = 13; +pub const HB_OT_MATH_CONSTANT_SUPERSCRIPT_BASELINE_DROP_MAX: hb_ot_math_constant_t = 14; +pub const HB_OT_MATH_CONSTANT_SUB_SUPERSCRIPT_GAP_MIN: hb_ot_math_constant_t = 15; +pub const HB_OT_MATH_CONSTANT_SUPERSCRIPT_BOTTOM_MAX_WITH_SUBSCRIPT: hb_ot_math_constant_t = 16; +pub const HB_OT_MATH_CONSTANT_SPACE_AFTER_SCRIPT: hb_ot_math_constant_t = 17; +pub const HB_OT_MATH_CONSTANT_UPPER_LIMIT_GAP_MIN: hb_ot_math_constant_t = 18; +pub const HB_OT_MATH_CONSTANT_UPPER_LIMIT_BASELINE_RISE_MIN: hb_ot_math_constant_t = 19; +pub const HB_OT_MATH_CONSTANT_LOWER_LIMIT_GAP_MIN: hb_ot_math_constant_t = 20; +pub const HB_OT_MATH_CONSTANT_LOWER_LIMIT_BASELINE_DROP_MIN: hb_ot_math_constant_t = 21; +pub const HB_OT_MATH_CONSTANT_STACK_TOP_SHIFT_UP: hb_ot_math_constant_t = 22; +pub const HB_OT_MATH_CONSTANT_STACK_TOP_DISPLAY_STYLE_SHIFT_UP: hb_ot_math_constant_t = 23; +pub const HB_OT_MATH_CONSTANT_STACK_BOTTOM_SHIFT_DOWN: hb_ot_math_constant_t = 24; +pub const HB_OT_MATH_CONSTANT_STACK_BOTTOM_DISPLAY_STYLE_SHIFT_DOWN: hb_ot_math_constant_t = 25; +pub const HB_OT_MATH_CONSTANT_STACK_GAP_MIN: hb_ot_math_constant_t = 26; +pub const HB_OT_MATH_CONSTANT_STACK_DISPLAY_STYLE_GAP_MIN: hb_ot_math_constant_t = 27; +pub const HB_OT_MATH_CONSTANT_STRETCH_STACK_TOP_SHIFT_UP: hb_ot_math_constant_t = 28; +pub const HB_OT_MATH_CONSTANT_STRETCH_STACK_BOTTOM_SHIFT_DOWN: hb_ot_math_constant_t = 29; +pub const HB_OT_MATH_CONSTANT_STRETCH_STACK_GAP_ABOVE_MIN: hb_ot_math_constant_t = 30; +pub const HB_OT_MATH_CONSTANT_STRETCH_STACK_GAP_BELOW_MIN: hb_ot_math_constant_t = 31; +pub const HB_OT_MATH_CONSTANT_FRACTION_NUMERATOR_SHIFT_UP: hb_ot_math_constant_t = 32; +pub const HB_OT_MATH_CONSTANT_FRACTION_NUMERATOR_DISPLAY_STYLE_SHIFT_UP: hb_ot_math_constant_t = 33; +pub const HB_OT_MATH_CONSTANT_FRACTION_DENOMINATOR_SHIFT_DOWN: hb_ot_math_constant_t = 34; +pub const HB_OT_MATH_CONSTANT_FRACTION_DENOMINATOR_DISPLAY_STYLE_SHIFT_DOWN: hb_ot_math_constant_t = + 35; +pub const HB_OT_MATH_CONSTANT_FRACTION_NUMERATOR_GAP_MIN: hb_ot_math_constant_t = 36; +pub const HB_OT_MATH_CONSTANT_FRACTION_NUM_DISPLAY_STYLE_GAP_MIN: hb_ot_math_constant_t = 37; +pub const HB_OT_MATH_CONSTANT_FRACTION_RULE_THICKNESS: hb_ot_math_constant_t = 38; +pub const HB_OT_MATH_CONSTANT_FRACTION_DENOMINATOR_GAP_MIN: hb_ot_math_constant_t = 39; +pub const HB_OT_MATH_CONSTANT_FRACTION_DENOM_DISPLAY_STYLE_GAP_MIN: hb_ot_math_constant_t = 40; +pub const HB_OT_MATH_CONSTANT_SKEWED_FRACTION_HORIZONTAL_GAP: hb_ot_math_constant_t = 41; +pub const HB_OT_MATH_CONSTANT_SKEWED_FRACTION_VERTICAL_GAP: hb_ot_math_constant_t = 42; +pub const HB_OT_MATH_CONSTANT_OVERBAR_VERTICAL_GAP: hb_ot_math_constant_t = 43; +pub const HB_OT_MATH_CONSTANT_OVERBAR_RULE_THICKNESS: hb_ot_math_constant_t = 44; +pub const HB_OT_MATH_CONSTANT_OVERBAR_EXTRA_ASCENDER: hb_ot_math_constant_t = 45; +pub const HB_OT_MATH_CONSTANT_UNDERBAR_VERTICAL_GAP: hb_ot_math_constant_t = 46; +pub const HB_OT_MATH_CONSTANT_UNDERBAR_RULE_THICKNESS: hb_ot_math_constant_t = 47; +pub const HB_OT_MATH_CONSTANT_UNDERBAR_EXTRA_DESCENDER: hb_ot_math_constant_t = 48; +pub const HB_OT_MATH_CONSTANT_RADICAL_VERTICAL_GAP: hb_ot_math_constant_t = 49; +pub const HB_OT_MATH_CONSTANT_RADICAL_DISPLAY_STYLE_VERTICAL_GAP: hb_ot_math_constant_t = 50; +pub const HB_OT_MATH_CONSTANT_RADICAL_RULE_THICKNESS: hb_ot_math_constant_t = 51; +pub const HB_OT_MATH_CONSTANT_RADICAL_EXTRA_ASCENDER: hb_ot_math_constant_t = 52; +pub const HB_OT_MATH_CONSTANT_RADICAL_KERN_BEFORE_DEGREE: hb_ot_math_constant_t = 53; +pub const HB_OT_MATH_CONSTANT_RADICAL_KERN_AFTER_DEGREE: hb_ot_math_constant_t = 54; +pub const HB_OT_MATH_CONSTANT_RADICAL_DEGREE_BOTTOM_RAISE_PERCENT: hb_ot_math_constant_t = 55; +#[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"] +pub type hb_ot_math_constant_t = ::std::os::raw::c_uint; +pub const HB_OT_MATH_KERN_TOP_RIGHT: hb_ot_math_kern_t = 0; +pub const HB_OT_MATH_KERN_TOP_LEFT: hb_ot_math_kern_t = 1; +pub const HB_OT_MATH_KERN_BOTTOM_RIGHT: hb_ot_math_kern_t = 2; +pub const HB_OT_MATH_KERN_BOTTOM_LEFT: hb_ot_math_kern_t = 3; +#[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"] +pub type hb_ot_math_kern_t = ::std::os::raw::c_uint; +#[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"] +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct hb_ot_math_kern_entry_t { + pub max_correction_height: hb_position_t, + pub kern_value: hb_position_t, +} +#[allow(clippy::unnecessary_operation, clippy::identity_op)] +const _: () = { + ["Size of hb_ot_math_kern_entry_t"][::std::mem::size_of::() - 8usize]; + ["Alignment of hb_ot_math_kern_entry_t"] + [::std::mem::align_of::() - 4usize]; + ["Offset of field: hb_ot_math_kern_entry_t::max_correction_height"] + [::std::mem::offset_of!(hb_ot_math_kern_entry_t, max_correction_height) - 0usize]; + ["Offset of field: hb_ot_math_kern_entry_t::kern_value"] + [::std::mem::offset_of!(hb_ot_math_kern_entry_t, kern_value) - 4usize]; +}; +#[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"] +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct hb_ot_math_glyph_variant_t { + pub glyph: hb_codepoint_t, + pub advance: hb_position_t, +} +#[allow(clippy::unnecessary_operation, clippy::identity_op)] +const _: () = { + ["Size of hb_ot_math_glyph_variant_t"] + [::std::mem::size_of::() - 8usize]; + ["Alignment of hb_ot_math_glyph_variant_t"] + [::std::mem::align_of::() - 4usize]; + ["Offset of field: hb_ot_math_glyph_variant_t::glyph"] + [::std::mem::offset_of!(hb_ot_math_glyph_variant_t, glyph) - 0usize]; + ["Offset of field: hb_ot_math_glyph_variant_t::advance"] + [::std::mem::offset_of!(hb_ot_math_glyph_variant_t, advance) - 4usize]; +}; +pub const HB_OT_MATH_GLYPH_PART_FLAG_EXTENDER: hb_ot_math_glyph_part_flags_t = 1; +#[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"] +pub type hb_ot_math_glyph_part_flags_t = ::std::os::raw::c_uint; +#[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"] +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct hb_ot_math_glyph_part_t { + pub glyph: hb_codepoint_t, + pub start_connector_length: hb_position_t, + pub end_connector_length: hb_position_t, + pub full_advance: hb_position_t, + pub flags: hb_ot_math_glyph_part_flags_t, +} +#[allow(clippy::unnecessary_operation, clippy::identity_op)] +const _: () = { + ["Size of hb_ot_math_glyph_part_t"][::std::mem::size_of::() - 20usize]; + ["Alignment of hb_ot_math_glyph_part_t"] + [::std::mem::align_of::() - 4usize]; + ["Offset of field: hb_ot_math_glyph_part_t::glyph"] + [::std::mem::offset_of!(hb_ot_math_glyph_part_t, glyph) - 0usize]; + ["Offset of field: hb_ot_math_glyph_part_t::start_connector_length"] + [::std::mem::offset_of!(hb_ot_math_glyph_part_t, start_connector_length) - 4usize]; + ["Offset of field: hb_ot_math_glyph_part_t::end_connector_length"] + [::std::mem::offset_of!(hb_ot_math_glyph_part_t, end_connector_length) - 8usize]; + ["Offset of field: hb_ot_math_glyph_part_t::full_advance"] + [::std::mem::offset_of!(hb_ot_math_glyph_part_t, full_advance) - 12usize]; + ["Offset of field: hb_ot_math_glyph_part_t::flags"] + [::std::mem::offset_of!(hb_ot_math_glyph_part_t, flags) - 16usize]; +}; +extern "C" { + pub fn hb_ot_math_has_data(face: *mut hb_face_t) -> hb_bool_t; +} +extern "C" { + pub fn hb_ot_math_get_constant( + font: *mut hb_font_t, + constant: hb_ot_math_constant_t, + ) -> hb_position_t; +} +extern "C" { + pub fn hb_ot_math_get_glyph_italics_correction( + font: *mut hb_font_t, + glyph: hb_codepoint_t, + ) -> hb_position_t; +} +extern "C" { + pub fn hb_ot_math_get_glyph_top_accent_attachment( + font: *mut hb_font_t, + glyph: hb_codepoint_t, + ) -> hb_position_t; +} +extern "C" { + pub fn hb_ot_math_is_glyph_extended_shape( + face: *mut hb_face_t, + glyph: hb_codepoint_t, + ) -> hb_bool_t; +} +extern "C" { + pub fn hb_ot_math_get_glyph_kerning( + font: *mut hb_font_t, + glyph: hb_codepoint_t, + kern: hb_ot_math_kern_t, + correction_height: hb_position_t, + ) -> hb_position_t; +} +extern "C" { + pub fn hb_ot_math_get_glyph_kernings( + font: *mut hb_font_t, + glyph: hb_codepoint_t, + kern: hb_ot_math_kern_t, + start_offset: ::std::os::raw::c_uint, + entries_count: *mut ::std::os::raw::c_uint, + kern_entries: *mut hb_ot_math_kern_entry_t, + ) -> ::std::os::raw::c_uint; +} +extern "C" { + pub fn hb_ot_math_get_glyph_variants( + font: *mut hb_font_t, + glyph: hb_codepoint_t, + direction: hb_direction_t, + start_offset: ::std::os::raw::c_uint, + variants_count: *mut ::std::os::raw::c_uint, + variants: *mut hb_ot_math_glyph_variant_t, + ) -> ::std::os::raw::c_uint; +} +extern "C" { + pub fn hb_ot_math_get_min_connector_overlap( + font: *mut hb_font_t, + direction: hb_direction_t, + ) -> hb_position_t; +} +extern "C" { + pub fn hb_ot_math_get_glyph_assembly( + font: *mut hb_font_t, + glyph: hb_codepoint_t, + direction: hb_direction_t, + start_offset: ::std::os::raw::c_uint, + parts_count: *mut ::std::os::raw::c_uint, + parts: *mut hb_ot_math_glyph_part_t, + italics_correction: *mut hb_position_t, + ) -> ::std::os::raw::c_uint; +} +pub const HB_OT_META_TAG_DESIGN_LANGUAGES: hb_ot_meta_tag_t = 1684827751; +pub const HB_OT_META_TAG_SUPPORTED_LANGUAGES: hb_ot_meta_tag_t = 1936485991; +pub const _HB_OT_META_TAG_MAX_VALUE: hb_ot_meta_tag_t = 2147483647; +#[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"] +pub type hb_ot_meta_tag_t = ::std::os::raw::c_uint; +extern "C" { + pub fn hb_ot_meta_get_entry_tags( + face: *mut hb_face_t, + start_offset: ::std::os::raw::c_uint, + entries_count: *mut ::std::os::raw::c_uint, + entries: *mut hb_ot_meta_tag_t, + ) -> ::std::os::raw::c_uint; +} +extern "C" { + pub fn hb_ot_meta_reference_entry( + face: *mut hb_face_t, + meta_tag: hb_ot_meta_tag_t, + ) -> *mut hb_blob_t; +} +pub const HB_OT_METRICS_TAG_HORIZONTAL_ASCENDER: hb_ot_metrics_tag_t = 1751216995; +pub const HB_OT_METRICS_TAG_HORIZONTAL_DESCENDER: hb_ot_metrics_tag_t = 1751413603; +pub const HB_OT_METRICS_TAG_HORIZONTAL_LINE_GAP: hb_ot_metrics_tag_t = 1751934832; +pub const HB_OT_METRICS_TAG_HORIZONTAL_CLIPPING_ASCENT: hb_ot_metrics_tag_t = 1751346273; +pub const HB_OT_METRICS_TAG_HORIZONTAL_CLIPPING_DESCENT: hb_ot_metrics_tag_t = 1751346276; +pub const HB_OT_METRICS_TAG_VERTICAL_ASCENDER: hb_ot_metrics_tag_t = 1986098019; +pub const HB_OT_METRICS_TAG_VERTICAL_DESCENDER: hb_ot_metrics_tag_t = 1986294627; +pub const HB_OT_METRICS_TAG_VERTICAL_LINE_GAP: hb_ot_metrics_tag_t = 1986815856; +pub const HB_OT_METRICS_TAG_HORIZONTAL_CARET_RISE: hb_ot_metrics_tag_t = 1751347827; +pub const HB_OT_METRICS_TAG_HORIZONTAL_CARET_RUN: hb_ot_metrics_tag_t = 1751347822; +pub const HB_OT_METRICS_TAG_HORIZONTAL_CARET_OFFSET: hb_ot_metrics_tag_t = 1751347046; +pub const HB_OT_METRICS_TAG_VERTICAL_CARET_RISE: hb_ot_metrics_tag_t = 1986228851; +pub const HB_OT_METRICS_TAG_VERTICAL_CARET_RUN: hb_ot_metrics_tag_t = 1986228846; +pub const HB_OT_METRICS_TAG_VERTICAL_CARET_OFFSET: hb_ot_metrics_tag_t = 1986228070; +pub const HB_OT_METRICS_TAG_X_HEIGHT: hb_ot_metrics_tag_t = 2020108148; +pub const HB_OT_METRICS_TAG_CAP_HEIGHT: hb_ot_metrics_tag_t = 1668311156; +pub const HB_OT_METRICS_TAG_SUBSCRIPT_EM_X_SIZE: hb_ot_metrics_tag_t = 1935833203; +pub const HB_OT_METRICS_TAG_SUBSCRIPT_EM_Y_SIZE: hb_ot_metrics_tag_t = 1935833459; +pub const HB_OT_METRICS_TAG_SUBSCRIPT_EM_X_OFFSET: hb_ot_metrics_tag_t = 1935833199; +pub const HB_OT_METRICS_TAG_SUBSCRIPT_EM_Y_OFFSET: hb_ot_metrics_tag_t = 1935833455; +pub const HB_OT_METRICS_TAG_SUPERSCRIPT_EM_X_SIZE: hb_ot_metrics_tag_t = 1936750707; +pub const HB_OT_METRICS_TAG_SUPERSCRIPT_EM_Y_SIZE: hb_ot_metrics_tag_t = 1936750963; +pub const HB_OT_METRICS_TAG_SUPERSCRIPT_EM_X_OFFSET: hb_ot_metrics_tag_t = 1936750703; +pub const HB_OT_METRICS_TAG_SUPERSCRIPT_EM_Y_OFFSET: hb_ot_metrics_tag_t = 1936750959; +pub const HB_OT_METRICS_TAG_STRIKEOUT_SIZE: hb_ot_metrics_tag_t = 1937011315; +pub const HB_OT_METRICS_TAG_STRIKEOUT_OFFSET: hb_ot_metrics_tag_t = 1937011311; +pub const HB_OT_METRICS_TAG_UNDERLINE_SIZE: hb_ot_metrics_tag_t = 1970168947; +pub const HB_OT_METRICS_TAG_UNDERLINE_OFFSET: hb_ot_metrics_tag_t = 1970168943; +pub const _HB_OT_METRICS_TAG_MAX_VALUE: hb_ot_metrics_tag_t = 2147483647; +#[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"] +pub type hb_ot_metrics_tag_t = ::std::os::raw::c_uint; +extern "C" { + pub fn hb_ot_metrics_get_position( + font: *mut hb_font_t, + metrics_tag: hb_ot_metrics_tag_t, + position: *mut hb_position_t, + ) -> hb_bool_t; +} +extern "C" { + pub fn hb_ot_metrics_get_position_with_fallback( + font: *mut hb_font_t, + metrics_tag: hb_ot_metrics_tag_t, + position: *mut hb_position_t, + ); +} +extern "C" { + pub fn hb_ot_metrics_get_variation( + font: *mut hb_font_t, + metrics_tag: hb_ot_metrics_tag_t, + ) -> f32; +} +extern "C" { + pub fn hb_ot_metrics_get_x_variation( + font: *mut hb_font_t, + metrics_tag: hb_ot_metrics_tag_t, + ) -> hb_position_t; +} +extern "C" { + pub fn hb_ot_metrics_get_y_variation( + font: *mut hb_font_t, + metrics_tag: hb_ot_metrics_tag_t, + ) -> hb_position_t; +} +extern "C" { + pub fn hb_ot_shape_glyphs_closure( + font: *mut hb_font_t, + buffer: *mut hb_buffer_t, + features: *const hb_feature_t, + num_features: ::std::os::raw::c_uint, + glyphs: *mut hb_set_t, + ); +} +extern "C" { + pub fn hb_ot_shape_plan_collect_lookups( + shape_plan: *mut hb_shape_plan_t, + table_tag: hb_tag_t, + lookup_indexes: *mut hb_set_t, + ); +} +extern "C" { + pub fn hb_ot_var_has_data(face: *mut hb_face_t) -> hb_bool_t; +} +extern "C" { + pub fn hb_ot_var_get_axis_count(face: *mut hb_face_t) -> ::std::os::raw::c_uint; +} +pub const HB_OT_VAR_AXIS_FLAG_HIDDEN: hb_ot_var_axis_flags_t = 1; +pub const _HB_OT_VAR_AXIS_FLAG_MAX_VALUE: hb_ot_var_axis_flags_t = 2147483647; +#[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"] +pub type hb_ot_var_axis_flags_t = ::std::os::raw::c_uint; +#[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: at present, the only flag defined for @flags is\n #HB_OT_VAR_AXIS_FLAG_HIDDEN.\n\n Since: 2.2.0"] +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct hb_ot_var_axis_info_t { + pub axis_index: ::std::os::raw::c_uint, + pub tag: hb_tag_t, + pub name_id: hb_ot_name_id_t, + pub flags: hb_ot_var_axis_flags_t, + pub min_value: f32, + pub default_value: f32, + pub max_value: f32, + pub reserved: ::std::os::raw::c_uint, +} +#[allow(clippy::unnecessary_operation, clippy::identity_op)] +const _: () = { + ["Size of hb_ot_var_axis_info_t"][::std::mem::size_of::() - 32usize]; + ["Alignment of hb_ot_var_axis_info_t"] + [::std::mem::align_of::() - 4usize]; + ["Offset of field: hb_ot_var_axis_info_t::axis_index"] + [::std::mem::offset_of!(hb_ot_var_axis_info_t, axis_index) - 0usize]; + ["Offset of field: hb_ot_var_axis_info_t::tag"] + [::std::mem::offset_of!(hb_ot_var_axis_info_t, tag) - 4usize]; + ["Offset of field: hb_ot_var_axis_info_t::name_id"] + [::std::mem::offset_of!(hb_ot_var_axis_info_t, name_id) - 8usize]; + ["Offset of field: hb_ot_var_axis_info_t::flags"] + [::std::mem::offset_of!(hb_ot_var_axis_info_t, flags) - 12usize]; + ["Offset of field: hb_ot_var_axis_info_t::min_value"] + [::std::mem::offset_of!(hb_ot_var_axis_info_t, min_value) - 16usize]; + ["Offset of field: hb_ot_var_axis_info_t::default_value"] + [::std::mem::offset_of!(hb_ot_var_axis_info_t, default_value) - 20usize]; + ["Offset of field: hb_ot_var_axis_info_t::max_value"] + [::std::mem::offset_of!(hb_ot_var_axis_info_t, max_value) - 24usize]; + ["Offset of field: hb_ot_var_axis_info_t::reserved"] + [::std::mem::offset_of!(hb_ot_var_axis_info_t, reserved) - 28usize]; +}; +extern "C" { + pub fn hb_ot_var_get_axis_infos( + face: *mut hb_face_t, + start_offset: ::std::os::raw::c_uint, + axes_count: *mut ::std::os::raw::c_uint, + axes_array: *mut hb_ot_var_axis_info_t, + ) -> ::std::os::raw::c_uint; +} +extern "C" { + pub fn hb_ot_var_find_axis_info( + face: *mut hb_face_t, + axis_tag: hb_tag_t, + axis_info: *mut hb_ot_var_axis_info_t, + ) -> hb_bool_t; +} +extern "C" { + pub fn hb_ot_var_get_named_instance_count(face: *mut hb_face_t) -> ::std::os::raw::c_uint; +} +extern "C" { + pub fn hb_ot_var_named_instance_get_subfamily_name_id( + face: *mut hb_face_t, + instance_index: ::std::os::raw::c_uint, + ) -> hb_ot_name_id_t; +} +extern "C" { + pub fn hb_ot_var_named_instance_get_postscript_name_id( + face: *mut hb_face_t, + instance_index: ::std::os::raw::c_uint, + ) -> hb_ot_name_id_t; +} +extern "C" { + pub fn hb_ot_var_named_instance_get_design_coords( + face: *mut hb_face_t, + instance_index: ::std::os::raw::c_uint, + coords_length: *mut ::std::os::raw::c_uint, + coords: *mut f32, + ) -> ::std::os::raw::c_uint; +} +extern "C" { + pub fn hb_ot_var_normalize_variations( + face: *mut hb_face_t, + variations: *const hb_variation_t, + variations_length: ::std::os::raw::c_uint, + coords: *mut ::std::os::raw::c_int, + coords_length: ::std::os::raw::c_uint, + ); +} +extern "C" { + pub fn hb_ot_var_normalize_coords( + face: *mut hb_face_t, + coords_length: ::std::os::raw::c_uint, + design_coords: *const f32, + normalized_coords: *mut ::std::os::raw::c_int, + ); +} +pub const HB_AAT_LAYOUT_FEATURE_TYPE_INVALID: hb_aat_layout_feature_type_t = 65535; +pub const HB_AAT_LAYOUT_FEATURE_TYPE_ALL_TYPOGRAPHIC: hb_aat_layout_feature_type_t = 0; +pub const HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES: hb_aat_layout_feature_type_t = 1; +pub const HB_AAT_LAYOUT_FEATURE_TYPE_CURSIVE_CONNECTION: hb_aat_layout_feature_type_t = 2; +pub const HB_AAT_LAYOUT_FEATURE_TYPE_LETTER_CASE: hb_aat_layout_feature_type_t = 3; +pub const HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_SUBSTITUTION: hb_aat_layout_feature_type_t = 4; +pub const HB_AAT_LAYOUT_FEATURE_TYPE_LINGUISTIC_REARRANGEMENT: hb_aat_layout_feature_type_t = 5; +pub const HB_AAT_LAYOUT_FEATURE_TYPE_NUMBER_SPACING: hb_aat_layout_feature_type_t = 6; +pub const HB_AAT_LAYOUT_FEATURE_TYPE_SMART_SWASH_TYPE: hb_aat_layout_feature_type_t = 8; +pub const HB_AAT_LAYOUT_FEATURE_TYPE_DIACRITICS_TYPE: hb_aat_layout_feature_type_t = 9; +pub const HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_POSITION: hb_aat_layout_feature_type_t = 10; +pub const HB_AAT_LAYOUT_FEATURE_TYPE_FRACTIONS: hb_aat_layout_feature_type_t = 11; +pub const HB_AAT_LAYOUT_FEATURE_TYPE_OVERLAPPING_CHARACTERS_TYPE: hb_aat_layout_feature_type_t = 13; +pub const HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS: hb_aat_layout_feature_type_t = 14; +pub const HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS: hb_aat_layout_feature_type_t = 15; +pub const HB_AAT_LAYOUT_FEATURE_TYPE_ORNAMENT_SETS_TYPE: hb_aat_layout_feature_type_t = 16; +pub const HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_ALTERNATIVES: hb_aat_layout_feature_type_t = 17; +pub const HB_AAT_LAYOUT_FEATURE_TYPE_DESIGN_COMPLEXITY_TYPE: hb_aat_layout_feature_type_t = 18; +pub const HB_AAT_LAYOUT_FEATURE_TYPE_STYLE_OPTIONS: hb_aat_layout_feature_type_t = 19; +pub const HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE: hb_aat_layout_feature_type_t = 20; +pub const HB_AAT_LAYOUT_FEATURE_TYPE_NUMBER_CASE: hb_aat_layout_feature_type_t = 21; +pub const HB_AAT_LAYOUT_FEATURE_TYPE_TEXT_SPACING: hb_aat_layout_feature_type_t = 22; +pub const HB_AAT_LAYOUT_FEATURE_TYPE_TRANSLITERATION: hb_aat_layout_feature_type_t = 23; +pub const HB_AAT_LAYOUT_FEATURE_TYPE_ANNOTATION_TYPE: hb_aat_layout_feature_type_t = 24; +pub const HB_AAT_LAYOUT_FEATURE_TYPE_KANA_SPACING_TYPE: hb_aat_layout_feature_type_t = 25; +pub const HB_AAT_LAYOUT_FEATURE_TYPE_IDEOGRAPHIC_SPACING_TYPE: hb_aat_layout_feature_type_t = 26; +pub const HB_AAT_LAYOUT_FEATURE_TYPE_UNICODE_DECOMPOSITION_TYPE: hb_aat_layout_feature_type_t = 27; +pub const HB_AAT_LAYOUT_FEATURE_TYPE_RUBY_KANA: hb_aat_layout_feature_type_t = 28; +pub const HB_AAT_LAYOUT_FEATURE_TYPE_CJK_SYMBOL_ALTERNATIVES_TYPE: hb_aat_layout_feature_type_t = + 29; +pub const HB_AAT_LAYOUT_FEATURE_TYPE_IDEOGRAPHIC_ALTERNATIVES_TYPE: hb_aat_layout_feature_type_t = + 30; +pub const HB_AAT_LAYOUT_FEATURE_TYPE_CJK_VERTICAL_ROMAN_PLACEMENT_TYPE: + hb_aat_layout_feature_type_t = 31; +pub const HB_AAT_LAYOUT_FEATURE_TYPE_ITALIC_CJK_ROMAN: hb_aat_layout_feature_type_t = 32; +pub const HB_AAT_LAYOUT_FEATURE_TYPE_CASE_SENSITIVE_LAYOUT: hb_aat_layout_feature_type_t = 33; +pub const HB_AAT_LAYOUT_FEATURE_TYPE_ALTERNATE_KANA: hb_aat_layout_feature_type_t = 34; +pub const HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES: hb_aat_layout_feature_type_t = 35; +pub const HB_AAT_LAYOUT_FEATURE_TYPE_CONTEXTUAL_ALTERNATIVES: hb_aat_layout_feature_type_t = 36; +pub const HB_AAT_LAYOUT_FEATURE_TYPE_LOWER_CASE: hb_aat_layout_feature_type_t = 37; +pub const HB_AAT_LAYOUT_FEATURE_TYPE_UPPER_CASE: hb_aat_layout_feature_type_t = 38; +pub const HB_AAT_LAYOUT_FEATURE_TYPE_LANGUAGE_TAG_TYPE: hb_aat_layout_feature_type_t = 39; +pub const HB_AAT_LAYOUT_FEATURE_TYPE_CJK_ROMAN_SPACING_TYPE: hb_aat_layout_feature_type_t = 103; +pub const _HB_AAT_LAYOUT_FEATURE_TYPE_MAX_VALUE: hb_aat_layout_feature_type_t = 2147483647; +#[doc = " hb_aat_layout_feature_type_t:\n @HB_AAT_LAYOUT_FEATURE_TYPE_INVALID: Initial, unset feature type\n @HB_AAT_LAYOUT_FEATURE_TYPE_ALL_TYPOGRAPHIC: [All Typographic Features](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type0)\n @HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES: [Ligatures](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type1)\n @HB_AAT_LAYOUT_FEATURE_TYPE_CURSIVE_CONNECTION: [Cursive Connection](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type2)\n @HB_AAT_LAYOUT_FEATURE_TYPE_LETTER_CASE: [Letter Case](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type3)\n @HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_SUBSTITUTION: [Vertical Substitution](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type4)\n @HB_AAT_LAYOUT_FEATURE_TYPE_LINGUISTIC_REARRANGEMENT: [Linguistic Rearrangement](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type5)\n @HB_AAT_LAYOUT_FEATURE_TYPE_NUMBER_SPACING: [Number Spacing](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type6)\n @HB_AAT_LAYOUT_FEATURE_TYPE_SMART_SWASH_TYPE: [Smart Swash](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type8)\n @HB_AAT_LAYOUT_FEATURE_TYPE_DIACRITICS_TYPE: [Diacritics](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type9)\n @HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_POSITION: [Vertical Position](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type10)\n @HB_AAT_LAYOUT_FEATURE_TYPE_FRACTIONS: [Fractions](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type11)\n @HB_AAT_LAYOUT_FEATURE_TYPE_OVERLAPPING_CHARACTERS_TYPE: [Overlapping Characters](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type13)\n @HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS: [Typographic Extras](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type14)\n @HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS: [Mathematical Extras](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type15)\n @HB_AAT_LAYOUT_FEATURE_TYPE_ORNAMENT_SETS_TYPE: [Ornament Sets](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type16)\n @HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_ALTERNATIVES: [Character Alternatives](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type17)\n @HB_AAT_LAYOUT_FEATURE_TYPE_DESIGN_COMPLEXITY_TYPE: [Design Complexity](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type18)\n @HB_AAT_LAYOUT_FEATURE_TYPE_STYLE_OPTIONS: [Style Options](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type19)\n @HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE: [Character Shape](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type20)\n @HB_AAT_LAYOUT_FEATURE_TYPE_NUMBER_CASE: [Number Case](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type21)\n @HB_AAT_LAYOUT_FEATURE_TYPE_TEXT_SPACING: [Text Spacing](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type22)\n @HB_AAT_LAYOUT_FEATURE_TYPE_TRANSLITERATION: [Transliteration](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type23)\n @HB_AAT_LAYOUT_FEATURE_TYPE_ANNOTATION_TYPE: [Annotation](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type24)\n @HB_AAT_LAYOUT_FEATURE_TYPE_KANA_SPACING_TYPE: [Kana Spacing](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type25)\n @HB_AAT_LAYOUT_FEATURE_TYPE_IDEOGRAPHIC_SPACING_TYPE: [Ideographic Spacing](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type26)\n @HB_AAT_LAYOUT_FEATURE_TYPE_UNICODE_DECOMPOSITION_TYPE: [Unicode Decomposition](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type27)\n @HB_AAT_LAYOUT_FEATURE_TYPE_RUBY_KANA: [Ruby Kana](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type28)\n @HB_AAT_LAYOUT_FEATURE_TYPE_CJK_SYMBOL_ALTERNATIVES_TYPE: [CJK Symbol Alternatives](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type29)\n @HB_AAT_LAYOUT_FEATURE_TYPE_IDEOGRAPHIC_ALTERNATIVES_TYPE: [Ideographic Alternatives](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type30)\n @HB_AAT_LAYOUT_FEATURE_TYPE_CJK_VERTICAL_ROMAN_PLACEMENT_TYPE: [CJK Vertical Roman Placement](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type31)\n @HB_AAT_LAYOUT_FEATURE_TYPE_ITALIC_CJK_ROMAN: [Italic CJK Roman](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type32)\n @HB_AAT_LAYOUT_FEATURE_TYPE_CASE_SENSITIVE_LAYOUT: [Case Sensitive Layout](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type33)\n @HB_AAT_LAYOUT_FEATURE_TYPE_ALTERNATE_KANA: [Alternate Kana](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type34)\n @HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES: [Stylistic Alternatives](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type35)\n @HB_AAT_LAYOUT_FEATURE_TYPE_CONTEXTUAL_ALTERNATIVES: [Contextual Alternatives](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type36)\n @HB_AAT_LAYOUT_FEATURE_TYPE_LOWER_CASE: [Lower Case](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type37)\n @HB_AAT_LAYOUT_FEATURE_TYPE_UPPER_CASE: [Upper Case](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type38)\n @HB_AAT_LAYOUT_FEATURE_TYPE_LANGUAGE_TAG_TYPE: [Language Tag](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type39)\n @HB_AAT_LAYOUT_FEATURE_TYPE_CJK_ROMAN_SPACING_TYPE: [CJK Roman Spacing](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type103)\n\n The possible feature types defined for AAT shaping, from Apple [Font Feature Registry](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html).\n\n Since: 2.2.0"] +pub type hb_aat_layout_feature_type_t = ::std::os::raw::c_uint; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_INVALID: hb_aat_layout_feature_selector_t = 65535; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_ALL_TYPE_FEATURES_ON: hb_aat_layout_feature_selector_t = 0; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_ALL_TYPE_FEATURES_OFF: hb_aat_layout_feature_selector_t = + 1; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_REQUIRED_LIGATURES_ON: hb_aat_layout_feature_selector_t = + 0; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_REQUIRED_LIGATURES_OFF: hb_aat_layout_feature_selector_t = + 1; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_COMMON_LIGATURES_ON: hb_aat_layout_feature_selector_t = 2; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_COMMON_LIGATURES_OFF: hb_aat_layout_feature_selector_t = 3; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_RARE_LIGATURES_ON: hb_aat_layout_feature_selector_t = 4; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_RARE_LIGATURES_OFF: hb_aat_layout_feature_selector_t = 5; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_LOGOS_ON: hb_aat_layout_feature_selector_t = 6; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_LOGOS_OFF: hb_aat_layout_feature_selector_t = 7; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_REBUS_PICTURES_ON: hb_aat_layout_feature_selector_t = 8; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_REBUS_PICTURES_OFF: hb_aat_layout_feature_selector_t = 9; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_DIPHTHONG_LIGATURES_ON: hb_aat_layout_feature_selector_t = + 10; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_DIPHTHONG_LIGATURES_OFF: hb_aat_layout_feature_selector_t = + 11; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_SQUARED_LIGATURES_ON: hb_aat_layout_feature_selector_t = + 12; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_SQUARED_LIGATURES_OFF: hb_aat_layout_feature_selector_t = + 13; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_ABBREV_SQUARED_LIGATURES_ON: + hb_aat_layout_feature_selector_t = 14; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_ABBREV_SQUARED_LIGATURES_OFF: + hb_aat_layout_feature_selector_t = 15; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_SYMBOL_LIGATURES_ON: hb_aat_layout_feature_selector_t = 16; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_SYMBOL_LIGATURES_OFF: hb_aat_layout_feature_selector_t = + 17; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_CONTEXTUAL_LIGATURES_ON: hb_aat_layout_feature_selector_t = + 18; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_CONTEXTUAL_LIGATURES_OFF: + hb_aat_layout_feature_selector_t = 19; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_HISTORICAL_LIGATURES_ON: hb_aat_layout_feature_selector_t = + 20; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_HISTORICAL_LIGATURES_OFF: + hb_aat_layout_feature_selector_t = 21; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_UNCONNECTED: hb_aat_layout_feature_selector_t = 0; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_PARTIALLY_CONNECTED: hb_aat_layout_feature_selector_t = 1; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_CURSIVE: hb_aat_layout_feature_selector_t = 2; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_UPPER_AND_LOWER_CASE: hb_aat_layout_feature_selector_t = 0; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_ALL_CAPS: hb_aat_layout_feature_selector_t = 1; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_ALL_LOWER_CASE: hb_aat_layout_feature_selector_t = 2; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_SMALL_CAPS: hb_aat_layout_feature_selector_t = 3; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_INITIAL_CAPS: hb_aat_layout_feature_selector_t = 4; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_INITIAL_CAPS_AND_SMALL_CAPS: + hb_aat_layout_feature_selector_t = 5; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_SUBSTITUTE_VERTICAL_FORMS_ON: + hb_aat_layout_feature_selector_t = 0; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_SUBSTITUTE_VERTICAL_FORMS_OFF: + hb_aat_layout_feature_selector_t = 1; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_LINGUISTIC_REARRANGEMENT_ON: + hb_aat_layout_feature_selector_t = 0; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_LINGUISTIC_REARRANGEMENT_OFF: + hb_aat_layout_feature_selector_t = 1; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_MONOSPACED_NUMBERS: hb_aat_layout_feature_selector_t = 0; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_PROPORTIONAL_NUMBERS: hb_aat_layout_feature_selector_t = 1; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_THIRD_WIDTH_NUMBERS: hb_aat_layout_feature_selector_t = 2; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_QUARTER_WIDTH_NUMBERS: hb_aat_layout_feature_selector_t = + 3; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_WORD_INITIAL_SWASHES_ON: hb_aat_layout_feature_selector_t = + 0; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_WORD_INITIAL_SWASHES_OFF: + hb_aat_layout_feature_selector_t = 1; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_WORD_FINAL_SWASHES_ON: hb_aat_layout_feature_selector_t = + 2; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_WORD_FINAL_SWASHES_OFF: hb_aat_layout_feature_selector_t = + 3; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_LINE_INITIAL_SWASHES_ON: hb_aat_layout_feature_selector_t = + 4; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_LINE_INITIAL_SWASHES_OFF: + hb_aat_layout_feature_selector_t = 5; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_LINE_FINAL_SWASHES_ON: hb_aat_layout_feature_selector_t = + 6; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_LINE_FINAL_SWASHES_OFF: hb_aat_layout_feature_selector_t = + 7; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_NON_FINAL_SWASHES_ON: hb_aat_layout_feature_selector_t = 8; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_NON_FINAL_SWASHES_OFF: hb_aat_layout_feature_selector_t = + 9; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_SHOW_DIACRITICS: hb_aat_layout_feature_selector_t = 0; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_HIDE_DIACRITICS: hb_aat_layout_feature_selector_t = 1; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_DECOMPOSE_DIACRITICS: hb_aat_layout_feature_selector_t = 2; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_NORMAL_POSITION: hb_aat_layout_feature_selector_t = 0; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_SUPERIORS: hb_aat_layout_feature_selector_t = 1; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_INFERIORS: hb_aat_layout_feature_selector_t = 2; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_ORDINALS: hb_aat_layout_feature_selector_t = 3; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_SCIENTIFIC_INFERIORS: hb_aat_layout_feature_selector_t = 4; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_FRACTIONS: hb_aat_layout_feature_selector_t = 0; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_VERTICAL_FRACTIONS: hb_aat_layout_feature_selector_t = 1; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_DIAGONAL_FRACTIONS: hb_aat_layout_feature_selector_t = 2; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_PREVENT_OVERLAP_ON: hb_aat_layout_feature_selector_t = 0; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_PREVENT_OVERLAP_OFF: hb_aat_layout_feature_selector_t = 1; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_HYPHENS_TO_EM_DASH_ON: hb_aat_layout_feature_selector_t = + 0; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_HYPHENS_TO_EM_DASH_OFF: hb_aat_layout_feature_selector_t = + 1; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_HYPHEN_TO_EN_DASH_ON: hb_aat_layout_feature_selector_t = 2; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_HYPHEN_TO_EN_DASH_OFF: hb_aat_layout_feature_selector_t = + 3; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_SLASHED_ZERO_ON: hb_aat_layout_feature_selector_t = 4; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_SLASHED_ZERO_OFF: hb_aat_layout_feature_selector_t = 5; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_FORM_INTERROBANG_ON: hb_aat_layout_feature_selector_t = 6; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_FORM_INTERROBANG_OFF: hb_aat_layout_feature_selector_t = 7; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_SMART_QUOTES_ON: hb_aat_layout_feature_selector_t = 8; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_SMART_QUOTES_OFF: hb_aat_layout_feature_selector_t = 9; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_PERIODS_TO_ELLIPSIS_ON: hb_aat_layout_feature_selector_t = + 10; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_PERIODS_TO_ELLIPSIS_OFF: hb_aat_layout_feature_selector_t = + 11; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_HYPHEN_TO_MINUS_ON: hb_aat_layout_feature_selector_t = 0; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_HYPHEN_TO_MINUS_OFF: hb_aat_layout_feature_selector_t = 1; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_ASTERISK_TO_MULTIPLY_ON: hb_aat_layout_feature_selector_t = + 2; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_ASTERISK_TO_MULTIPLY_OFF: + hb_aat_layout_feature_selector_t = 3; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_SLASH_TO_DIVIDE_ON: hb_aat_layout_feature_selector_t = 4; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_SLASH_TO_DIVIDE_OFF: hb_aat_layout_feature_selector_t = 5; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_INEQUALITY_LIGATURES_ON: hb_aat_layout_feature_selector_t = + 6; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_INEQUALITY_LIGATURES_OFF: + hb_aat_layout_feature_selector_t = 7; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_EXPONENTS_ON: hb_aat_layout_feature_selector_t = 8; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_EXPONENTS_OFF: hb_aat_layout_feature_selector_t = 9; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_MATHEMATICAL_GREEK_ON: hb_aat_layout_feature_selector_t = + 10; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_MATHEMATICAL_GREEK_OFF: hb_aat_layout_feature_selector_t = + 11; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_ORNAMENTS: hb_aat_layout_feature_selector_t = 0; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_DINGBATS: hb_aat_layout_feature_selector_t = 1; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_PI_CHARACTERS: hb_aat_layout_feature_selector_t = 2; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_FLEURONS: hb_aat_layout_feature_selector_t = 3; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_DECORATIVE_BORDERS: hb_aat_layout_feature_selector_t = 4; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_INTERNATIONAL_SYMBOLS: hb_aat_layout_feature_selector_t = + 5; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_MATH_SYMBOLS: hb_aat_layout_feature_selector_t = 6; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_ALTERNATES: hb_aat_layout_feature_selector_t = 0; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_DESIGN_LEVEL1: hb_aat_layout_feature_selector_t = 0; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_DESIGN_LEVEL2: hb_aat_layout_feature_selector_t = 1; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_DESIGN_LEVEL3: hb_aat_layout_feature_selector_t = 2; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_DESIGN_LEVEL4: hb_aat_layout_feature_selector_t = 3; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_DESIGN_LEVEL5: hb_aat_layout_feature_selector_t = 4; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_STYLE_OPTIONS: hb_aat_layout_feature_selector_t = 0; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_DISPLAY_TEXT: hb_aat_layout_feature_selector_t = 1; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_ENGRAVED_TEXT: hb_aat_layout_feature_selector_t = 2; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_ILLUMINATED_CAPS: hb_aat_layout_feature_selector_t = 3; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_TITLING_CAPS: hb_aat_layout_feature_selector_t = 4; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_TALL_CAPS: hb_aat_layout_feature_selector_t = 5; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_TRADITIONAL_CHARACTERS: hb_aat_layout_feature_selector_t = + 0; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_SIMPLIFIED_CHARACTERS: hb_aat_layout_feature_selector_t = + 1; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_JIS1978_CHARACTERS: hb_aat_layout_feature_selector_t = 2; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_JIS1983_CHARACTERS: hb_aat_layout_feature_selector_t = 3; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_JIS1990_CHARACTERS: hb_aat_layout_feature_selector_t = 4; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_TRADITIONAL_ALT_ONE: hb_aat_layout_feature_selector_t = 5; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_TRADITIONAL_ALT_TWO: hb_aat_layout_feature_selector_t = 6; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_TRADITIONAL_ALT_THREE: hb_aat_layout_feature_selector_t = + 7; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_TRADITIONAL_ALT_FOUR: hb_aat_layout_feature_selector_t = 8; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_TRADITIONAL_ALT_FIVE: hb_aat_layout_feature_selector_t = 9; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_EXPERT_CHARACTERS: hb_aat_layout_feature_selector_t = 10; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_JIS2004_CHARACTERS: hb_aat_layout_feature_selector_t = 11; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_HOJO_CHARACTERS: hb_aat_layout_feature_selector_t = 12; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_NLCCHARACTERS: hb_aat_layout_feature_selector_t = 13; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_TRADITIONAL_NAMES_CHARACTERS: + hb_aat_layout_feature_selector_t = 14; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_LOWER_CASE_NUMBERS: hb_aat_layout_feature_selector_t = 0; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_UPPER_CASE_NUMBERS: hb_aat_layout_feature_selector_t = 1; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_PROPORTIONAL_TEXT: hb_aat_layout_feature_selector_t = 0; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_MONOSPACED_TEXT: hb_aat_layout_feature_selector_t = 1; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_HALF_WIDTH_TEXT: hb_aat_layout_feature_selector_t = 2; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_THIRD_WIDTH_TEXT: hb_aat_layout_feature_selector_t = 3; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_QUARTER_WIDTH_TEXT: hb_aat_layout_feature_selector_t = 4; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_ALT_PROPORTIONAL_TEXT: hb_aat_layout_feature_selector_t = + 5; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_ALT_HALF_WIDTH_TEXT: hb_aat_layout_feature_selector_t = 6; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_TRANSLITERATION: hb_aat_layout_feature_selector_t = 0; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_HANJA_TO_HANGUL: hb_aat_layout_feature_selector_t = 1; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_HIRAGANA_TO_KATAKANA: hb_aat_layout_feature_selector_t = 2; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_KATAKANA_TO_HIRAGANA: hb_aat_layout_feature_selector_t = 3; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_KANA_TO_ROMANIZATION: hb_aat_layout_feature_selector_t = 4; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_ROMANIZATION_TO_HIRAGANA: + hb_aat_layout_feature_selector_t = 5; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_ROMANIZATION_TO_KATAKANA: + hb_aat_layout_feature_selector_t = 6; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_HANJA_TO_HANGUL_ALT_ONE: hb_aat_layout_feature_selector_t = + 7; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_HANJA_TO_HANGUL_ALT_TWO: hb_aat_layout_feature_selector_t = + 8; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_HANJA_TO_HANGUL_ALT_THREE: + hb_aat_layout_feature_selector_t = 9; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_ANNOTATION: hb_aat_layout_feature_selector_t = 0; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_BOX_ANNOTATION: hb_aat_layout_feature_selector_t = 1; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_ROUNDED_BOX_ANNOTATION: hb_aat_layout_feature_selector_t = + 2; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_CIRCLE_ANNOTATION: hb_aat_layout_feature_selector_t = 3; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_INVERTED_CIRCLE_ANNOTATION: + hb_aat_layout_feature_selector_t = 4; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_PARENTHESIS_ANNOTATION: hb_aat_layout_feature_selector_t = + 5; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_PERIOD_ANNOTATION: hb_aat_layout_feature_selector_t = 6; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_ROMAN_NUMERAL_ANNOTATION: + hb_aat_layout_feature_selector_t = 7; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_DIAMOND_ANNOTATION: hb_aat_layout_feature_selector_t = 8; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_INVERTED_BOX_ANNOTATION: hb_aat_layout_feature_selector_t = + 9; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_INVERTED_ROUNDED_BOX_ANNOTATION: + hb_aat_layout_feature_selector_t = 10; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_FULL_WIDTH_KANA: hb_aat_layout_feature_selector_t = 0; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_PROPORTIONAL_KANA: hb_aat_layout_feature_selector_t = 1; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_FULL_WIDTH_IDEOGRAPHS: hb_aat_layout_feature_selector_t = + 0; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_PROPORTIONAL_IDEOGRAPHS: hb_aat_layout_feature_selector_t = + 1; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_HALF_WIDTH_IDEOGRAPHS: hb_aat_layout_feature_selector_t = + 2; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_CANONICAL_COMPOSITION_ON: + hb_aat_layout_feature_selector_t = 0; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_CANONICAL_COMPOSITION_OFF: + hb_aat_layout_feature_selector_t = 1; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_COMPATIBILITY_COMPOSITION_ON: + hb_aat_layout_feature_selector_t = 2; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_COMPATIBILITY_COMPOSITION_OFF: + hb_aat_layout_feature_selector_t = 3; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_TRANSCODING_COMPOSITION_ON: + hb_aat_layout_feature_selector_t = 4; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_TRANSCODING_COMPOSITION_OFF: + hb_aat_layout_feature_selector_t = 5; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_RUBY_KANA: hb_aat_layout_feature_selector_t = 0; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_RUBY_KANA: hb_aat_layout_feature_selector_t = 1; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_RUBY_KANA_ON: hb_aat_layout_feature_selector_t = 2; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_RUBY_KANA_OFF: hb_aat_layout_feature_selector_t = 3; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_CJK_SYMBOL_ALTERNATIVES: + hb_aat_layout_feature_selector_t = 0; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_SYMBOL_ALT_ONE: hb_aat_layout_feature_selector_t = 1; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_SYMBOL_ALT_TWO: hb_aat_layout_feature_selector_t = 2; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_SYMBOL_ALT_THREE: hb_aat_layout_feature_selector_t = 3; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_SYMBOL_ALT_FOUR: hb_aat_layout_feature_selector_t = 4; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_SYMBOL_ALT_FIVE: hb_aat_layout_feature_selector_t = 5; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_IDEOGRAPHIC_ALTERNATIVES: + hb_aat_layout_feature_selector_t = 0; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_IDEOGRAPHIC_ALT_ONE: hb_aat_layout_feature_selector_t = 1; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_IDEOGRAPHIC_ALT_TWO: hb_aat_layout_feature_selector_t = 2; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_IDEOGRAPHIC_ALT_THREE: hb_aat_layout_feature_selector_t = + 3; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_IDEOGRAPHIC_ALT_FOUR: hb_aat_layout_feature_selector_t = 4; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_IDEOGRAPHIC_ALT_FIVE: hb_aat_layout_feature_selector_t = 5; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_VERTICAL_ROMAN_CENTERED: + hb_aat_layout_feature_selector_t = 0; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_VERTICAL_ROMAN_HBASELINE: + hb_aat_layout_feature_selector_t = 1; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_CJK_ITALIC_ROMAN: hb_aat_layout_feature_selector_t = 0; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_ITALIC_ROMAN: hb_aat_layout_feature_selector_t = 1; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_ITALIC_ROMAN_ON: hb_aat_layout_feature_selector_t = 2; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_ITALIC_ROMAN_OFF: hb_aat_layout_feature_selector_t = 3; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_CASE_SENSITIVE_LAYOUT_ON: + hb_aat_layout_feature_selector_t = 0; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_CASE_SENSITIVE_LAYOUT_OFF: + hb_aat_layout_feature_selector_t = 1; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_CASE_SENSITIVE_SPACING_ON: + hb_aat_layout_feature_selector_t = 2; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_CASE_SENSITIVE_SPACING_OFF: + hb_aat_layout_feature_selector_t = 3; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_ALTERNATE_HORIZ_KANA_ON: hb_aat_layout_feature_selector_t = + 0; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_ALTERNATE_HORIZ_KANA_OFF: + hb_aat_layout_feature_selector_t = 1; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_ALTERNATE_VERT_KANA_ON: hb_aat_layout_feature_selector_t = + 2; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_ALTERNATE_VERT_KANA_OFF: hb_aat_layout_feature_selector_t = + 3; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_STYLISTIC_ALTERNATES: hb_aat_layout_feature_selector_t = + 0; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_ONE_ON: hb_aat_layout_feature_selector_t = 2; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_ONE_OFF: hb_aat_layout_feature_selector_t = + 3; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TWO_ON: hb_aat_layout_feature_selector_t = 4; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TWO_OFF: hb_aat_layout_feature_selector_t = + 5; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_THREE_ON: hb_aat_layout_feature_selector_t = + 6; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_THREE_OFF: hb_aat_layout_feature_selector_t = + 7; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FOUR_ON: hb_aat_layout_feature_selector_t = + 8; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FOUR_OFF: hb_aat_layout_feature_selector_t = + 9; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FIVE_ON: hb_aat_layout_feature_selector_t = + 10; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FIVE_OFF: hb_aat_layout_feature_selector_t = + 11; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SIX_ON: hb_aat_layout_feature_selector_t = + 12; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SIX_OFF: hb_aat_layout_feature_selector_t = + 13; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SEVEN_ON: hb_aat_layout_feature_selector_t = + 14; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SEVEN_OFF: hb_aat_layout_feature_selector_t = + 15; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_EIGHT_ON: hb_aat_layout_feature_selector_t = + 16; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_EIGHT_OFF: hb_aat_layout_feature_selector_t = + 17; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_NINE_ON: hb_aat_layout_feature_selector_t = + 18; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_NINE_OFF: hb_aat_layout_feature_selector_t = + 19; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TEN_ON: hb_aat_layout_feature_selector_t = + 20; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TEN_OFF: hb_aat_layout_feature_selector_t = + 21; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_ELEVEN_ON: hb_aat_layout_feature_selector_t = + 22; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_ELEVEN_OFF: + hb_aat_layout_feature_selector_t = 23; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TWELVE_ON: hb_aat_layout_feature_selector_t = + 24; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TWELVE_OFF: + hb_aat_layout_feature_selector_t = 25; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_THIRTEEN_ON: + hb_aat_layout_feature_selector_t = 26; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_THIRTEEN_OFF: + hb_aat_layout_feature_selector_t = 27; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FOURTEEN_ON: + hb_aat_layout_feature_selector_t = 28; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FOURTEEN_OFF: + hb_aat_layout_feature_selector_t = 29; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FIFTEEN_ON: + hb_aat_layout_feature_selector_t = 30; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FIFTEEN_OFF: + hb_aat_layout_feature_selector_t = 31; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SIXTEEN_ON: + hb_aat_layout_feature_selector_t = 32; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SIXTEEN_OFF: + hb_aat_layout_feature_selector_t = 33; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SEVENTEEN_ON: + hb_aat_layout_feature_selector_t = 34; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SEVENTEEN_OFF: + hb_aat_layout_feature_selector_t = 35; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_EIGHTEEN_ON: + hb_aat_layout_feature_selector_t = 36; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_EIGHTEEN_OFF: + hb_aat_layout_feature_selector_t = 37; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_NINETEEN_ON: + hb_aat_layout_feature_selector_t = 38; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_NINETEEN_OFF: + hb_aat_layout_feature_selector_t = 39; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TWENTY_ON: hb_aat_layout_feature_selector_t = + 40; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TWENTY_OFF: + hb_aat_layout_feature_selector_t = 41; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_CONTEXTUAL_ALTERNATES_ON: + hb_aat_layout_feature_selector_t = 0; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_CONTEXTUAL_ALTERNATES_OFF: + hb_aat_layout_feature_selector_t = 1; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_SWASH_ALTERNATES_ON: hb_aat_layout_feature_selector_t = 2; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_SWASH_ALTERNATES_OFF: hb_aat_layout_feature_selector_t = 3; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_CONTEXTUAL_SWASH_ALTERNATES_ON: + hb_aat_layout_feature_selector_t = 4; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_CONTEXTUAL_SWASH_ALTERNATES_OFF: + hb_aat_layout_feature_selector_t = 5; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_DEFAULT_LOWER_CASE: hb_aat_layout_feature_selector_t = 0; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_LOWER_CASE_SMALL_CAPS: hb_aat_layout_feature_selector_t = + 1; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_LOWER_CASE_PETITE_CAPS: hb_aat_layout_feature_selector_t = + 2; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_DEFAULT_UPPER_CASE: hb_aat_layout_feature_selector_t = 0; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_UPPER_CASE_SMALL_CAPS: hb_aat_layout_feature_selector_t = + 1; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_UPPER_CASE_PETITE_CAPS: hb_aat_layout_feature_selector_t = + 2; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_HALF_WIDTH_CJK_ROMAN: hb_aat_layout_feature_selector_t = 0; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_PROPORTIONAL_CJK_ROMAN: hb_aat_layout_feature_selector_t = + 1; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_DEFAULT_CJK_ROMAN: hb_aat_layout_feature_selector_t = 2; +pub const HB_AAT_LAYOUT_FEATURE_SELECTOR_FULL_WIDTH_CJK_ROMAN: hb_aat_layout_feature_selector_t = 3; +pub const _HB_AAT_LAYOUT_FEATURE_SELECTOR_MAX_VALUE: hb_aat_layout_feature_selector_t = 2147483647; +#[doc = " hb_aat_layout_feature_selector_t:\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_INVALID: Initial, unset feature selector\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_ALL_TYPE_FEATURES_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_ALL_TYPOGRAPHIC\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_ALL_TYPE_FEATURES_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_ALL_TYPOGRAPHIC\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_REQUIRED_LIGATURES_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_REQUIRED_LIGATURES_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_COMMON_LIGATURES_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_COMMON_LIGATURES_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_RARE_LIGATURES_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_RARE_LIGATURES_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_LOGOS_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_LOGOS_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_REBUS_PICTURES_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_REBUS_PICTURES_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_DIPHTHONG_LIGATURES_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_DIPHTHONG_LIGATURES_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_SQUARED_LIGATURES_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_SQUARED_LIGATURES_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_ABBREV_SQUARED_LIGATURES_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_ABBREV_SQUARED_LIGATURES_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_SYMBOL_LIGATURES_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_SYMBOL_LIGATURES_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_CONTEXTUAL_LIGATURES_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_CONTEXTUAL_LIGATURES_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_HISTORICAL_LIGATURES_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_HISTORICAL_LIGATURES_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_UNCONNECTED: for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_PARTIALLY_CONNECTED: for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_CURSIVE: for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_UPPER_AND_LOWER_CASE: Deprecated\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_ALL_CAPS: Deprecated\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_ALL_LOWER_CASE: Deprecated\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_SMALL_CAPS: Deprecated\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_INITIAL_CAPS: Deprecated\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_INITIAL_CAPS_AND_SMALL_CAPS: Deprecated\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_SUBSTITUTE_VERTICAL_FORMS_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_SUBSTITUTION\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_SUBSTITUTE_VERTICAL_FORMS_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_SUBSTITUTION\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_LINGUISTIC_REARRANGEMENT_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_LINGUISTIC_REARRANGEMENT\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_LINGUISTIC_REARRANGEMENT_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_LINGUISTIC_REARRANGEMENT\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_MONOSPACED_NUMBERS: for #HB_AAT_LAYOUT_FEATURE_TYPE_NUMBER_SPACING\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_PROPORTIONAL_NUMBERS: for #HB_AAT_LAYOUT_FEATURE_TYPE_NUMBER_SPACING\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_THIRD_WIDTH_NUMBERS: for #HB_AAT_LAYOUT_FEATURE_TYPE_NUMBER_SPACING\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_QUARTER_WIDTH_NUMBERS: for #HB_AAT_LAYOUT_FEATURE_TYPE_NUMBER_SPACING\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_WORD_INITIAL_SWASHES_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_SMART_SWASH_TYPE\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_WORD_INITIAL_SWASHES_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_SMART_SWASH_TYPE\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_WORD_FINAL_SWASHES_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_SMART_SWASH_TYPE\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_WORD_FINAL_SWASHES_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_SMART_SWASH_TYPE\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_LINE_INITIAL_SWASHES_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_SMART_SWASH_TYPE\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_LINE_INITIAL_SWASHES_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_SMART_SWASH_TYPE\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_LINE_FINAL_SWASHES_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_SMART_SWASH_TYPE\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_LINE_FINAL_SWASHES_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_SMART_SWASH_TYPE\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_NON_FINAL_SWASHES_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_SMART_SWASH_TYPE\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_NON_FINAL_SWASHES_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_SMART_SWASH_TYPE\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_SHOW_DIACRITICS: for #HB_AAT_LAYOUT_FEATURE_TYPE_DIACRITICS_TYPE\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_HIDE_DIACRITICS: for #HB_AAT_LAYOUT_FEATURE_TYPE_DIACRITICS_TYPE\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_DECOMPOSE_DIACRITICS: for #HB_AAT_LAYOUT_FEATURE_TYPE_DIACRITICS_TYPE\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_NORMAL_POSITION: for #HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_POSITION\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_SUPERIORS: for #HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_POSITION\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_INFERIORS: for #HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_POSITION\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_ORDINALS: for #HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_POSITION\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_SCIENTIFIC_INFERIORS: for #HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_POSITION\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_FRACTIONS: for #HB_AAT_LAYOUT_FEATURE_TYPE_FRACTIONS\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_VERTICAL_FRACTIONS: for #HB_AAT_LAYOUT_FEATURE_TYPE_FRACTIONS\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_DIAGONAL_FRACTIONS: for #HB_AAT_LAYOUT_FEATURE_TYPE_FRACTIONS\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_PREVENT_OVERLAP_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_OVERLAPPING_CHARACTERS_TYPE\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_PREVENT_OVERLAP_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_OVERLAPPING_CHARACTERS_TYPE\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_HYPHENS_TO_EM_DASH_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_HYPHENS_TO_EM_DASH_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_HYPHEN_TO_EN_DASH_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_HYPHEN_TO_EN_DASH_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_SLASHED_ZERO_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_SLASHED_ZERO_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_FORM_INTERROBANG_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_FORM_INTERROBANG_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_SMART_QUOTES_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_SMART_QUOTES_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_PERIODS_TO_ELLIPSIS_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_PERIODS_TO_ELLIPSIS_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_HYPHEN_TO_MINUS_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_HYPHEN_TO_MINUS_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_ASTERISK_TO_MULTIPLY_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_ASTERISK_TO_MULTIPLY_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_SLASH_TO_DIVIDE_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_SLASH_TO_DIVIDE_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_INEQUALITY_LIGATURES_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_INEQUALITY_LIGATURES_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_EXPONENTS_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_EXPONENTS_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_MATHEMATICAL_GREEK_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_MATHEMATICAL_GREEK_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_ORNAMENTS: for #HB_AAT_LAYOUT_FEATURE_TYPE_ORNAMENT_SETS_TYPE\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_DINGBATS: for #HB_AAT_LAYOUT_FEATURE_TYPE_ORNAMENT_SETS_TYPE\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_PI_CHARACTERS: for #HB_AAT_LAYOUT_FEATURE_TYPE_ORNAMENT_SETS_TYPE\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_FLEURONS: for #HB_AAT_LAYOUT_FEATURE_TYPE_ORNAMENT_SETS_TYPE\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_DECORATIVE_BORDERS: for #HB_AAT_LAYOUT_FEATURE_TYPE_ORNAMENT_SETS_TYPE\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_INTERNATIONAL_SYMBOLS: for #HB_AAT_LAYOUT_FEATURE_TYPE_ORNAMENT_SETS_TYPE\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_MATH_SYMBOLS: for #HB_AAT_LAYOUT_FEATURE_TYPE_ORNAMENT_SETS_TYPE\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_ALTERNATES: for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_ALTERNATIVES\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_DESIGN_LEVEL1: for #HB_AAT_LAYOUT_FEATURE_TYPE_DESIGN_COMPLEXITY_TYPE\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_DESIGN_LEVEL2: for #HB_AAT_LAYOUT_FEATURE_TYPE_DESIGN_COMPLEXITY_TYPE\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_DESIGN_LEVEL3: for #HB_AAT_LAYOUT_FEATURE_TYPE_DESIGN_COMPLEXITY_TYPE\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_DESIGN_LEVEL4: for #HB_AAT_LAYOUT_FEATURE_TYPE_DESIGN_COMPLEXITY_TYPE\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_DESIGN_LEVEL5: for #HB_AAT_LAYOUT_FEATURE_TYPE_DESIGN_COMPLEXITY_TYPE\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_STYLE_OPTIONS: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLE_OPTIONS\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_DISPLAY_TEXT: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLE_OPTIONS\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_ENGRAVED_TEXT: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLE_OPTIONS\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_ILLUMINATED_CAPS: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLE_OPTIONS\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_TITLING_CAPS: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLE_OPTIONS\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_TALL_CAPS: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLE_OPTIONS\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_TRADITIONAL_CHARACTERS: for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_SIMPLIFIED_CHARACTERS: for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_JIS1978_CHARACTERS: for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_JIS1983_CHARACTERS: for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_JIS1990_CHARACTERS: for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_TRADITIONAL_ALT_ONE: for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_TRADITIONAL_ALT_TWO: for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_TRADITIONAL_ALT_THREE: for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_TRADITIONAL_ALT_FOUR: for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_TRADITIONAL_ALT_FIVE: for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_EXPERT_CHARACTERS: for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_JIS2004_CHARACTERS: for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_HOJO_CHARACTERS: for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_NLCCHARACTERS: for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_TRADITIONAL_NAMES_CHARACTERS: for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_LOWER_CASE_NUMBERS: for #HB_AAT_LAYOUT_FEATURE_TYPE_NUMBER_CASE\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_UPPER_CASE_NUMBERS: for #HB_AAT_LAYOUT_FEATURE_TYPE_NUMBER_CASE\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_PROPORTIONAL_TEXT: for #HB_AAT_LAYOUT_FEATURE_TYPE_TEXT_SPACING\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_MONOSPACED_TEXT: for #HB_AAT_LAYOUT_FEATURE_TYPE_TEXT_SPACING\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_HALF_WIDTH_TEXT: for #HB_AAT_LAYOUT_FEATURE_TYPE_TEXT_SPACING\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_THIRD_WIDTH_TEXT: for #HB_AAT_LAYOUT_FEATURE_TYPE_TEXT_SPACING\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_QUARTER_WIDTH_TEXT: for #HB_AAT_LAYOUT_FEATURE_TYPE_TEXT_SPACING\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_ALT_PROPORTIONAL_TEXT: for #HB_AAT_LAYOUT_FEATURE_TYPE_TEXT_SPACING\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_ALT_HALF_WIDTH_TEXT: for #HB_AAT_LAYOUT_FEATURE_TYPE_TEXT_SPACING\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_TRANSLITERATION: for #HB_AAT_LAYOUT_FEATURE_TYPE_TRANSLITERATION\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_HANJA_TO_HANGUL: for #HB_AAT_LAYOUT_FEATURE_TYPE_TRANSLITERATION\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_HIRAGANA_TO_KATAKANA: for #HB_AAT_LAYOUT_FEATURE_TYPE_TRANSLITERATION\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_KATAKANA_TO_HIRAGANA: for #HB_AAT_LAYOUT_FEATURE_TYPE_TRANSLITERATION\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_KANA_TO_ROMANIZATION: for #HB_AAT_LAYOUT_FEATURE_TYPE_TRANSLITERATION\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_ROMANIZATION_TO_HIRAGANA: for #HB_AAT_LAYOUT_FEATURE_TYPE_TRANSLITERATION\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_ROMANIZATION_TO_KATAKANA: for #HB_AAT_LAYOUT_FEATURE_TYPE_TRANSLITERATION\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_HANJA_TO_HANGUL_ALT_ONE: for #HB_AAT_LAYOUT_FEATURE_TYPE_TRANSLITERATION\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_HANJA_TO_HANGUL_ALT_TWO: for #HB_AAT_LAYOUT_FEATURE_TYPE_TRANSLITERATION\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_HANJA_TO_HANGUL_ALT_THREE: for #HB_AAT_LAYOUT_FEATURE_TYPE_TRANSLITERATION\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_ANNOTATION: for #HB_AAT_LAYOUT_FEATURE_TYPE_ANNOTATION_TYPE\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_BOX_ANNOTATION: for #HB_AAT_LAYOUT_FEATURE_TYPE_ANNOTATION_TYPE\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_ROUNDED_BOX_ANNOTATION: for #HB_AAT_LAYOUT_FEATURE_TYPE_ANNOTATION_TYPE\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_CIRCLE_ANNOTATION: for #HB_AAT_LAYOUT_FEATURE_TYPE_ANNOTATION_TYPE\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_INVERTED_CIRCLE_ANNOTATION: for #HB_AAT_LAYOUT_FEATURE_TYPE_ANNOTATION_TYPE\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_PARENTHESIS_ANNOTATION: for #HB_AAT_LAYOUT_FEATURE_TYPE_ANNOTATION_TYPE\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_PERIOD_ANNOTATION: for #HB_AAT_LAYOUT_FEATURE_TYPE_ANNOTATION_TYPE\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_ROMAN_NUMERAL_ANNOTATION: for #HB_AAT_LAYOUT_FEATURE_TYPE_ANNOTATION_TYPE\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_DIAMOND_ANNOTATION: for #HB_AAT_LAYOUT_FEATURE_TYPE_ANNOTATION_TYPE\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_INVERTED_BOX_ANNOTATION: for #HB_AAT_LAYOUT_FEATURE_TYPE_ANNOTATION_TYPE\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_INVERTED_ROUNDED_BOX_ANNOTATION: for #HB_AAT_LAYOUT_FEATURE_TYPE_ANNOTATION_TYPE\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_FULL_WIDTH_KANA: for #HB_AAT_LAYOUT_FEATURE_TYPE_KANA_SPACING_TYPE\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_PROPORTIONAL_KANA: for #HB_AAT_LAYOUT_FEATURE_TYPE_KANA_SPACING_TYPE\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_FULL_WIDTH_IDEOGRAPHS: for #HB_AAT_LAYOUT_FEATURE_TYPE_IDEOGRAPHIC_SPACING_TYPE\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_PROPORTIONAL_IDEOGRAPHS: for #HB_AAT_LAYOUT_FEATURE_TYPE_IDEOGRAPHIC_SPACING_TYPE\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_HALF_WIDTH_IDEOGRAPHS: for #HB_AAT_LAYOUT_FEATURE_TYPE_IDEOGRAPHIC_SPACING_TYPE\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_CANONICAL_COMPOSITION_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_UNICODE_DECOMPOSITION_TYPE\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_CANONICAL_COMPOSITION_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_UNICODE_DECOMPOSITION_TYPE\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_COMPATIBILITY_COMPOSITION_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_UNICODE_DECOMPOSITION_TYPE\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_COMPATIBILITY_COMPOSITION_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_UNICODE_DECOMPOSITION_TYPE\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_TRANSCODING_COMPOSITION_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_UNICODE_DECOMPOSITION_TYPE\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_TRANSCODING_COMPOSITION_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_UNICODE_DECOMPOSITION_TYPE\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_RUBY_KANA: Deprecated; use #HB_AAT_LAYOUT_FEATURE_SELECTOR_RUBY_KANA_OFF instead\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_RUBY_KANA: Deprecated; use #HB_AAT_LAYOUT_FEATURE_SELECTOR_RUBY_KANA_ON instead\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_RUBY_KANA_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_RUBY_KANA\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_RUBY_KANA_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_RUBY_KANA\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_CJK_SYMBOL_ALTERNATIVES: for #HB_AAT_LAYOUT_FEATURE_TYPE_CJK_SYMBOL_ALTERNATIVES_TYPE\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_SYMBOL_ALT_ONE: for #HB_AAT_LAYOUT_FEATURE_TYPE_CJK_SYMBOL_ALTERNATIVES_TYPE\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_SYMBOL_ALT_TWO: for #HB_AAT_LAYOUT_FEATURE_TYPE_CJK_SYMBOL_ALTERNATIVES_TYPE\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_SYMBOL_ALT_THREE: for #HB_AAT_LAYOUT_FEATURE_TYPE_CJK_SYMBOL_ALTERNATIVES_TYPE\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_SYMBOL_ALT_FOUR: for #HB_AAT_LAYOUT_FEATURE_TYPE_CJK_SYMBOL_ALTERNATIVES_TYPE\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_SYMBOL_ALT_FIVE: for #HB_AAT_LAYOUT_FEATURE_TYPE_CJK_SYMBOL_ALTERNATIVES_TYPE\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_IDEOGRAPHIC_ALTERNATIVES: for #HB_AAT_LAYOUT_FEATURE_TYPE_IDEOGRAPHIC_ALTERNATIVES_TYPE\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_IDEOGRAPHIC_ALT_ONE: for #HB_AAT_LAYOUT_FEATURE_TYPE_IDEOGRAPHIC_ALTERNATIVES_TYPE\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_IDEOGRAPHIC_ALT_TWO: for #HB_AAT_LAYOUT_FEATURE_TYPE_IDEOGRAPHIC_ALTERNATIVES_TYPE\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_IDEOGRAPHIC_ALT_THREE: for #HB_AAT_LAYOUT_FEATURE_TYPE_IDEOGRAPHIC_ALTERNATIVES_TYPE\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_IDEOGRAPHIC_ALT_FOUR: for #HB_AAT_LAYOUT_FEATURE_TYPE_IDEOGRAPHIC_ALTERNATIVES_TYPE\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_IDEOGRAPHIC_ALT_FIVE: for #HB_AAT_LAYOUT_FEATURE_TYPE_IDEOGRAPHIC_ALTERNATIVES_TYPE\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_VERTICAL_ROMAN_CENTERED: for #HB_AAT_LAYOUT_FEATURE_TYPE_CJK_VERTICAL_ROMAN_PLACEMENT_TYPE\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_VERTICAL_ROMAN_HBASELINE: for #HB_AAT_LAYOUT_FEATURE_TYPE_CJK_VERTICAL_ROMAN_PLACEMENT_TYPE\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_CJK_ITALIC_ROMAN: Deprecated; use #HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_ITALIC_ROMAN_OFF instead\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_ITALIC_ROMAN: Deprecated; use #HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_ITALIC_ROMAN_ON instead\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_ITALIC_ROMAN_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_ITALIC_CJK_ROMAN\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_ITALIC_ROMAN_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_ITALIC_CJK_ROMAN\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_CASE_SENSITIVE_LAYOUT_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_CASE_SENSITIVE_LAYOUT\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_CASE_SENSITIVE_LAYOUT_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_CASE_SENSITIVE_LAYOUT\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_CASE_SENSITIVE_SPACING_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_CASE_SENSITIVE_LAYOUT\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_CASE_SENSITIVE_SPACING_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_CASE_SENSITIVE_LAYOUT\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_ALTERNATE_HORIZ_KANA_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_ALTERNATE_KANA\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_ALTERNATE_HORIZ_KANA_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_ALTERNATE_KANA\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_ALTERNATE_VERT_KANA_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_ALTERNATE_KANA\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_ALTERNATE_VERT_KANA_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_ALTERNATE_KANA\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_STYLISTIC_ALTERNATES: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_ONE_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_ONE_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TWO_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TWO_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_THREE_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_THREE_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FOUR_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FOUR_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FIVE_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FIVE_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SIX_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SIX_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SEVEN_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SEVEN_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_EIGHT_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_EIGHT_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_NINE_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_NINE_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TEN_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TEN_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_ELEVEN_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_ELEVEN_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TWELVE_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TWELVE_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_THIRTEEN_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_THIRTEEN_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FOURTEEN_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FOURTEEN_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FIFTEEN_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FIFTEEN_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SIXTEEN_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SIXTEEN_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SEVENTEEN_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SEVENTEEN_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_EIGHTEEN_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_EIGHTEEN_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_NINETEEN_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_NINETEEN_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TWENTY_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TWENTY_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_CONTEXTUAL_ALTERNATES_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_CONTEXTUAL_ALTERNATIVES\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_CONTEXTUAL_ALTERNATES_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_CONTEXTUAL_ALTERNATIVES\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_SWASH_ALTERNATES_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_CONTEXTUAL_ALTERNATIVES\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_SWASH_ALTERNATES_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_CONTEXTUAL_ALTERNATIVES\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_CONTEXTUAL_SWASH_ALTERNATES_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_CONTEXTUAL_ALTERNATIVES\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_CONTEXTUAL_SWASH_ALTERNATES_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_CONTEXTUAL_ALTERNATIVES\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_DEFAULT_LOWER_CASE: for #HB_AAT_LAYOUT_FEATURE_TYPE_LOWER_CASE\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_LOWER_CASE_SMALL_CAPS: for #HB_AAT_LAYOUT_FEATURE_TYPE_LOWER_CASE\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_LOWER_CASE_PETITE_CAPS: for #HB_AAT_LAYOUT_FEATURE_TYPE_LOWER_CASE\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_DEFAULT_UPPER_CASE: for #HB_AAT_LAYOUT_FEATURE_TYPE_UPPER_CASE\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_UPPER_CASE_SMALL_CAPS: for #HB_AAT_LAYOUT_FEATURE_TYPE_UPPER_CASE\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_UPPER_CASE_PETITE_CAPS: for #HB_AAT_LAYOUT_FEATURE_TYPE_UPPER_CASE\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_HALF_WIDTH_CJK_ROMAN: for #HB_AAT_LAYOUT_FEATURE_TYPE_CJK_ROMAN_SPACING_TYPE\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_PROPORTIONAL_CJK_ROMAN: for #HB_AAT_LAYOUT_FEATURE_TYPE_CJK_ROMAN_SPACING_TYPE\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_DEFAULT_CJK_ROMAN: for #HB_AAT_LAYOUT_FEATURE_TYPE_CJK_ROMAN_SPACING_TYPE\n @HB_AAT_LAYOUT_FEATURE_SELECTOR_FULL_WIDTH_CJK_ROMAN: for #HB_AAT_LAYOUT_FEATURE_TYPE_CJK_ROMAN_SPACING_TYPE\n\n The selectors defined for specifying AAT feature settings.\n\n Since: 2.2.0"] +pub type hb_aat_layout_feature_selector_t = ::std::os::raw::c_uint; +extern "C" { + pub fn hb_aat_layout_get_feature_types( + face: *mut hb_face_t, + start_offset: ::std::os::raw::c_uint, + feature_count: *mut ::std::os::raw::c_uint, + features: *mut hb_aat_layout_feature_type_t, + ) -> ::std::os::raw::c_uint; +} +extern "C" { + pub fn hb_aat_layout_feature_type_get_name_id( + face: *mut hb_face_t, + feature_type: hb_aat_layout_feature_type_t, + ) -> hb_ot_name_id_t; +} +#[doc = " hb_aat_layout_feature_selector_info_t:\n @name_id: The selector's name identifier\n @enable: The value to turn the selector on\n @disable: The value to turn the selector off\n\n Structure representing a setting for an #hb_aat_layout_feature_type_t."] +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct hb_aat_layout_feature_selector_info_t { + pub name_id: hb_ot_name_id_t, + pub enable: hb_aat_layout_feature_selector_t, + pub disable: hb_aat_layout_feature_selector_t, + pub reserved: ::std::os::raw::c_uint, +} +#[allow(clippy::unnecessary_operation, clippy::identity_op)] +const _: () = { + ["Size of hb_aat_layout_feature_selector_info_t"] + [::std::mem::size_of::() - 16usize]; + ["Alignment of hb_aat_layout_feature_selector_info_t"] + [::std::mem::align_of::() - 4usize]; + ["Offset of field: hb_aat_layout_feature_selector_info_t::name_id"] + [::std::mem::offset_of!(hb_aat_layout_feature_selector_info_t, name_id) - 0usize]; + ["Offset of field: hb_aat_layout_feature_selector_info_t::enable"] + [::std::mem::offset_of!(hb_aat_layout_feature_selector_info_t, enable) - 4usize]; + ["Offset of field: hb_aat_layout_feature_selector_info_t::disable"] + [::std::mem::offset_of!(hb_aat_layout_feature_selector_info_t, disable) - 8usize]; + ["Offset of field: hb_aat_layout_feature_selector_info_t::reserved"] + [::std::mem::offset_of!(hb_aat_layout_feature_selector_info_t, reserved) - 12usize]; +}; +extern "C" { + pub fn hb_aat_layout_feature_type_get_selector_infos( + face: *mut hb_face_t, + feature_type: hb_aat_layout_feature_type_t, + start_offset: ::std::os::raw::c_uint, + selector_count: *mut ::std::os::raw::c_uint, + selectors: *mut hb_aat_layout_feature_selector_info_t, + default_index: *mut ::std::os::raw::c_uint, + ) -> ::std::os::raw::c_uint; +} +extern "C" { + pub fn hb_aat_layout_has_substitution(face: *mut hb_face_t) -> hb_bool_t; +} +extern "C" { + pub fn hb_aat_layout_has_positioning(face: *mut hb_face_t) -> hb_bool_t; +} +extern "C" { + pub fn hb_aat_layout_has_tracking(face: *mut hb_face_t) -> hb_bool_t; +} diff --git a/src/blob.rs b/src/blob.rs index 7b1ad2f..d19ea2f 100644 --- a/src/blob.rs +++ b/src/blob.rs @@ -17,8 +17,8 @@ use crate::bindings::hb_blob_is_immutable; use crate::bindings::hb_blob_make_immutable; use crate::bindings::hb_blob_reference; use crate::bindings::hb_blob_t; -use crate::bindings::hb_memory_mode_t_HB_MEMORY_MODE_READONLY as HB_MEMORY_MODE_READONLY; -use crate::bindings::hb_memory_mode_t_HB_MEMORY_MODE_WRITABLE as HB_MEMORY_MODE_WRITABLE; +use crate::bindings::HB_MEMORY_MODE_READONLY; +use crate::bindings::HB_MEMORY_MODE_WRITABLE; use crate::common::{HarfbuzzObject, Owned, Shared}; /// A `Blob` manages raw data like e.g. file contents. It refers to a slice of diff --git a/src/buffer.rs b/src/buffer.rs index 3a8cbb0..15e13d3 100644 --- a/src/buffer.rs +++ b/src/buffer.rs @@ -1,32 +1,22 @@ use crate::bindings::{ hb_buffer_add, hb_buffer_add_utf8, hb_buffer_append, hb_buffer_clear_contents, - hb_buffer_cluster_level_t, - hb_buffer_cluster_level_t_HB_BUFFER_CLUSTER_LEVEL_CHARACTERS as HB_BUFFER_CLUSTER_LEVEL_CHARACTERS, - hb_buffer_cluster_level_t_HB_BUFFER_CLUSTER_LEVEL_MONOTONE_CHARACTERS as HB_BUFFER_CLUSTER_LEVEL_MONOTONE_CHARACTERS, - hb_buffer_cluster_level_t_HB_BUFFER_CLUSTER_LEVEL_MONOTONE_GRAPHEMES as HB_BUFFER_CLUSTER_LEVEL_MONOTONE_GRAPHEMES, - hb_buffer_content_type_t, - hb_buffer_content_type_t_HB_BUFFER_CONTENT_TYPE_GLYPHS as HB_BUFFER_CONTENT_TYPE_GLYPHS, - hb_buffer_content_type_t_HB_BUFFER_CONTENT_TYPE_UNICODE as HB_BUFFER_CONTENT_TYPE_UNICODE, - hb_buffer_create, hb_buffer_destroy, hb_buffer_get_cluster_level, hb_buffer_get_content_type, - hb_buffer_get_direction, hb_buffer_get_empty, hb_buffer_get_glyph_infos, - hb_buffer_get_glyph_positions, hb_buffer_get_language, hb_buffer_get_length, - hb_buffer_get_script, hb_buffer_get_segment_properties, hb_buffer_guess_segment_properties, - hb_buffer_pre_allocate, hb_buffer_reference, hb_buffer_reverse, hb_buffer_reverse_range, - hb_buffer_serialize_flags_t_HB_BUFFER_SERIALIZE_FLAG_GLYPH_EXTENTS as HB_BUFFER_SERIALIZE_FLAG_GLYPH_EXTENTS, - hb_buffer_serialize_flags_t_HB_BUFFER_SERIALIZE_FLAG_GLYPH_FLAGS as HB_BUFFER_SERIALIZE_FLAG_GLYPH_FLAGS, - hb_buffer_serialize_flags_t_HB_BUFFER_SERIALIZE_FLAG_NO_ADVANCES as HB_BUFFER_SERIALIZE_FLAG_NO_ADVANCES, - hb_buffer_serialize_flags_t_HB_BUFFER_SERIALIZE_FLAG_NO_CLUSTERS as HB_BUFFER_SERIALIZE_FLAG_NO_CLUSTERS, - hb_buffer_serialize_flags_t_HB_BUFFER_SERIALIZE_FLAG_NO_GLYPH_NAMES as HB_BUFFER_SERIALIZE_FLAG_NO_GLYPH_NAMES, - hb_buffer_serialize_flags_t_HB_BUFFER_SERIALIZE_FLAG_NO_POSITIONS as HB_BUFFER_SERIALIZE_FLAG_NO_POSITIONS, - hb_buffer_serialize_format_t, - hb_buffer_serialize_format_t_HB_BUFFER_SERIALIZE_FORMAT_JSON as HB_BUFFER_SERIALIZE_FORMAT_JSON, - hb_buffer_serialize_format_t_HB_BUFFER_SERIALIZE_FORMAT_TEXT as HB_BUFFER_SERIALIZE_FORMAT_TEXT, + hb_buffer_cluster_level_t, hb_buffer_content_type_t, hb_buffer_create, hb_buffer_destroy, + hb_buffer_get_cluster_level, hb_buffer_get_content_type, hb_buffer_get_direction, + hb_buffer_get_empty, hb_buffer_get_glyph_infos, hb_buffer_get_glyph_positions, + hb_buffer_get_language, hb_buffer_get_length, hb_buffer_get_script, + hb_buffer_get_segment_properties, hb_buffer_guess_segment_properties, hb_buffer_pre_allocate, + hb_buffer_reference, hb_buffer_reverse, hb_buffer_reverse_range, hb_buffer_serialize_format_t, hb_buffer_serialize_glyphs, hb_buffer_set_cluster_level, hb_buffer_set_content_type, hb_buffer_set_direction, hb_buffer_set_language, hb_buffer_set_script, hb_buffer_t, - hb_glyph_flags_t, - hb_glyph_flags_t_HB_GLYPH_FLAG_UNSAFE_TO_BREAK as HB_GLYPH_FLAG_UNSAFE_TO_BREAK, - hb_glyph_info_get_glyph_flags, hb_glyph_info_t, hb_mask_t, hb_script_from_iso15924_tag, - hb_script_t, hb_script_to_iso15924_tag, hb_segment_properties_t, hb_var_int_t, + hb_glyph_flags_t, hb_glyph_info_get_glyph_flags, hb_glyph_info_t, hb_mask_t, + hb_script_from_iso15924_tag, hb_script_t, hb_script_to_iso15924_tag, hb_segment_properties_t, + hb_var_int_t, HB_BUFFER_CLUSTER_LEVEL_CHARACTERS, HB_BUFFER_CLUSTER_LEVEL_MONOTONE_CHARACTERS, + HB_BUFFER_CLUSTER_LEVEL_MONOTONE_GRAPHEMES, HB_BUFFER_CONTENT_TYPE_GLYPHS, + HB_BUFFER_CONTENT_TYPE_UNICODE, HB_BUFFER_SERIALIZE_FLAG_GLYPH_EXTENTS, + HB_BUFFER_SERIALIZE_FLAG_GLYPH_FLAGS, HB_BUFFER_SERIALIZE_FLAG_NO_ADVANCES, + HB_BUFFER_SERIALIZE_FLAG_NO_CLUSTERS, HB_BUFFER_SERIALIZE_FLAG_NO_GLYPH_NAMES, + HB_BUFFER_SERIALIZE_FLAG_NO_POSITIONS, HB_BUFFER_SERIALIZE_FORMAT_JSON, + HB_BUFFER_SERIALIZE_FORMAT_TEXT, HB_GLYPH_FLAG_UNSAFE_TO_BREAK, }; use crate::common::{Direction, HarfbuzzObject, Language, Owned, Script, Tag}; use crate::font::Position; diff --git a/src/common.rs b/src/common.rs index 572f9ed..54fad6b 100644 --- a/src/common.rs +++ b/src/common.rs @@ -200,14 +200,10 @@ impl Debug for Language { use std::ffi::CStr; use crate::bindings::{ - hb_direction_t, hb_direction_t_HB_DIRECTION_BTT as HB_DIRECTION_BTT, - hb_direction_t_HB_DIRECTION_INVALID as HB_DIRECTION_INVALID, - hb_direction_t_HB_DIRECTION_LTR as HB_DIRECTION_LTR, - hb_direction_t_HB_DIRECTION_RTL as HB_DIRECTION_RTL, - hb_direction_t_HB_DIRECTION_TTB as HB_DIRECTION_TTB, hb_language_from_string, - hb_language_get_default, hb_language_t, hb_language_to_string, hb_script_from_iso15924_tag, - hb_script_get_horizontal_direction, hb_script_t, hb_script_to_iso15924_tag, hb_tag_from_string, - hb_tag_t, hb_tag_to_string, + hb_direction_t, hb_language_from_string, hb_language_get_default, hb_language_t, + hb_language_to_string, hb_script_from_iso15924_tag, hb_script_get_horizontal_direction, + hb_script_t, hb_script_to_iso15924_tag, hb_tag_from_string, hb_tag_t, hb_tag_to_string, + HB_DIRECTION_BTT, HB_DIRECTION_INVALID, HB_DIRECTION_LTR, HB_DIRECTION_RTL, HB_DIRECTION_TTB, }; impl Display for Language { fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result { diff --git a/update.sh b/update.sh index 5556253..e0612f1 100755 --- a/update.sh +++ b/update.sh @@ -1,10 +1,10 @@ #!/bin/bash -VERSION="8.0.1" +VERSION="10.0.0" + +pushd harfbuzz +git fetch +git checkout $VERSION +popd -wget https://github.com/harfbuzz/harfbuzz/releases/download/$VERSION/harfbuzz-$VERSION.tar.xz -rm -rf harfbuzz -tar xvf harfbuzz-$VERSION.tar.xz -rm harfbuzz-$VERSION.tar.xz -mv harfbuzz-$VERSION harfbuzz bindgen --no-prepend-enum-name --allowlist-function hb_.\* --allowlist-type hb_.\* wrapper.h > src/bindings.rs