diff options
| author | Can Celik <ogulcancelik@gmail.com> | 2026-04-04 19:22:04 +0300 |
|---|---|---|
| committer | Can Celik <ogulcancelik@gmail.com> | 2026-04-05 01:23:06 +0300 |
| commit | 41dd733ca7123c9ac4bfc6c781697a660e95b052 (patch) | |
| tree | 3fc91815ca139ef2e0b281bba0abda4ef15175f4 /vendor/libghostty-vt/pkg/harfbuzz/common.zig | |
| parent | 55c138263e190a1e79d4b997bfb9397306c0ec1f (diff) | |
feat: finish ghostty pane backend integration
Diffstat (limited to 'vendor/libghostty-vt/pkg/harfbuzz/common.zig')
| -rw-r--r-- | vendor/libghostty-vt/pkg/harfbuzz/common.zig | 247 |
1 files changed, 247 insertions, 0 deletions
diff --git a/vendor/libghostty-vt/pkg/harfbuzz/common.zig b/vendor/libghostty-vt/pkg/harfbuzz/common.zig new file mode 100644 index 00000000..840ff586 --- /dev/null +++ b/vendor/libghostty-vt/pkg/harfbuzz/common.zig @@ -0,0 +1,247 @@ +const std = @import("std"); +const c = @import("c.zig").c; + +/// The direction of a text segment or buffer. +/// +/// A segment can also be tested for horizontal or vertical orientation +/// (irrespective of specific direction) with HB_DIRECTION_IS_HORIZONTAL() +/// or HB_DIRECTION_IS_VERTICAL(). +pub const Direction = enum(u3) { + invalid = c.HB_DIRECTION_INVALID, + ltr = c.HB_DIRECTION_LTR, + rtl = c.HB_DIRECTION_RTL, + ttb = c.HB_DIRECTION_TTB, + bit = c.HB_DIRECTION_BTT, +}; + +/// Data type for scripts. Each hb_script_t's value is an hb_tag_t +/// corresponding to the four-letter values defined by ISO 15924. +/// +/// See also the Script (sc) property of the Unicode Character Database. +pub const Script = enum(u31) { + common = c.HB_SCRIPT_COMMON, + inherited = c.HB_SCRIPT_INHERITED, + unknown = c.HB_SCRIPT_UNKNOWN, + arabic = c.HB_SCRIPT_ARABIC, + armenian = c.HB_SCRIPT_ARMENIAN, + bengali = c.HB_SCRIPT_BENGALI, + cyrillic = c.HB_SCRIPT_CYRILLIC, + devanagari = c.HB_SCRIPT_DEVANAGARI, + georgian = c.HB_SCRIPT_GEORGIAN, + greek = c.HB_SCRIPT_GREEK, + gujarati = c.HB_SCRIPT_GUJARATI, + gurmukhi = c.HB_SCRIPT_GURMUKHI, + hangul = c.HB_SCRIPT_HANGUL, + han = c.HB_SCRIPT_HAN, + hebrew = c.HB_SCRIPT_HEBREW, + hiragana = c.HB_SCRIPT_HIRAGANA, + kannada = c.HB_SCRIPT_KANNADA, + katakana = c.HB_SCRIPT_KATAKANA, + lao = c.HB_SCRIPT_LAO, + latin = c.HB_SCRIPT_LATIN, + malayalam = c.HB_SCRIPT_MALAYALAM, + oriya = c.HB_SCRIPT_ORIYA, + tamil = c.HB_SCRIPT_TAMIL, + telugu = c.HB_SCRIPT_TELUGU, + thai = c.HB_SCRIPT_THAI, + tibetan = c.HB_SCRIPT_TIBETAN, + bopomofo = c.HB_SCRIPT_BOPOMOFO, + braille = c.HB_SCRIPT_BRAILLE, + canadian_syllabics = c.HB_SCRIPT_CANADIAN_SYLLABICS, + cherokee = c.HB_SCRIPT_CHEROKEE, + ethiopic = c.HB_SCRIPT_ETHIOPIC, + khmer = c.HB_SCRIPT_KHMER, + mongolian = c.HB_SCRIPT_MONGOLIAN, + myanmar = c.HB_SCRIPT_MYANMAR, + ogham = c.HB_SCRIPT_OGHAM, + runic = c.HB_SCRIPT_RUNIC, + sinhala = c.HB_SCRIPT_SINHALA, + syriac = c.HB_SCRIPT_SYRIAC, + thaana = c.HB_SCRIPT_THAANA, + yi = c.HB_SCRIPT_YI, + deseret = c.HB_SCRIPT_DESERET, + gothic = c.HB_SCRIPT_GOTHIC, + old_italic = c.HB_SCRIPT_OLD_ITALIC, + buhid = c.HB_SCRIPT_BUHID, + hanunoo = c.HB_SCRIPT_HANUNOO, + tagalog = c.HB_SCRIPT_TAGALOG, + tagbanwa = c.HB_SCRIPT_TAGBANWA, + cypriot = c.HB_SCRIPT_CYPRIOT, + limbu = c.HB_SCRIPT_LIMBU, + linear_b = c.HB_SCRIPT_LINEAR_B, + osmanya = c.HB_SCRIPT_OSMANYA, + shavian = c.HB_SCRIPT_SHAVIAN, + tai_le = c.HB_SCRIPT_TAI_LE, + ugaritic = c.HB_SCRIPT_UGARITIC, + buginese = c.HB_SCRIPT_BUGINESE, + coptic = c.HB_SCRIPT_COPTIC, + glagolitic = c.HB_SCRIPT_GLAGOLITIC, + kharoshthi = c.HB_SCRIPT_KHAROSHTHI, + new_tai_lue = c.HB_SCRIPT_NEW_TAI_LUE, + old_persian = c.HB_SCRIPT_OLD_PERSIAN, + syloti_nagri = c.HB_SCRIPT_SYLOTI_NAGRI, + tifinagh = c.HB_SCRIPT_TIFINAGH, + balinese = c.HB_SCRIPT_BALINESE, + cuneiform = c.HB_SCRIPT_CUNEIFORM, + nko = c.HB_SCRIPT_NKO, + phags_pa = c.HB_SCRIPT_PHAGS_PA, + phoenician = c.HB_SCRIPT_PHOENICIAN, + carian = c.HB_SCRIPT_CARIAN, + cham = c.HB_SCRIPT_CHAM, + kayah_li = c.HB_SCRIPT_KAYAH_LI, + lepcha = c.HB_SCRIPT_LEPCHA, + lycian = c.HB_SCRIPT_LYCIAN, + lydian = c.HB_SCRIPT_LYDIAN, + ol_chiki = c.HB_SCRIPT_OL_CHIKI, + rejang = c.HB_SCRIPT_REJANG, + saurashtra = c.HB_SCRIPT_SAURASHTRA, + sundanese = c.HB_SCRIPT_SUNDANESE, + vai = c.HB_SCRIPT_VAI, + avestan = c.HB_SCRIPT_AVESTAN, + bamum = c.HB_SCRIPT_BAMUM, + egyptian_hieroglyphs = c.HB_SCRIPT_EGYPTIAN_HIEROGLYPHS, + imperial_aramaic = c.HB_SCRIPT_IMPERIAL_ARAMAIC, + inscriptional_pahlavi = c.HB_SCRIPT_INSCRIPTIONAL_PAHLAVI, + inscriptional_parthian = c.HB_SCRIPT_INSCRIPTIONAL_PARTHIAN, + javanese = c.HB_SCRIPT_JAVANESE, + kaithi = c.HB_SCRIPT_KAITHI, + lisu = c.HB_SCRIPT_LISU, + meetei_mayek = c.HB_SCRIPT_MEETEI_MAYEK, + old_south_arabian = c.HB_SCRIPT_OLD_SOUTH_ARABIAN, + old_turkic = c.HB_SCRIPT_OLD_TURKIC, + samaritan = c.HB_SCRIPT_SAMARITAN, + tai_tham = c.HB_SCRIPT_TAI_THAM, + tai_viet = c.HB_SCRIPT_TAI_VIET, + batak = c.HB_SCRIPT_BATAK, + brahmi = c.HB_SCRIPT_BRAHMI, + mandaic = c.HB_SCRIPT_MANDAIC, + chakma = c.HB_SCRIPT_CHAKMA, + meroitic_cursive = c.HB_SCRIPT_MEROITIC_CURSIVE, + meroitic_hieroglyphs = c.HB_SCRIPT_MEROITIC_HIEROGLYPHS, + miao = c.HB_SCRIPT_MIAO, + sharada = c.HB_SCRIPT_SHARADA, + sora_sompeng = c.HB_SCRIPT_SORA_SOMPENG, + takri = c.HB_SCRIPT_TAKRI, + bassa_vah = c.HB_SCRIPT_BASSA_VAH, + caucasian_albanian = c.HB_SCRIPT_CAUCASIAN_ALBANIAN, + duployan = c.HB_SCRIPT_DUPLOYAN, + elbasan = c.HB_SCRIPT_ELBASAN, + grantha = c.HB_SCRIPT_GRANTHA, + khojki = c.HB_SCRIPT_KHOJKI, + khudawadi = c.HB_SCRIPT_KHUDAWADI, + linear_a = c.HB_SCRIPT_LINEAR_A, + mahajani = c.HB_SCRIPT_MAHAJANI, + manichaean = c.HB_SCRIPT_MANICHAEAN, + mende_kikakui = c.HB_SCRIPT_MENDE_KIKAKUI, + modi = c.HB_SCRIPT_MODI, + mro = c.HB_SCRIPT_MRO, + nabataean = c.HB_SCRIPT_NABATAEAN, + old_north_arabian = c.HB_SCRIPT_OLD_NORTH_ARABIAN, + old_permic = c.HB_SCRIPT_OLD_PERMIC, + pahawh_hmong = c.HB_SCRIPT_PAHAWH_HMONG, + palmyrene = c.HB_SCRIPT_PALMYRENE, + pau_cin_hau = c.HB_SCRIPT_PAU_CIN_HAU, + psalter_pahlavi = c.HB_SCRIPT_PSALTER_PAHLAVI, + siddham = c.HB_SCRIPT_SIDDHAM, + tirhuta = c.HB_SCRIPT_TIRHUTA, + warang_citi = c.HB_SCRIPT_WARANG_CITI, + ahom = c.HB_SCRIPT_AHOM, + anatolian_hieroglyphs = c.HB_SCRIPT_ANATOLIAN_HIEROGLYPHS, + hatran = c.HB_SCRIPT_HATRAN, + multani = c.HB_SCRIPT_MULTANI, + old_hungarian = c.HB_SCRIPT_OLD_HUNGARIAN, + signwriting = c.HB_SCRIPT_SIGNWRITING, + adlam = c.HB_SCRIPT_ADLAM, + bhaiksuki = c.HB_SCRIPT_BHAIKSUKI, + marchen = c.HB_SCRIPT_MARCHEN, + osage = c.HB_SCRIPT_OSAGE, + tangut = c.HB_SCRIPT_TANGUT, + newa = c.HB_SCRIPT_NEWA, + masaram_gondi = c.HB_SCRIPT_MASARAM_GONDI, + nushu = c.HB_SCRIPT_NUSHU, + soyombo = c.HB_SCRIPT_SOYOMBO, + zanabazar_square = c.HB_SCRIPT_ZANABAZAR_SQUARE, + dogra = c.HB_SCRIPT_DOGRA, + gunjala_gondi = c.HB_SCRIPT_GUNJALA_GONDI, + hanifi_rohingya = c.HB_SCRIPT_HANIFI_ROHINGYA, + makasar = c.HB_SCRIPT_MAKASAR, + medefaidrin = c.HB_SCRIPT_MEDEFAIDRIN, + old_sogdian = c.HB_SCRIPT_OLD_SOGDIAN, + sogdian = c.HB_SCRIPT_SOGDIAN, + elymaic = c.HB_SCRIPT_ELYMAIC, + nandinagari = c.HB_SCRIPT_NANDINAGARI, + nyiakeng_puachue_hmong = c.HB_SCRIPT_NYIAKENG_PUACHUE_HMONG, + wancho = c.HB_SCRIPT_WANCHO, + chorasmian = c.HB_SCRIPT_CHORASMIAN, + dives_akuru = c.HB_SCRIPT_DIVES_AKURU, + khitan_small_script = c.HB_SCRIPT_KHITAN_SMALL_SCRIPT, + yezidi = c.HB_SCRIPT_YEZIDI, + cypro_minoan = c.HB_SCRIPT_CYPRO_MINOAN, + old_uyghur = c.HB_SCRIPT_OLD_UYGHUR, + tangsa = c.HB_SCRIPT_TANGSA, + toto = c.HB_SCRIPT_TOTO, + vithkuqi = c.HB_SCRIPT_VITHKUQI, + math = c.HB_SCRIPT_MATH, + invalid = c.HB_SCRIPT_INVALID, +}; + +/// Data type for languages. Each hb_language_t corresponds to a BCP 47 +/// language tag. +pub const Language = struct { + handle: c.hb_language_t, + + /// Converts str representing a BCP 47 language tag to the corresponding + /// hb_language_t. + pub fn fromString(str: []const u8) Language { + return .{ + .handle = c.hb_language_from_string(str.ptr, @intCast(str.len)), + }; + } + + /// Converts an hb_language_t to a string. + pub fn toString(self: Language) [:0]const u8 { + return std.mem.span(@as( + [*:0]const u8, + @ptrCast(c.hb_language_to_string(self.handle)), + )); + } + + /// Fetch the default language from current locale. + pub fn getDefault() Language { + return .{ .handle = c.hb_language_get_default() }; + } +}; + +/// The hb_feature_t is the structure that holds information about requested +/// feature application. The feature will be applied with the given value to +/// all glyphs which are in clusters between start (inclusive) and end +/// (exclusive). Setting start to HB_FEATURE_GLOBAL_START and end to +/// HB_FEATURE_GLOBAL_END specifies that the feature always applies to the +/// entire buffer. +pub const Feature = extern struct { + tag: c.hb_tag_t, + value: u32, + start: c_uint, + end: c_uint, + + pub fn fromString(str: []const u8) ?Feature { + var f: c.hb_feature_t = undefined; + return if (c.hb_feature_from_string( + str.ptr, + @intCast(str.len), + &f, + ) > 0) + @bitCast(f) + else + null; + } + + pub fn toString(self: *Feature, buf: []u8) void { + c.hb_feature_to_string(self, buf.ptr, @intCast(buf.len)); + } +}; + +test "feature from string" { + const testing = std.testing; + try testing.expect(Feature.fromString("dlig") != null); +} |
