diff --git a/README.md b/README.md index aa1f3f3e..9ec748b2 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ `rustybuzz` is a complete [harfbuzz](https://github.com/harfbuzz/harfbuzz)'s shaping algorithm port to Rust. -Matches `harfbuzz` v10.0.1, commit [c7ef6a2e](https://github.com/harfbuzz/harfbuzz/commit/c7ef6a2ed58ae8ec108ee0962bef46f42c73a60c) (one commit after v10.0.1) +Matches `harfbuzz` v10.1.0. ## Why? diff --git a/scripts/gen-shaping-tests.py b/scripts/gen-shaping-tests.py index 53cb0a8f..6175dc14 100755 --- a/scripts/gen-shaping-tests.py +++ b/scripts/gen-shaping-tests.py @@ -204,9 +204,12 @@ def convert_test_folder(root_dir, hb_shape_exe, tests_dir, tests_name, custom): def convert_test_files(root_dir, hb_shape_exe, tests_dir, tests_name, files, custom): fonts = set() + macos_snippet = "#[cfg(target_os = \"macos\")]\n" if tests_name == "macos" else "" + rust_code = ( "// WARNING: this file was generated by ../scripts/gen-shaping-tests.py\n" - "\n" + "\n" + + macos_snippet + "use crate::shape;\n" "\n" ) diff --git a/scripts/gen-tag-table.py b/scripts/gen-tag-table.py index c4040ee1..df9e7e68 100755 --- a/scripts/gen-tag-table.py +++ b/scripts/gen-tag-table.py @@ -335,49 +335,54 @@ def __init__(self): self.from_bcp_47_uninherited = None # Whether the parser is in a element self._td = False - # Whether the parser is after a
element within the current element - self._br = False + # Whether the parser ignores the rest of the current element + self._disengaged = False # The text of the elements of the current element. self._current_tr = [] - def handle_starttag(self, tag, attrs): - if tag == 'br': - self._br = True + def handle_starttag (self, tag, attrs): + if tag == 'a': + if self._current_tr and not self._disengaged: + self._current_tr[-1] = '' + self._disengaged = True + elif tag == 'br': + self._disengaged = True elif tag == 'meta': for attr, value in attrs: if attr == 'name' and value == 'updated_at': - self.header = self.get_starttag_text() + self.header = self.get_starttag_text () break elif tag == 'td': self._td = True - self._current_tr.append('') + self._current_tr.append ('') elif tag == 'tr': - self._br = False + self._disengaged = False self._current_tr = [] - def handle_endtag(self, tag): + def handle_endtag (self, tag): if tag == 'td': self._td = False + self._disengaged = False elif tag == 'tr' and self._current_tr: - expect(2 <= len(self._current_tr) <= 3) - name = self._current_tr[0].strip() - tag = self._current_tr[1].strip("\t\n\v\f\r '") + expect (2 <= len (self._current_tr) <= 3) + name = self._current_tr[0].strip () + tag = self._current_tr[1].strip ("\t\n\v\f\r '") rank = 0 - if len(tag) > 4: - expect(tag.endswith('(deprecated)'), 'ill-formed OpenType tag: %s' % tag) - name += '(deprecated)' - tag = tag.split(' ')[0] + if len (tag) > 4: + expect (tag.endswith (' (deprecated)'), 'ill-formed OpenType tag: %s' % tag) + name += ' (deprecated)' + tag = tag.split (' ')[0] rank = 1 - self.names[tag] = re.sub(' languages$', '', name) + self.names[tag] = re.sub (' languages$', '', name) if not self._current_tr[2]: return - iso_codes = self._current_tr[2].strip() - self.to_bcp_47[tag].update(ISO_639_3_TO_1.get(code, code) for code in iso_codes.replace(' ', '').split(',')) - rank += 2 * len(self.to_bcp_47[tag]) + iso_codes = self._current_tr[2].strip () + self.to_bcp_47[tag].update (ISO_639_3_TO_1.get (code, code) for code in iso_codes.replace (' ', '').split (',')) + rank += 2 * len (self.to_bcp_47[tag]) self.ranks[tag] = rank - def handle_data(self, data): - if self._td and not self._br: + def handle_data (self, data): + if self._td and not self._disengaged: self._current_tr[-1] += data def handle_charref(self, name): diff --git a/scripts/ms-use/IndicPositionalCategory-Additional.txt b/scripts/ms-use/IndicPositionalCategory-Additional.txt index 42dd1547..4b0c7f20 100644 --- a/scripts/ms-use/IndicPositionalCategory-Additional.txt +++ b/scripts/ms-use/IndicPositionalCategory-Additional.txt @@ -49,7 +49,7 @@ A9BE ; Right # Mc JAVANESE CONSONANT SIGN PENGKAL # Reduced from AA35   ; Top # Mn       CHAM CONSONANT SIGN 1112A..1112B ; Top # Mn [2] CHAKMA VOWEL SIGN U..CHAKMA VOWEL SIGN UU # see USE issue #25 11131..11132 ; Top # Mn [2] CHAKMA O MARK..CHAKMA AU MARK # see USE issue #25 -1E4EC..1E4EF ; Top # Mn [4] NAG MUNDARI SIGN MUHOR..NAG MUNDARI SIGN SUTUH # 1E4EE is below, but made to for ccc +1E4EC..1E4EF ; Top # Mn [4] NAG MUNDARI SIGN MUHOR..NAG MUNDARI SIGN SUTUH # 1E4EE is below, but made to for ccc # ================================================ @@ -77,11 +77,12 @@ AA35   ; Top # Mn       CHAM CONSONANT SIGN 10F83 ; Bottom # Mn OLD UYGHUR COMBINING DOT BELOW 10F84 ; Bottom # Mn OLD UYGHUR COMBINING TWO DOTS ABOVE # Overriden, ccc controls order 10F85 ; Bottom # Mn OLD UYGHUR COMBINING TWO DOTS BELOW +113CF ; Bottom # Mc TULU-TIGALARI SIGN LOOPED VIRAMA # Issue #17 16F4F ; Bottom # Mn MIAO SIGN CONSONANT MODIFIER BAR 16F51..16F87 ; Bottom # Mc [55] MIAO SIGN ASPIRATION..MIAO VOWEL SIGN UI 16F8F..16F92 ; Bottom # Mn [4] MIAO TONE RIGHT..MIAO TONE BELOW -1E5EE ; Bottom # Mn OL ONAL SIGN MU # Not really below, but need to override to fit into Universal model -1E5EF ; Bottom # Mn OL ONAL SIGN IKIR +1E5EE ; Bottom # Mn OL ONAL SIGN MU # Not really below, but need to override to fit into Universal model +1E5EF ; Bottom # Mn OL ONAL SIGN IKIR # ================================================ @@ -94,7 +95,7 @@ AA35   ; Top # Mn       CHAM CONSONANT SIGN 07EB..07F3 ; Top # Mn [9] NKO COMBINING SHORT HIGH TONE..NKO COMBINING DOUBLE DOT ABOVE 07FD ; Top # Mn NKO DANTAYALAN # Not really top, but assigned here to allow ccc to control mark order 1885..1886 ; Top # Mn [2] MONGOLIAN LETTER ALI GALI BALUDA..MONGOLIAN LETTER ALI GALI THREE BALUDA -1B6C ; Top # Mn BALINESE MUSICAL SYMBOL COMBINING ENDEP +1B6C ; Top # Mn BALINESE MUSICAL SYMBOL COMBINING ENDEP 1CF8..1CF9 ; Top # Mn [2] VEDIC TONE RING ABOVE..VEDIC TONE DOUBLE RING ABOVE 10D24..10D27 ; Top # Mn [4] HANIFI ROHINGYA SIGN HARBAHAY..HANIFI ROHINGYA SIGN TASSI 10EAB..10EAC ; Top # Mn [2] YEZIDI COMBINING HAMZA MARK..YEZIDI COMBINING MADDA MARK diff --git a/scripts/ms-use/IndicSyllabicCategory-Additional.txt b/scripts/ms-use/IndicSyllabicCategory-Additional.txt index a42b975a..fcd22e63 100644 --- a/scripts/ms-use/IndicSyllabicCategory-Additional.txt +++ b/scripts/ms-use/IndicSyllabicCategory-Additional.txt @@ -13,7 +13,7 @@ # OVERRIDES TO ASSIGNED VALUES # ================================================ -# Indic_Syllabic_Category=Bindu +# Indic_Syllabic_Category=Bindu 193A ; Bindu # Mn LIMBU SIGN KEMPHRENG AA29 ; Bindu # Mn CHAM VOWEL SIGN AA 10A0D ; Bindu # Mn KHAROSHTHI SIGN DOUBLE RING BELOW @@ -47,14 +47,13 @@ AA29 ; Bindu # Mn CHAM VOWEL SIGN AA # ================================================ -# Indic_Syllabic_Category=Gemination_Mark +# Indic_Syllabic_Category=Gemination_Mark 11134 ; Gemination_Mark # Mc CHAKMA MAAYYAA # ================================================ -# Indic_Syllabic_Category=Nukta +# Indic_Syllabic_Category=Nukta 0F71 ; Nukta # Mn TIBETAN VOWEL SIGN AA # Reassigned to get this before an above vowel, but see #22 -1BF2..1BF3 ; Nukta # Mc [2] BATAK PANGOLAT..BATAK PANONGONAN # see USE issue #20 113CF ; Nukta # Mc TULU-TIGALARI SIGN LOOPED VIRAMA # ================================================ @@ -115,7 +114,7 @@ AABD ; Vowel_Independent # Lo TAI VIET VOWEL AN 18B00..18CD5 ; Consonant # Lo [470] KHITAN SMALL SCRIPT CHARACTER-18B00..KHITAN SMALL SCRIPT CHARACTER-18CD5 18CFF ; Consonant # Lo KHITAN SMALL SCRIPT CHARACTER-18CFF 1BC00..1BC6A ; Consonant # Lo [107] DUPLOYAN LETTER H..DUPLOYAN LETTER VOCALIC M -1BC70..1BC7C ; Consonant # Lo [13] DUPLOYAN AFFIX LEFT HORIZONTAL SECANT..DUPLOYAN AFFIX ATTACHED TANGENT HOOK +1BC70..1BC7C ; Consonant # Lo [13] DUPLOYAN AFFIX LEFT HORIZONTAL SECANT..DUPLOYAN AFFIX ATTACHED TANGENT HOOK 1BC80..1BC88 ; Consonant # Lo [9] DUPLOYAN AFFIX HIGH ACUTE..DUPLOYAN AFFIX HIGH VERTICAL 1BC90..1BC99 ; Consonant # Lo [10] DUPLOYAN AFFIX LOW ACUTE..DUPLOYAN AFFIX LOW ARROW 1E100..1E12C ; Consonant # Lo [45] NYIAKENG PUACHUE HMONG LETTER MA..NYIAKENG PUACHUE HMONG LETTER W diff --git a/src/hb/aat_layout_kerx_table.rs b/src/hb/aat_layout_kerx_table.rs index 276954ec..3415742a 100644 --- a/src/hb/aat_layout_kerx_table.rs +++ b/src/hb/aat_layout_kerx_table.rs @@ -248,8 +248,7 @@ fn apply_state_machine_kerning( // go differently if we start from state 0 here. if state != START_OF_TEXT && buffer.backtrack_len() != 0 && buffer.idx < buffer.len { // If there's no value and we're just epsilon-transitioning to state 0, safe to break. - if entry.is_actionable() || entry.new_state != START_OF_TEXT || entry.has_advance() - { + if entry.is_actionable() || entry.new_state != START_OF_TEXT || entry.has_advance() { buffer.unsafe_to_break_from_outbuffer( Some(buffer.backtrack_len() - 1), Some(buffer.idx + 1), diff --git a/src/hb/ot_shaper_use.rs b/src/hb/ot_shaper_use.rs index 203f227b..a274d7d0 100644 --- a/src/hb/ot_shaper_use.rs +++ b/src/hb/ot_shaper_use.rs @@ -101,6 +101,7 @@ pub mod category { pub const HVM: u8 = 53; // HIEROGLYPH_SEGMENT_END pub const HM: u8 = 54; // HIEROGLYPH_MOD pub const HR: u8 = 55; // HIEROGLYPH_MIRROR + pub const RK: u8 = 56; // REORDERING_KILLER } // These features are applied all at once, before reordering, diff --git a/src/hb/ot_shaper_use_machine.rl b/src/hb/ot_shaper_use_machine.rl index f3a0f827..0e4e03d1 100644 --- a/src/hb/ot_shaper_use_machine.rl +++ b/src/hb/ot_shaper_use_machine.rl @@ -55,6 +55,7 @@ SE = 52; # HIEROGLYPH_SEGMENT_END HVM = 53; # HALANT_OR_VOWEL_MODIFIER HM = 54; # HIEROGLYPH_MOD HR = 55; # HIEROGLYPH_MIRROR +RK = 56; # REORDERING_KILLER FAbv = 24; # CONS_FINAL_ABOVE FBlw = 25; # CONS_FINAL_BELOW @@ -107,7 +108,7 @@ symbol_cluster_tail = SMAbv+ SMBlw* | SMBlw+; virama_terminated_cluster_tail = consonant_modifiers - IS + (IS | RK) ; virama_terminated_cluster = complex_syllable_start diff --git a/src/hb/ot_shaper_use_machine.rs b/src/hb/ot_shaper_use_machine.rs index 7c1bd72e..f3c3ac4e 100644 --- a/src/hb/ot_shaper_use_machine.rs +++ b/src/hb/ot_shaper_use_machine.rs @@ -21,253 +21,231 @@ use super::machine_cursor::MachineCursor; use super::ot_layout::*; use super::ot_shaper_use::category; -static _use_syllable_machine_actions: [i8; 47] = [ - 0, 1, 0, 1, 1, 1, 2, 1, 3, 1, 4, 1, 5, 1, 6, 1, 7, 1, 8, 1, 9, 1, 10, 1, 11, 1, 12, 1, 13, 1, - 14, 1, 15, 1, 16, 1, 17, 1, 18, 1, 19, 1, 20, 1, 21, 0, 0, +static _use_syllable_machine_trans_keys: [u8; 256] = [ + 35, 37, 0, 42, 5, 42, 5, 42, 1, 39, 8, 34, 8, 33, 8, 33, 8, 33, 8, 32, 8, 32, 8, 8, 8, 34, 8, + 34, 8, 34, 1, 8, 8, 34, 8, 39, 8, 39, 8, 39, 8, 39, 6, 39, 8, 39, 6, 39, 6, 39, 6, 39, 5, 42, + 1, 8, 1, 34, 8, 28, 8, 28, 5, 42, 1, 39, 8, 34, 8, 33, 8, 33, 8, 33, 8, 32, 8, 32, 8, 8, 8, 34, + 8, 34, 8, 34, 1, 8, 8, 34, 8, 39, 8, 39, 8, 39, 8, 39, 6, 39, 8, 39, 6, 39, 6, 39, 6, 39, 5, + 42, 1, 8, 1, 8, 1, 34, 8, 8, 7, 8, 3, 8, 5, 42, 5, 42, 1, 39, 8, 34, 8, 33, 8, 33, 8, 33, 8, + 32, 8, 32, 8, 8, 8, 34, 8, 34, 8, 34, 1, 8, 8, 34, 8, 39, 8, 39, 8, 39, 8, 39, 6, 39, 8, 39, 6, + 39, 6, 39, 6, 39, 5, 42, 1, 8, 1, 8, 1, 34, 8, 8, 5, 42, 1, 39, 8, 34, 8, 33, 8, 33, 8, 33, 8, + 32, 8, 32, 8, 8, 8, 34, 8, 34, 8, 34, 1, 8, 8, 34, 8, 39, 8, 39, 8, 39, 8, 39, 6, 39, 8, 39, 6, + 39, 6, 39, 6, 39, 5, 42, 1, 8, 1, 34, 3, 8, 7, 8, 1, 42, 8, 28, 8, 28, 1, 4, 8, 41, 8, 37, 8, + 38, 8, 40, 5, 42, 0, 0, ]; -static _use_syllable_machine_key_offsets: [i16; 127] = [ - 0, 2, 39, 67, 93, 107, 119, 126, 132, 137, 140, 142, 143, 154, 164, 173, 175, 183, 200, 216, - 231, 245, 265, 278, 297, 315, 336, 361, 363, 376, 379, 381, 407, 421, 433, 440, 446, 451, 454, - 456, 457, 468, 478, 487, 489, 497, 514, 530, 545, 559, 579, 592, 611, 629, 650, 675, 677, 679, - 692, 694, 696, 724, 750, 764, 776, 783, 789, 794, 797, 799, 800, 811, 821, 830, 832, 840, 857, - 873, 888, 902, 922, 935, 954, 972, 993, 1018, 1020, 1022, 1035, 1061, 1075, 1087, 1094, 1100, - 1105, 1108, 1110, 1111, 1122, 1132, 1141, 1143, 1151, 1168, 1184, 1199, 1213, 1233, 1246, 1265, - 1283, 1304, 1329, 1331, 1344, 1346, 1348, 1379, 1382, 1384, 1386, 1391, 1395, 1398, 1402, 0, 0, +static _use_syllable_machine_char_class: [i8; 59] = [ + 0, 1, 2, 2, 3, 4, 2, 2, 2, 2, 2, 5, 6, 7, 8, 2, 2, 2, 9, 2, 2, 2, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 2, 24, 25, 26, 2, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 0, 0, ]; -static _use_syllable_machine_trans_keys: [u8; 1434] = [ - 49, 51, 0, 1, 4, 5, 11, 12, 13, 14, 18, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 37, 38, 39, 41, 42, 43, 45, 46, 47, 49, 51, 53, 44, 48, 11, 12, 14, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 41, 42, 45, 46, 47, 53, 44, 48, 11, 12, 14, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 45, 46, 47, 53, 44, 48, 1, 14, 23, 24, - 25, 26, 37, 38, 39, 45, 46, 47, 48, 53, 14, 23, 24, 25, 26, 37, 38, 39, 45, 46, 47, 48, 14, 24, - 25, 26, 45, 46, 47, 14, 25, 26, 45, 46, 47, 14, 26, 45, 46, 47, 14, 45, 46, 14, 46, 14, 14, 24, - 25, 26, 37, 38, 39, 45, 46, 47, 48, 14, 24, 25, 26, 38, 39, 45, 46, 47, 48, 14, 24, 25, 26, 39, - 45, 46, 47, 48, 1, 14, 14, 24, 25, 26, 45, 46, 47, 48, 14, 22, 23, 24, 25, 26, 33, 34, 35, 37, - 38, 39, 45, 46, 47, 48, 53, 14, 23, 24, 25, 26, 33, 34, 35, 37, 38, 39, 45, 46, 47, 48, 53, 14, - 23, 24, 25, 26, 34, 35, 37, 38, 39, 45, 46, 47, 48, 53, 14, 23, 24, 25, 26, 35, 37, 38, 39, 45, - 46, 47, 48, 53, 12, 14, 22, 23, 24, 25, 26, 28, 29, 33, 34, 35, 37, 38, 39, 45, 46, 47, 48, 53, - 14, 23, 24, 25, 26, 37, 38, 39, 45, 46, 47, 48, 53, 12, 14, 22, 23, 24, 25, 26, 29, 33, 34, 35, - 37, 38, 39, 45, 46, 47, 48, 53, 12, 14, 22, 23, 24, 25, 26, 33, 34, 35, 37, 38, 39, 45, 46, 47, - 48, 53, 12, 14, 22, 23, 24, 25, 26, 27, 28, 29, 33, 34, 35, 37, 38, 39, 45, 46, 47, 48, 53, 11, - 12, 14, 22, 23, 24, 25, 26, 27, 28, 29, 30, 32, 33, 34, 35, 37, 38, 39, 45, 46, 47, 53, 44, 48, - 1, 14, 1, 14, 23, 24, 25, 26, 37, 38, 39, 45, 46, 47, 48, 14, 41, 42, 14, 42, 11, 12, 14, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 44, 45, 46, 47, 48, 53, 1, 14, - 23, 24, 25, 26, 37, 38, 39, 45, 46, 47, 48, 53, 14, 23, 24, 25, 26, 37, 38, 39, 45, 46, 47, 48, - 14, 24, 25, 26, 45, 46, 47, 14, 25, 26, 45, 46, 47, 14, 26, 45, 46, 47, 14, 45, 46, 14, 46, 14, - 14, 24, 25, 26, 37, 38, 39, 45, 46, 47, 48, 14, 24, 25, 26, 38, 39, 45, 46, 47, 48, 14, 24, 25, - 26, 39, 45, 46, 47, 48, 1, 14, 14, 24, 25, 26, 45, 46, 47, 48, 14, 22, 23, 24, 25, 26, 33, 34, - 35, 37, 38, 39, 45, 46, 47, 48, 53, 14, 23, 24, 25, 26, 33, 34, 35, 37, 38, 39, 45, 46, 47, 48, - 53, 14, 23, 24, 25, 26, 34, 35, 37, 38, 39, 45, 46, 47, 48, 53, 14, 23, 24, 25, 26, 35, 37, 38, - 39, 45, 46, 47, 48, 53, 12, 14, 22, 23, 24, 25, 26, 28, 29, 33, 34, 35, 37, 38, 39, 45, 46, 47, - 48, 53, 14, 23, 24, 25, 26, 37, 38, 39, 45, 46, 47, 48, 53, 12, 14, 22, 23, 24, 25, 26, 29, 33, - 34, 35, 37, 38, 39, 45, 46, 47, 48, 53, 12, 14, 22, 23, 24, 25, 26, 33, 34, 35, 37, 38, 39, 45, - 46, 47, 48, 53, 12, 14, 22, 23, 24, 25, 26, 27, 28, 29, 33, 34, 35, 37, 38, 39, 45, 46, 47, 48, - 53, 11, 12, 14, 22, 23, 24, 25, 26, 27, 28, 29, 30, 32, 33, 34, 35, 37, 38, 39, 44, 45, 46, 47, - 48, 53, 1, 14, 1, 14, 1, 14, 23, 24, 25, 26, 37, 38, 39, 45, 46, 47, 48, 13, 14, 4, 14, 11, 12, - 14, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 41, 42, 44, 45, 46, 47, - 48, 53, 11, 12, 14, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 44, 45, - 46, 47, 48, 53, 1, 14, 23, 24, 25, 26, 37, 38, 39, 45, 46, 47, 48, 53, 14, 23, 24, 25, 26, 37, - 38, 39, 45, 46, 47, 48, 14, 24, 25, 26, 45, 46, 47, 14, 25, 26, 45, 46, 47, 14, 26, 45, 46, 47, - 14, 45, 46, 14, 46, 14, 14, 24, 25, 26, 37, 38, 39, 45, 46, 47, 48, 14, 24, 25, 26, 38, 39, 45, - 46, 47, 48, 14, 24, 25, 26, 39, 45, 46, 47, 48, 1, 14, 14, 24, 25, 26, 45, 46, 47, 48, 14, 22, - 23, 24, 25, 26, 33, 34, 35, 37, 38, 39, 45, 46, 47, 48, 53, 14, 23, 24, 25, 26, 33, 34, 35, 37, - 38, 39, 45, 46, 47, 48, 53, 14, 23, 24, 25, 26, 34, 35, 37, 38, 39, 45, 46, 47, 48, 53, 14, 23, - 24, 25, 26, 35, 37, 38, 39, 45, 46, 47, 48, 53, 12, 14, 22, 23, 24, 25, 26, 28, 29, 33, 34, 35, - 37, 38, 39, 45, 46, 47, 48, 53, 14, 23, 24, 25, 26, 37, 38, 39, 45, 46, 47, 48, 53, 12, 14, 22, - 23, 24, 25, 26, 29, 33, 34, 35, 37, 38, 39, 45, 46, 47, 48, 53, 12, 14, 22, 23, 24, 25, 26, 33, - 34, 35, 37, 38, 39, 45, 46, 47, 48, 53, 12, 14, 22, 23, 24, 25, 26, 27, 28, 29, 33, 34, 35, 37, - 38, 39, 45, 46, 47, 48, 53, 11, 12, 14, 22, 23, 24, 25, 26, 27, 28, 29, 30, 32, 33, 34, 35, 37, - 38, 39, 44, 45, 46, 47, 48, 53, 1, 14, 1, 14, 1, 14, 23, 24, 25, 26, 37, 38, 39, 45, 46, 47, - 48, 11, 12, 14, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 45, 46, 47, - 53, 44, 48, 1, 14, 23, 24, 25, 26, 37, 38, 39, 45, 46, 47, 48, 53, 14, 23, 24, 25, 26, 37, 38, - 39, 45, 46, 47, 48, 14, 24, 25, 26, 45, 46, 47, 14, 25, 26, 45, 46, 47, 14, 26, 45, 46, 47, 14, - 45, 46, 14, 46, 14, 14, 24, 25, 26, 37, 38, 39, 45, 46, 47, 48, 14, 24, 25, 26, 38, 39, 45, 46, - 47, 48, 14, 24, 25, 26, 39, 45, 46, 47, 48, 1, 14, 14, 24, 25, 26, 45, 46, 47, 48, 14, 22, 23, - 24, 25, 26, 33, 34, 35, 37, 38, 39, 45, 46, 47, 48, 53, 14, 23, 24, 25, 26, 33, 34, 35, 37, 38, - 39, 45, 46, 47, 48, 53, 14, 23, 24, 25, 26, 34, 35, 37, 38, 39, 45, 46, 47, 48, 53, 14, 23, 24, - 25, 26, 35, 37, 38, 39, 45, 46, 47, 48, 53, 12, 14, 22, 23, 24, 25, 26, 28, 29, 33, 34, 35, 37, - 38, 39, 45, 46, 47, 48, 53, 14, 23, 24, 25, 26, 37, 38, 39, 45, 46, 47, 48, 53, 12, 14, 22, 23, - 24, 25, 26, 29, 33, 34, 35, 37, 38, 39, 45, 46, 47, 48, 53, 12, 14, 22, 23, 24, 25, 26, 33, 34, - 35, 37, 38, 39, 45, 46, 47, 48, 53, 12, 14, 22, 23, 24, 25, 26, 27, 28, 29, 33, 34, 35, 37, 38, - 39, 45, 46, 47, 48, 53, 11, 12, 14, 22, 23, 24, 25, 26, 27, 28, 29, 30, 32, 33, 34, 35, 37, 38, - 39, 45, 46, 47, 53, 44, 48, 1, 14, 1, 14, 23, 24, 25, 26, 37, 38, 39, 45, 46, 47, 48, 4, 14, - 13, 14, 1, 5, 11, 12, 13, 14, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 37, 38, - 39, 41, 42, 45, 46, 47, 53, 44, 48, 14, 41, 42, 14, 42, 1, 5, 14, 50, 52, 54, 55, 14, 49, 50, - 51, 14, 50, 52, 14, 50, 52, 54, 11, 12, 14, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 37, 38, 39, 41, 42, 45, 46, 47, 49, 51, 53, 44, 48, 0, 0, +static _use_syllable_machine_index_offsets: [i16; 129] = [ + 0, 3, 46, 84, 122, 161, 188, 214, 240, 266, 291, 316, 317, 344, 371, 398, 406, 433, 465, 497, + 529, 561, 595, 627, 661, 695, 729, 767, 775, 809, 830, 851, 889, 928, 955, 981, 1007, 1033, + 1058, 1083, 1084, 1111, 1138, 1165, 1173, 1200, 1232, 1264, 1296, 1328, 1362, 1394, 1428, 1462, + 1496, 1534, 1542, 1550, 1584, 1585, 1587, 1593, 1631, 1669, 1708, 1735, 1761, 1787, 1813, 1838, + 1863, 1864, 1891, 1918, 1945, 1953, 1980, 2012, 2044, 2076, 2108, 2142, 2174, 2208, 2242, 2276, + 2314, 2322, 2330, 2364, 2365, 2403, 2442, 2469, 2495, 2521, 2547, 2572, 2597, 2598, 2625, 2652, + 2679, 2687, 2714, 2746, 2778, 2810, 2842, 2876, 2908, 2942, 2976, 3010, 3048, 3056, 3090, 3096, + 3098, 3140, 3161, 3182, 3186, 3220, 3250, 3281, 3314, 0, 0, ]; -static _use_syllable_machine_single_lengths: [i8; 127] = [ - 2, 35, 26, 24, 14, 12, 7, 6, 5, 3, 2, 1, 11, 10, 9, 2, 8, 17, 16, 15, 14, 20, 13, 19, 18, 21, - 23, 2, 13, 3, 2, 26, 14, 12, 7, 6, 5, 3, 2, 1, 11, 10, 9, 2, 8, 17, 16, 15, 14, 20, 13, 19, 18, - 21, 25, 2, 2, 13, 2, 2, 28, 26, 14, 12, 7, 6, 5, 3, 2, 1, 11, 10, 9, 2, 8, 17, 16, 15, 14, 20, - 13, 19, 18, 21, 25, 2, 2, 13, 24, 14, 12, 7, 6, 5, 3, 2, 1, 11, 10, 9, 2, 8, 17, 16, 15, 14, - 20, 13, 19, 18, 21, 23, 2, 13, 2, 2, 29, 3, 2, 2, 5, 2, 3, 4, 28, 0, 0, +static _use_syllable_machine_indices: [i16; 3354] = [ + 1, 0, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 9, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 33, 1, 6, 37, 6, 38, 6, 6, 36, 40, 41, 39, 42, 39, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 40, 52, 53, 54, 55, 56, 57, 58, 59, 60, 39, 61, 62, 63, 64, + 61, 39, 39, 39, 39, 65, 39, 39, 64, 40, 41, 39, 42, 39, 43, 44, 45, 46, 47, 48, 49, 50, 51, 40, + 52, 53, 54, 55, 56, 57, 58, 39, 39, 39, 61, 62, 63, 64, 61, 39, 39, 39, 39, 65, 39, 39, 64, 40, + 39, 39, 39, 39, 39, 39, 42, 39, 39, 44, 45, 46, 47, 39, 39, 39, 39, 39, 39, 39, 39, 39, 56, 57, + 58, 39, 39, 39, 39, 62, 63, 64, 66, 39, 39, 39, 39, 44, 42, 39, 39, 44, 45, 46, 47, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 56, 57, 58, 39, 39, 39, 39, 62, 63, 64, 66, 42, 39, 39, 39, 45, 46, 47, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 62, 63, 64, 42, 39, 39, 39, 39, + 46, 47, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 62, 63, 64, 42, 39, 39, + 39, 39, 39, 47, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 62, 63, 64, 42, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 62, 63, + 42, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 63, 42, 42, 39, 39, 39, 45, 46, 47, 39, 39, 39, 39, 39, 39, 39, 39, 39, 56, 57, 58, 39, 39, 39, + 39, 62, 63, 64, 66, 42, 39, 39, 39, 45, 46, 47, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 57, 58, + 39, 39, 39, 39, 62, 63, 64, 66, 42, 39, 39, 39, 45, 46, 47, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 58, 39, 39, 39, 39, 62, 63, 64, 66, 67, 39, 39, 39, 39, 39, 39, 42, 42, 39, 39, 39, 45, + 46, 47, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 62, 63, 64, 66, 42, 39, + 43, 44, 45, 46, 47, 39, 39, 39, 39, 39, 39, 53, 54, 55, 56, 57, 58, 39, 39, 39, 39, 62, 63, 64, + 66, 39, 39, 39, 39, 44, 42, 39, 39, 44, 45, 46, 47, 39, 39, 39, 39, 39, 39, 53, 54, 55, 56, 57, + 58, 39, 39, 39, 39, 62, 63, 64, 66, 39, 39, 39, 39, 44, 42, 39, 39, 44, 45, 46, 47, 39, 39, 39, + 39, 39, 39, 39, 54, 55, 56, 57, 58, 39, 39, 39, 39, 62, 63, 64, 66, 39, 39, 39, 39, 44, 42, 39, + 39, 44, 45, 46, 47, 39, 39, 39, 39, 39, 39, 39, 39, 55, 56, 57, 58, 39, 39, 39, 39, 62, 63, 64, + 66, 39, 39, 39, 39, 44, 68, 39, 42, 39, 43, 44, 45, 46, 47, 39, 49, 50, 39, 39, 39, 53, 54, 55, + 56, 57, 58, 39, 39, 39, 39, 62, 63, 64, 66, 39, 39, 39, 39, 44, 42, 39, 39, 44, 45, 46, 47, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 56, 57, 58, 39, 39, 39, 39, 62, 63, 64, 66, 39, 39, 39, 39, 44, + 68, 39, 42, 39, 43, 44, 45, 46, 47, 39, 39, 50, 39, 39, 39, 53, 54, 55, 56, 57, 58, 39, 39, 39, + 39, 62, 63, 64, 66, 39, 39, 39, 39, 44, 68, 39, 42, 39, 43, 44, 45, 46, 47, 39, 39, 39, 39, 39, + 39, 53, 54, 55, 56, 57, 58, 39, 39, 39, 39, 62, 63, 64, 66, 39, 39, 39, 39, 44, 68, 39, 42, 39, + 43, 44, 45, 46, 47, 48, 49, 50, 39, 39, 39, 53, 54, 55, 56, 57, 58, 39, 39, 39, 39, 62, 63, 64, + 66, 39, 39, 39, 39, 44, 40, 41, 39, 42, 39, 43, 44, 45, 46, 47, 48, 49, 50, 51, 39, 52, 53, 54, + 55, 56, 57, 58, 39, 39, 39, 61, 62, 63, 64, 61, 39, 39, 39, 39, 65, 39, 39, 64, 40, 39, 39, 39, + 39, 39, 39, 42, 40, 39, 39, 39, 39, 39, 39, 42, 39, 39, 44, 45, 46, 47, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 56, 57, 58, 39, 39, 39, 39, 62, 63, 64, 66, 42, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 59, 60, 42, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 60, 5, 70, 69, 71, 69, 72, 73, 74, 75, 76, 77, 78, 79, 80, 5, 81, + 82, 83, 84, 85, 86, 87, 69, 69, 69, 88, 89, 90, 91, 92, 69, 69, 69, 69, 93, 69, 69, 94, 5, 69, + 69, 69, 69, 69, 69, 71, 69, 69, 73, 74, 75, 76, 69, 69, 69, 69, 69, 69, 69, 69, 69, 85, 86, 87, + 69, 69, 69, 69, 89, 90, 91, 95, 69, 69, 69, 69, 73, 71, 69, 69, 73, 74, 75, 76, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 85, 86, 87, 69, 69, 69, 69, 89, 90, 91, 95, 71, 69, 69, 69, 74, 75, 76, 69, + 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 89, 90, 91, 71, 69, 69, 69, 69, 75, + 76, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 89, 90, 91, 71, 69, 69, 69, + 69, 69, 76, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 89, 90, 91, 71, 69, + 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 89, 90, 71, + 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 90, + 71, 71, 69, 69, 69, 74, 75, 76, 69, 69, 69, 69, 69, 69, 69, 69, 69, 85, 86, 87, 69, 69, 69, 69, + 89, 90, 91, 95, 71, 69, 69, 69, 74, 75, 76, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 86, 87, 69, + 69, 69, 69, 89, 90, 91, 95, 71, 69, 69, 69, 74, 75, 76, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, + 69, 87, 69, 69, 69, 69, 89, 90, 91, 95, 97, 96, 96, 96, 96, 96, 96, 98, 71, 69, 69, 69, 74, 75, + 76, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 89, 90, 91, 95, 71, 69, 72, + 73, 74, 75, 76, 69, 69, 69, 69, 69, 69, 82, 83, 84, 85, 86, 87, 69, 69, 69, 69, 89, 90, 91, 95, + 69, 69, 69, 69, 73, 71, 69, 69, 73, 74, 75, 76, 69, 69, 69, 69, 69, 69, 82, 83, 84, 85, 86, 87, + 69, 69, 69, 69, 89, 90, 91, 95, 69, 69, 69, 69, 73, 71, 69, 69, 73, 74, 75, 76, 69, 69, 69, 69, + 69, 69, 69, 83, 84, 85, 86, 87, 69, 69, 69, 69, 89, 90, 91, 95, 69, 69, 69, 69, 73, 71, 69, 69, + 73, 74, 75, 76, 69, 69, 69, 69, 69, 69, 69, 69, 84, 85, 86, 87, 69, 69, 69, 69, 89, 90, 91, 95, + 69, 69, 69, 69, 73, 99, 69, 71, 69, 72, 73, 74, 75, 76, 69, 78, 79, 69, 69, 69, 82, 83, 84, 85, + 86, 87, 69, 69, 69, 69, 89, 90, 91, 95, 69, 69, 69, 69, 73, 71, 69, 69, 73, 74, 75, 76, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 85, 86, 87, 69, 69, 69, 69, 89, 90, 91, 95, 69, 69, 69, 69, 73, 99, + 69, 71, 69, 72, 73, 74, 75, 76, 69, 69, 79, 69, 69, 69, 82, 83, 84, 85, 86, 87, 69, 69, 69, 69, + 89, 90, 91, 95, 69, 69, 69, 69, 73, 99, 69, 71, 69, 72, 73, 74, 75, 76, 69, 69, 69, 69, 69, 69, + 82, 83, 84, 85, 86, 87, 69, 69, 69, 69, 89, 90, 91, 95, 69, 69, 69, 69, 73, 99, 69, 71, 69, 72, + 73, 74, 75, 76, 77, 78, 79, 69, 69, 69, 82, 83, 84, 85, 86, 87, 69, 69, 69, 69, 89, 90, 91, 95, + 69, 69, 69, 69, 73, 5, 70, 69, 71, 69, 72, 73, 74, 75, 76, 77, 78, 79, 80, 69, 81, 82, 83, 84, + 85, 86, 87, 69, 69, 69, 88, 89, 90, 91, 92, 69, 69, 69, 69, 93, 69, 69, 94, 5, 100, 100, 100, + 100, 100, 100, 101, 5, 96, 96, 96, 96, 96, 96, 98, 5, 69, 69, 69, 69, 69, 69, 71, 69, 69, 73, + 74, 75, 76, 69, 69, 69, 69, 69, 69, 69, 69, 69, 85, 86, 87, 69, 69, 69, 69, 89, 90, 91, 95, + 101, 103, 104, 7, 105, 105, 105, 105, 106, 107, 108, 69, 71, 69, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 107, 118, 119, 120, 121, 122, 123, 124, 59, 60, 69, 125, 126, 127, 128, 129, 69, + 69, 69, 69, 130, 69, 69, 131, 107, 108, 69, 71, 69, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 107, 118, 119, 120, 121, 122, 123, 124, 69, 69, 69, 125, 126, 127, 128, 129, 69, 69, 69, + 69, 130, 69, 69, 131, 107, 69, 69, 69, 69, 69, 69, 71, 69, 69, 110, 111, 112, 113, 69, 69, 69, + 69, 69, 69, 69, 69, 69, 122, 123, 124, 69, 69, 69, 69, 126, 127, 128, 132, 69, 69, 69, 69, 110, + 71, 69, 69, 110, 111, 112, 113, 69, 69, 69, 69, 69, 69, 69, 69, 69, 122, 123, 124, 69, 69, 69, + 69, 126, 127, 128, 132, 71, 69, 69, 69, 111, 112, 113, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 69, 126, 127, 128, 71, 69, 69, 69, 69, 112, 113, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 126, 127, 128, 71, 69, 69, 69, 69, 69, 113, 69, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 126, 127, 128, 71, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 126, 127, 71, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 127, 71, 71, 69, + 69, 69, 111, 112, 113, 69, 69, 69, 69, 69, 69, 69, 69, 69, 122, 123, 124, 69, 69, 69, 69, 126, + 127, 128, 132, 71, 69, 69, 69, 111, 112, 113, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 123, 124, + 69, 69, 69, 69, 126, 127, 128, 132, 71, 69, 69, 69, 111, 112, 113, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 69, 124, 69, 69, 69, 69, 126, 127, 128, 132, 133, 96, 96, 96, 96, 96, 96, 98, 71, + 69, 69, 69, 111, 112, 113, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 126, + 127, 128, 132, 71, 69, 109, 110, 111, 112, 113, 69, 69, 69, 69, 69, 69, 119, 120, 121, 122, + 123, 124, 69, 69, 69, 69, 126, 127, 128, 132, 69, 69, 69, 69, 110, 71, 69, 69, 110, 111, 112, + 113, 69, 69, 69, 69, 69, 69, 119, 120, 121, 122, 123, 124, 69, 69, 69, 69, 126, 127, 128, 132, + 69, 69, 69, 69, 110, 71, 69, 69, 110, 111, 112, 113, 69, 69, 69, 69, 69, 69, 69, 120, 121, 122, + 123, 124, 69, 69, 69, 69, 126, 127, 128, 132, 69, 69, 69, 69, 110, 71, 69, 69, 110, 111, 112, + 113, 69, 69, 69, 69, 69, 69, 69, 69, 121, 122, 123, 124, 69, 69, 69, 69, 126, 127, 128, 132, + 69, 69, 69, 69, 110, 134, 69, 71, 69, 109, 110, 111, 112, 113, 69, 115, 116, 69, 69, 69, 119, + 120, 121, 122, 123, 124, 69, 69, 69, 69, 126, 127, 128, 132, 69, 69, 69, 69, 110, 71, 69, 69, + 110, 111, 112, 113, 69, 69, 69, 69, 69, 69, 69, 69, 69, 122, 123, 124, 69, 69, 69, 69, 126, + 127, 128, 132, 69, 69, 69, 69, 110, 134, 69, 71, 69, 109, 110, 111, 112, 113, 69, 69, 116, 69, + 69, 69, 119, 120, 121, 122, 123, 124, 69, 69, 69, 69, 126, 127, 128, 132, 69, 69, 69, 69, 110, + 134, 69, 71, 69, 109, 110, 111, 112, 113, 69, 69, 69, 69, 69, 69, 119, 120, 121, 122, 123, 124, + 69, 69, 69, 69, 126, 127, 128, 132, 69, 69, 69, 69, 110, 134, 69, 71, 69, 109, 110, 111, 112, + 113, 114, 115, 116, 69, 69, 69, 119, 120, 121, 122, 123, 124, 69, 69, 69, 69, 126, 127, 128, + 132, 69, 69, 69, 69, 110, 107, 108, 69, 71, 69, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 69, 118, 119, 120, 121, 122, 123, 124, 69, 69, 69, 125, 126, 127, 128, 129, 69, 69, 69, 69, + 130, 69, 69, 131, 107, 100, 100, 100, 100, 100, 100, 101, 107, 96, 96, 96, 96, 96, 96, 98, 107, + 69, 69, 69, 69, 69, 69, 71, 69, 69, 110, 111, 112, 113, 69, 69, 69, 69, 69, 69, 69, 69, 69, + 122, 123, 124, 69, 69, 69, 69, 126, 127, 128, 132, 101, 9, 10, 135, 12, 135, 14, 15, 16, 17, + 18, 19, 20, 21, 22, 9, 23, 24, 25, 26, 27, 28, 29, 135, 135, 135, 33, 34, 35, 36, 33, 135, 135, + 135, 135, 38, 135, 135, 36, 9, 135, 135, 135, 135, 135, 135, 12, 135, 135, 15, 16, 17, 18, 135, + 135, 135, 135, 135, 135, 135, 135, 135, 27, 28, 29, 135, 135, 135, 135, 34, 35, 36, 136, 135, + 135, 135, 135, 15, 12, 135, 135, 15, 16, 17, 18, 135, 135, 135, 135, 135, 135, 135, 135, 135, + 27, 28, 29, 135, 135, 135, 135, 34, 35, 36, 136, 12, 135, 135, 135, 16, 17, 18, 135, 135, 135, + 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 34, 35, 36, 12, 135, 135, 135, + 135, 17, 18, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, + 34, 35, 36, 12, 135, 135, 135, 135, 135, 18, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, + 135, 135, 135, 135, 135, 135, 34, 35, 36, 12, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, + 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 34, 35, 12, 135, 135, 135, 135, + 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, + 35, 12, 12, 135, 135, 135, 16, 17, 18, 135, 135, 135, 135, 135, 135, 135, 135, 135, 27, 28, 29, + 135, 135, 135, 135, 34, 35, 36, 136, 12, 135, 135, 135, 16, 17, 18, 135, 135, 135, 135, 135, + 135, 135, 135, 135, 135, 28, 29, 135, 135, 135, 135, 34, 35, 36, 136, 12, 135, 135, 135, 16, + 17, 18, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 29, 135, 135, 135, 135, 34, 35, + 36, 136, 137, 135, 135, 135, 135, 135, 135, 12, 12, 135, 135, 135, 16, 17, 18, 135, 135, 135, + 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 34, 35, 36, 136, 12, 135, 14, + 15, 16, 17, 18, 135, 135, 135, 135, 135, 135, 24, 25, 26, 27, 28, 29, 135, 135, 135, 135, 34, + 35, 36, 136, 135, 135, 135, 135, 15, 12, 135, 135, 15, 16, 17, 18, 135, 135, 135, 135, 135, + 135, 24, 25, 26, 27, 28, 29, 135, 135, 135, 135, 34, 35, 36, 136, 135, 135, 135, 135, 15, 12, + 135, 135, 15, 16, 17, 18, 135, 135, 135, 135, 135, 135, 135, 25, 26, 27, 28, 29, 135, 135, 135, + 135, 34, 35, 36, 136, 135, 135, 135, 135, 15, 12, 135, 135, 15, 16, 17, 18, 135, 135, 135, 135, + 135, 135, 135, 135, 26, 27, 28, 29, 135, 135, 135, 135, 34, 35, 36, 136, 135, 135, 135, 135, + 15, 138, 135, 12, 135, 14, 15, 16, 17, 18, 135, 20, 21, 135, 135, 135, 24, 25, 26, 27, 28, 29, + 135, 135, 135, 135, 34, 35, 36, 136, 135, 135, 135, 135, 15, 12, 135, 135, 15, 16, 17, 18, 135, + 135, 135, 135, 135, 135, 135, 135, 135, 27, 28, 29, 135, 135, 135, 135, 34, 35, 36, 136, 135, + 135, 135, 135, 15, 138, 135, 12, 135, 14, 15, 16, 17, 18, 135, 135, 21, 135, 135, 135, 24, 25, + 26, 27, 28, 29, 135, 135, 135, 135, 34, 35, 36, 136, 135, 135, 135, 135, 15, 138, 135, 12, 135, + 14, 15, 16, 17, 18, 135, 135, 135, 135, 135, 135, 24, 25, 26, 27, 28, 29, 135, 135, 135, 135, + 34, 35, 36, 136, 135, 135, 135, 135, 15, 138, 135, 12, 135, 14, 15, 16, 17, 18, 19, 20, 21, + 135, 135, 135, 24, 25, 26, 27, 28, 29, 135, 135, 135, 135, 34, 35, 36, 136, 135, 135, 135, 135, + 15, 9, 10, 135, 12, 135, 14, 15, 16, 17, 18, 19, 20, 21, 22, 135, 23, 24, 25, 26, 27, 28, 29, + 135, 135, 135, 33, 34, 35, 36, 33, 135, 135, 135, 135, 38, 135, 135, 36, 9, 135, 135, 135, 135, + 135, 135, 12, 9, 135, 135, 135, 135, 135, 135, 12, 135, 135, 15, 16, 17, 18, 135, 135, 135, + 135, 135, 135, 135, 135, 135, 27, 28, 29, 135, 135, 135, 135, 34, 35, 36, 136, 139, 135, 135, + 135, 135, 12, 11, 12, 5, 135, 135, 5, 9, 10, 11, 12, 135, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 9, 23, 24, 25, 26, 27, 28, 29, 30, 31, 135, 33, 34, 35, 36, 33, 135, 135, 135, 135, 38, 135, + 135, 36, 12, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, + 135, 135, 30, 31, 12, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, + 135, 135, 135, 135, 135, 31, 5, 140, 140, 5, 142, 141, 141, 141, 141, 141, 141, 141, 141, 141, + 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 143, + 141, 144, 141, 144, 145, 142, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, + 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 1, 143, 143, 142, 141, 141, + 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, + 141, 141, 141, 141, 141, 141, 143, 141, 144, 142, 141, 141, 141, 141, 141, 141, 141, 141, 141, + 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 143, + 141, 144, 141, 144, 40, 41, 39, 42, 39, 43, 44, 45, 46, 47, 48, 49, 50, 51, 40, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 39, 61, 62, 63, 64, 61, 1, 39, 2, 39, 65, 39, 39, 64, 0, 0, ]; -static _use_syllable_machine_range_lengths: [i8; 127] = [ - 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, -]; -static _use_syllable_machine_index_offsets: [i16; 127] = [ - 0, 3, 40, 68, 94, 109, 122, 130, 137, 143, 147, 150, 152, 164, 175, 185, 188, 197, 215, 232, - 248, 263, 284, 298, 318, 337, 359, 384, 387, 401, 405, 408, 435, 450, 463, 471, 478, 484, 488, - 491, 493, 505, 516, 526, 529, 538, 556, 573, 589, 604, 625, 639, 659, 678, 700, 726, 729, 732, - 746, 749, 752, 781, 808, 823, 836, 844, 851, 857, 861, 864, 866, 878, 889, 899, 902, 911, 929, - 946, 962, 977, 998, 1012, 1032, 1051, 1073, 1099, 1102, 1105, 1119, 1145, 1160, 1173, 1181, - 1188, 1194, 1198, 1201, 1203, 1215, 1226, 1236, 1239, 1248, 1266, 1283, 1299, 1314, 1335, 1349, - 1369, 1388, 1410, 1435, 1438, 1452, 1455, 1458, 1489, 1493, 1496, 1499, 1505, 1509, 1513, 1518, - 0, 0, +static _use_syllable_machine_index_defaults: [i16; 129] = [ + 0, 6, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 96, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 100, 96, 69, 100, 102, 105, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 96, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 100, 96, 69, 100, 135, 135, 135, + 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, + 135, 135, 135, 135, 135, 135, 135, 135, 135, 140, 141, 141, 141, 141, 39, 0, 0, ]; -static _use_syllable_machine_cond_targs: [i8; 1675] = [ - 120, 0, 1, 2, 31, 58, 60, 88, 89, 114, 1, 116, 102, 90, 91, 92, 93, 106, 108, 109, 110, 88, - 111, 103, 104, 105, 97, 98, 99, 117, 118, 119, 94, 95, 96, 120, 124, 113, 112, 1, 3, 4, 1, 17, - 5, 6, 7, 8, 21, 23, 24, 25, 3, 26, 18, 19, 20, 12, 13, 14, 29, 30, 9, 10, 11, 28, 27, 1, 3, 4, - 1, 17, 5, 6, 7, 8, 21, 23, 24, 25, 3, 26, 18, 19, 20, 12, 13, 14, 9, 10, 11, 28, 27, 1, 3, 1, - 5, 6, 7, 8, 12, 13, 14, 9, 10, 11, 15, 5, 1, 1, 5, 6, 7, 8, 12, 13, 14, 9, 10, 11, 15, 1, 1, 6, - 7, 8, 9, 10, 11, 1, 1, 7, 8, 9, 10, 11, 1, 1, 8, 9, 10, 11, 1, 1, 9, 10, 1, 1, 10, 1, 1, 1, 1, - 6, 7, 8, 12, 13, 14, 9, 10, 11, 15, 1, 1, 6, 7, 8, 13, 14, 9, 10, 11, 15, 1, 1, 6, 7, 8, 14, 9, - 10, 11, 15, 1, 16, 1, 1, 1, 6, 7, 8, 9, 10, 11, 15, 1, 1, 17, 5, 6, 7, 8, 18, 19, 20, 12, 13, - 14, 9, 10, 11, 15, 5, 1, 1, 5, 6, 7, 8, 18, 19, 20, 12, 13, 14, 9, 10, 11, 15, 5, 1, 1, 5, 6, - 7, 8, 19, 20, 12, 13, 14, 9, 10, 11, 15, 5, 1, 1, 5, 6, 7, 8, 20, 12, 13, 14, 9, 10, 11, 15, 5, - 1, 22, 1, 17, 5, 6, 7, 8, 23, 24, 18, 19, 20, 12, 13, 14, 9, 10, 11, 15, 5, 1, 1, 5, 6, 7, 8, - 12, 13, 14, 9, 10, 11, 15, 5, 1, 22, 1, 17, 5, 6, 7, 8, 24, 18, 19, 20, 12, 13, 14, 9, 10, 11, - 15, 5, 1, 22, 1, 17, 5, 6, 7, 8, 18, 19, 20, 12, 13, 14, 9, 10, 11, 15, 5, 1, 22, 1, 17, 5, 6, - 7, 8, 21, 23, 24, 18, 19, 20, 12, 13, 14, 9, 10, 11, 15, 5, 1, 3, 4, 1, 17, 5, 6, 7, 8, 21, 23, - 24, 25, 26, 18, 19, 20, 12, 13, 14, 9, 10, 11, 28, 27, 1, 3, 1, 1, 3, 1, 5, 6, 7, 8, 12, 13, - 14, 9, 10, 11, 15, 1, 1, 29, 30, 1, 1, 30, 1, 31, 32, 1, 45, 33, 34, 35, 36, 49, 51, 52, 53, - 31, 54, 46, 47, 48, 40, 41, 42, 55, 37, 38, 39, 56, 57, 1, 31, 1, 33, 34, 35, 36, 40, 41, 42, - 37, 38, 39, 43, 33, 1, 1, 33, 34, 35, 36, 40, 41, 42, 37, 38, 39, 43, 1, 1, 34, 35, 36, 37, 38, - 39, 1, 1, 35, 36, 37, 38, 39, 1, 1, 36, 37, 38, 39, 1, 1, 37, 38, 1, 1, 38, 1, 1, 1, 1, 34, 35, - 36, 40, 41, 42, 37, 38, 39, 43, 1, 1, 34, 35, 36, 41, 42, 37, 38, 39, 43, 1, 1, 34, 35, 36, 42, - 37, 38, 39, 43, 1, 44, 1, 1, 1, 34, 35, 36, 37, 38, 39, 43, 1, 1, 45, 33, 34, 35, 36, 46, 47, - 48, 40, 41, 42, 37, 38, 39, 43, 33, 1, 1, 33, 34, 35, 36, 46, 47, 48, 40, 41, 42, 37, 38, 39, - 43, 33, 1, 1, 33, 34, 35, 36, 47, 48, 40, 41, 42, 37, 38, 39, 43, 33, 1, 1, 33, 34, 35, 36, 48, - 40, 41, 42, 37, 38, 39, 43, 33, 1, 50, 1, 45, 33, 34, 35, 36, 51, 52, 46, 47, 48, 40, 41, 42, - 37, 38, 39, 43, 33, 1, 1, 33, 34, 35, 36, 40, 41, 42, 37, 38, 39, 43, 33, 1, 50, 1, 45, 33, 34, - 35, 36, 52, 46, 47, 48, 40, 41, 42, 37, 38, 39, 43, 33, 1, 50, 1, 45, 33, 34, 35, 36, 46, 47, - 48, 40, 41, 42, 37, 38, 39, 43, 33, 1, 50, 1, 45, 33, 34, 35, 36, 49, 51, 52, 46, 47, 48, 40, - 41, 42, 37, 38, 39, 43, 33, 1, 31, 32, 1, 45, 33, 34, 35, 36, 49, 51, 52, 53, 54, 46, 47, 48, - 40, 41, 42, 55, 37, 38, 39, 56, 57, 1, 31, 1, 1, 31, 1, 1, 31, 1, 33, 34, 35, 36, 40, 41, 42, - 37, 38, 39, 43, 1, 59, 1, 1, 58, 1, 1, 61, 62, 1, 75, 63, 64, 65, 66, 79, 81, 82, 83, 61, 84, - 76, 77, 78, 70, 71, 72, 29, 30, 85, 67, 68, 69, 86, 87, 1, 61, 62, 1, 75, 63, 64, 65, 66, 79, - 81, 82, 83, 61, 84, 76, 77, 78, 70, 71, 72, 85, 67, 68, 69, 86, 87, 1, 61, 1, 63, 64, 65, 66, - 70, 71, 72, 67, 68, 69, 73, 63, 1, 1, 63, 64, 65, 66, 70, 71, 72, 67, 68, 69, 73, 1, 1, 64, 65, - 66, 67, 68, 69, 1, 1, 65, 66, 67, 68, 69, 1, 1, 66, 67, 68, 69, 1, 1, 67, 68, 1, 1, 68, 1, 1, - 1, 1, 64, 65, 66, 70, 71, 72, 67, 68, 69, 73, 1, 1, 64, 65, 66, 71, 72, 67, 68, 69, 73, 1, 1, - 64, 65, 66, 72, 67, 68, 69, 73, 1, 74, 1, 1, 1, 64, 65, 66, 67, 68, 69, 73, 1, 1, 75, 63, 64, - 65, 66, 76, 77, 78, 70, 71, 72, 67, 68, 69, 73, 63, 1, 1, 63, 64, 65, 66, 76, 77, 78, 70, 71, - 72, 67, 68, 69, 73, 63, 1, 1, 63, 64, 65, 66, 77, 78, 70, 71, 72, 67, 68, 69, 73, 63, 1, 1, 63, - 64, 65, 66, 78, 70, 71, 72, 67, 68, 69, 73, 63, 1, 80, 1, 75, 63, 64, 65, 66, 81, 82, 76, 77, - 78, 70, 71, 72, 67, 68, 69, 73, 63, 1, 1, 63, 64, 65, 66, 70, 71, 72, 67, 68, 69, 73, 63, 1, - 80, 1, 75, 63, 64, 65, 66, 82, 76, 77, 78, 70, 71, 72, 67, 68, 69, 73, 63, 1, 80, 1, 75, 63, - 64, 65, 66, 76, 77, 78, 70, 71, 72, 67, 68, 69, 73, 63, 1, 80, 1, 75, 63, 64, 65, 66, 79, 81, - 82, 76, 77, 78, 70, 71, 72, 67, 68, 69, 73, 63, 1, 61, 62, 1, 75, 63, 64, 65, 66, 79, 81, 82, - 83, 84, 76, 77, 78, 70, 71, 72, 85, 67, 68, 69, 86, 87, 1, 61, 1, 1, 61, 1, 1, 61, 1, 63, 64, - 65, 66, 70, 71, 72, 67, 68, 69, 73, 1, 88, 89, 1, 102, 90, 91, 92, 93, 106, 108, 109, 110, 88, - 111, 103, 104, 105, 97, 98, 99, 94, 95, 96, 113, 112, 1, 88, 1, 90, 91, 92, 93, 97, 98, 99, 94, - 95, 96, 100, 90, 1, 1, 90, 91, 92, 93, 97, 98, 99, 94, 95, 96, 100, 1, 1, 91, 92, 93, 94, 95, - 96, 1, 1, 92, 93, 94, 95, 96, 1, 1, 93, 94, 95, 96, 1, 1, 94, 95, 1, 1, 95, 1, 1, 1, 1, 91, 92, - 93, 97, 98, 99, 94, 95, 96, 100, 1, 1, 91, 92, 93, 98, 99, 94, 95, 96, 100, 1, 1, 91, 92, 93, - 99, 94, 95, 96, 100, 1, 101, 1, 1, 1, 91, 92, 93, 94, 95, 96, 100, 1, 1, 102, 90, 91, 92, 93, - 103, 104, 105, 97, 98, 99, 94, 95, 96, 100, 90, 1, 1, 90, 91, 92, 93, 103, 104, 105, 97, 98, - 99, 94, 95, 96, 100, 90, 1, 1, 90, 91, 92, 93, 104, 105, 97, 98, 99, 94, 95, 96, 100, 90, 1, 1, - 90, 91, 92, 93, 105, 97, 98, 99, 94, 95, 96, 100, 90, 1, 107, 1, 102, 90, 91, 92, 93, 108, 109, - 103, 104, 105, 97, 98, 99, 94, 95, 96, 100, 90, 1, 1, 90, 91, 92, 93, 97, 98, 99, 94, 95, 96, - 100, 90, 1, 107, 1, 102, 90, 91, 92, 93, 109, 103, 104, 105, 97, 98, 99, 94, 95, 96, 100, 90, - 1, 107, 1, 102, 90, 91, 92, 93, 103, 104, 105, 97, 98, 99, 94, 95, 96, 100, 90, 1, 107, 1, 102, - 90, 91, 92, 93, 106, 108, 109, 103, 104, 105, 97, 98, 99, 94, 95, 96, 100, 90, 1, 88, 89, 1, - 102, 90, 91, 92, 93, 106, 108, 109, 110, 111, 103, 104, 105, 97, 98, 99, 94, 95, 96, 113, 112, - 1, 88, 1, 1, 88, 1, 90, 91, 92, 93, 97, 98, 99, 94, 95, 96, 100, 1, 115, 1, 1, 114, 1, 1, 31, - 31, 88, 89, 114, 1, 102, 90, 91, 92, 93, 106, 108, 109, 110, 88, 111, 103, 104, 105, 97, 98, - 99, 117, 118, 94, 95, 96, 113, 112, 1, 1, 117, 118, 1, 1, 118, 1, 31, 31, 1, 1, 121, 122, 122, - 123, 1, 1, 120, 121, 1, 1, 121, 122, 1, 1, 121, 122, 122, 1, 3, 4, 1, 17, 5, 6, 7, 8, 21, 23, - 24, 25, 3, 26, 18, 19, 20, 12, 13, 14, 29, 30, 9, 10, 11, 120, 0, 28, 27, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, +static _use_syllable_machine_cond_targs: [i8; 148] = [ + 1, 122, 0, 1, 2, 31, 1, 59, 61, 90, 91, 116, 1, 118, 104, 92, 93, 94, 95, 108, 110, 111, 112, + 113, 105, 106, 107, 99, 100, 101, 119, 120, 121, 114, 96, 97, 98, 126, 115, 1, 3, 4, 1, 17, 5, + 6, 7, 8, 21, 23, 24, 25, 26, 18, 19, 20, 12, 13, 14, 29, 30, 27, 9, 10, 11, 28, 15, 16, 22, 1, + 32, 1, 45, 33, 34, 35, 36, 49, 51, 52, 53, 54, 46, 47, 48, 40, 41, 42, 55, 37, 38, 39, 56, 57, + 58, 43, 1, 44, 1, 50, 1, 1, 1, 60, 1, 1, 1, 62, 63, 76, 64, 65, 66, 67, 80, 82, 83, 84, 85, 77, + 78, 79, 71, 72, 73, 86, 68, 69, 70, 87, 88, 89, 74, 75, 81, 1, 102, 103, 109, 117, 1, 1, 1, + 123, 124, 125, 0, 0, ]; -static _use_syllable_machine_cond_actions: [i8; 1675] = [ - 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 5, 0, 0, 23, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 35, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 35, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 17, - 0, 0, 0, 0, 0, 0, 35, 17, 0, 0, 0, 0, 0, 35, 17, 0, 0, 0, 0, 35, 17, 0, 0, 35, 17, 0, 35, 17, - 35, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 17, 0, 0, 0, 0, 0, - 0, 0, 0, 35, 0, 17, 35, 17, 0, 0, 0, 0, 0, 0, 0, 35, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 35, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 17, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 35, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 17, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 17, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 35, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 17, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 17, 35, 0, 17, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 35, 17, 0, 0, 35, 17, 0, 35, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 11, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 11, 0, 0, 0, 0, 0, 0, 29, 11, 0, 0, 0, 0, 0, 29, 11, 0, 0, 0, - 0, 29, 11, 0, 0, 29, 11, 0, 29, 11, 29, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 11, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 29, 11, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 9, 27, 11, 0, 0, 0, 0, 0, 0, 0, 29, 11, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 29, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 29, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 11, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, - 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 29, 0, 7, 25, 0, 9, 27, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 15, 33, 0, 13, - 31, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, - 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 11, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 11, 0, 0, 0, 0, 0, 0, - 29, 11, 0, 0, 0, 0, 0, 29, 11, 0, 0, 0, 0, 29, 11, 0, 0, 29, 11, 0, 29, 11, 29, 11, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 29, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 11, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 9, - 27, 11, 0, 0, 0, 0, 0, 0, 0, 29, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 11, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, - 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 29, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 11, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 7, 25, 0, 9, 27, 0, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 29, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, - 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 21, 0, - 0, 0, 0, 0, 0, 39, 21, 0, 0, 0, 0, 0, 39, 21, 0, 0, 0, 0, 39, 21, 0, 0, 39, 21, 0, 39, 21, 39, - 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 21, 0, 0, 0, 0, 0, 0, - 0, 0, 39, 0, 21, 39, 21, 0, 0, 0, 0, 0, 0, 0, 39, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 39, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 39, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 21, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 21, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 39, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 21, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 21, 39, 0, 21, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 39, 0, 21, 39, 0, 21, 39, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 21, 0, 0, 39, 21, 0, 39, 0, 0, 41, 19, 0, 0, 0, - 0, 37, 19, 0, 0, 37, 19, 0, 0, 37, 19, 0, 0, 0, 37, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 43, 0, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 29, 29, 29, 29, 29, - 29, 29, 29, 29, 29, 29, 29, 27, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 25, 27, 29, 33, 31, - 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 27, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, - 29, 25, 27, 29, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, - 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 41, 37, 37, 37, 37, 35, 0, 0, +static _use_syllable_machine_cond_actions: [i8; 148] = [ + 1, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 6, 0, 7, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 9, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 11, 0, 12, 0, 13, 14, 15, 0, 16, 17, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 20, 21, 22, 0, 0, 0, 0, 0, ]; -static _use_syllable_machine_to_state_actions: [i8; 127] = [ - 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +static _use_syllable_machine_to_state_actions: [i8; 129] = [ + 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, ]; -static _use_syllable_machine_from_state_actions: [i8; 127] = [ +static _use_syllable_machine_from_state_actions: [i8; 129] = [ 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, ]; -static _use_syllable_machine_eof_trans: [i16; 127] = [ - 1549, 1550, 1551, 1552, 1553, 1554, 1555, 1556, 1557, 1558, 1559, 1560, 1561, 1562, 1563, 1564, - 1565, 1566, 1567, 1568, 1569, 1570, 1571, 1572, 1573, 1574, 1575, 1576, 1577, 1578, 1579, 1580, - 1581, 1582, 1583, 1584, 1585, 1586, 1587, 1588, 1589, 1590, 1591, 1592, 1593, 1594, 1595, 1596, - 1597, 1598, 1599, 1600, 1601, 1602, 1603, 1604, 1605, 1606, 1607, 1608, 1609, 1610, 1611, 1612, - 1613, 1614, 1615, 1616, 1617, 1618, 1619, 1620, 1621, 1622, 1623, 1624, 1625, 1626, 1627, 1628, - 1629, 1630, 1631, 1632, 1633, 1634, 1635, 1636, 1637, 1638, 1639, 1640, 1641, 1642, 1643, 1644, - 1645, 1646, 1647, 1648, 1649, 1650, 1651, 1652, 1653, 1654, 1655, 1656, 1657, 1658, 1659, 1660, - 1661, 1662, 1663, 1664, 1665, 1666, 1667, 1668, 1669, 1670, 1671, 1672, 1673, 0, 0, +static _use_syllable_machine_eof_trans: [i16; 129] = [ + 1, 4, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 97, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 101, 97, 70, 101, 103, 106, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 97, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 101, 97, 70, 101, 136, 136, 136, + 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, + 136, 136, 136, 136, 136, 136, 136, 136, 136, 141, 142, 142, 142, 142, 40, 0, 0, ]; static use_syllable_machine_start: i32 = 1; static use_syllable_machine_first_final: i32 = 1; @@ -314,27 +292,18 @@ pub fn find_syllables(buffer: &mut hb_buffer_t) { } { - let mut _klen = 0; let mut _trans = 0; let mut _keys: i32 = 0; - let mut _acts: i32 = 0; - let mut _nacts = 0; - let mut __have = 0; + let mut _inds: i32 = 0; + let mut _ic = 0; '_resume: while (p != pe || p == eof) { '_again: while (true) { - _acts = (_use_syllable_machine_from_state_actions[(cs) as usize]) as i32; - _nacts = (_use_syllable_machine_actions[(_acts) as usize]) as u32; - _acts += 1; - while (_nacts > 0) { - match (_use_syllable_machine_actions[(_acts) as usize]) { - 1 => { - ts = p; - } - - _ => {} + match (_use_syllable_machine_from_state_actions[(cs) as usize]) { + 3 => { + ts = p; } - _nacts -= 1; - _acts += 1; + + _ => {} } if (p == eof) { { @@ -347,71 +316,40 @@ pub fn find_syllables(buffer: &mut hb_buffer_t) { } } else { { - _keys = (_use_syllable_machine_key_offsets[(cs) as usize]) as i32; - _trans = (_use_syllable_machine_index_offsets[(cs) as usize]) as u32; - _klen = (_use_syllable_machine_single_lengths[(cs) as usize]) as i32; - __have = 0; - if (_klen > 0) { + _keys = (cs << 1) as i32; + _inds = (_use_syllable_machine_index_offsets[(cs) as usize]) as i32; + if ((infos[p.index()].get().use_category() as u8) <= 56) { { - let mut _lower: i32 = _keys; - let mut _upper: i32 = _keys + _klen - 1; - let mut _mid: i32 = 0; - while (true) { - if (_upper < _lower) { - { - _keys += _klen; - _trans += (_klen) as u32; - break; - } - } - _mid = _lower + ((_upper - _lower) >> 1); - if ((infos[p.index()].get().use_category() as u8) - < _use_syllable_machine_trans_keys[(_mid) as usize]) - { - _upper = _mid - 1; - } else if ((infos[p.index()].get().use_category() as u8) - > _use_syllable_machine_trans_keys[(_mid) as usize]) - { - _lower = _mid + 1; - } else { - { - __have = 1; - _trans += (_mid - _keys) as u32; - break; - } - } + _ic = (_use_syllable_machine_char_class[((infos[p.index()] + .get() + .use_category() + as u8) + as i32 + - 0) + as usize]) as i32; + if (_ic + <= (_use_syllable_machine_trans_keys[(_keys + 1) as usize]) + as i32 + && _ic + >= (_use_syllable_machine_trans_keys[(_keys) as usize]) + as i32) + { + _trans = (_use_syllable_machine_indices[(_inds + + (_ic + - (_use_syllable_machine_trans_keys[(_keys) as usize]) + as i32) + as i32) + as usize]) + as u32; + } else { + _trans = (_use_syllable_machine_index_defaults[(cs) as usize]) + as u32; } } - } - _klen = (_use_syllable_machine_range_lengths[(cs) as usize]) as i32; - if (__have == 0 && _klen > 0) { + } else { { - let mut _lower: i32 = _keys; - let mut _upper: i32 = _keys + (_klen << 1) - 2; - let mut _mid: i32 = 0; - while (true) { - if (_upper < _lower) { - { - _trans += (_klen) as u32; - break; - } - } - _mid = _lower + (((_upper - _lower) >> 1) & !1); - if ((infos[p.index()].get().use_category() as u8) - < _use_syllable_machine_trans_keys[(_mid) as usize]) - { - _upper = _mid - 2; - } else if ((infos[p.index()].get().use_category() as u8) - > _use_syllable_machine_trans_keys[(_mid + 1) as usize]) - { - _lower = _mid + 2; - } else { - { - _trans += ((_mid - _keys) >> 1) as u32; - break; - } - } - } + _trans = + (_use_syllable_machine_index_defaults[(cs) as usize]) as u32; } } } @@ -419,150 +357,139 @@ pub fn find_syllables(buffer: &mut hb_buffer_t) { cs = (_use_syllable_machine_cond_targs[(_trans) as usize]) as i32; if (_use_syllable_machine_cond_actions[(_trans) as usize] != 0) { { - _acts = (_use_syllable_machine_cond_actions[(_trans) as usize]) as i32; - _nacts = (_use_syllable_machine_actions[(_acts) as usize]) as u32; - _acts += 1; - while (_nacts > 0) { - match (_use_syllable_machine_actions[(_acts) as usize]) { - 2 => { - te = p + 1; - } - 3 => { - te = p + 1; - { - found_syllable!(SyllableType::ViramaTerminatedCluster); - } + match (_use_syllable_machine_cond_actions[(_trans) as usize]) { + 6 => { + te = p + 1; + } + 14 => { + te = p + 1; + { + found_syllable!(SyllableType::ViramaTerminatedCluster); } - 4 => { - te = p + 1; - { - found_syllable!(SyllableType::SakotTerminatedCluster); - } + } + 12 => { + te = p + 1; + { + found_syllable!(SyllableType::SakotTerminatedCluster); } - 5 => { - te = p + 1; - { - found_syllable!(SyllableType::StandardCluster); - } + } + 10 => { + te = p + 1; + { + found_syllable!(SyllableType::StandardCluster); } - 6 => { - te = p + 1; - { - found_syllable!( - SyllableType::NumberJoinerTerminatedCluster - ); - } + } + 18 => { + te = p + 1; + { + found_syllable!(SyllableType::NumberJoinerTerminatedCluster); } - 7 => { - te = p + 1; - { - found_syllable!(SyllableType::NumeralCluster); - } + } + 16 => { + te = p + 1; + { + found_syllable!(SyllableType::NumeralCluster); } - 8 => { - te = p + 1; - { - found_syllable!(SyllableType::SymbolCluster); - } + } + 8 => { + te = p + 1; + { + found_syllable!(SyllableType::SymbolCluster); } - 9 => { - te = p + 1; - { - found_syllable!(SyllableType::HieroglyphCluster); - } + } + 22 => { + te = p + 1; + { + found_syllable!(SyllableType::HieroglyphCluster); } - 10 => { - te = p + 1; - { - found_syllable!(SyllableType::BrokenCluster); - buffer.scratch_flags |= - HB_BUFFER_SCRATCH_FLAG_HAS_BROKEN_SYLLABLE; - } + } + 5 => { + te = p + 1; + { + found_syllable!(SyllableType::BrokenCluster); + buffer.scratch_flags |= + HB_BUFFER_SCRATCH_FLAG_HAS_BROKEN_SYLLABLE; } - 11 => { - te = p + 1; - { - found_syllable!(SyllableType::NonCluster); - } + } + 4 => { + te = p + 1; + { + found_syllable!(SyllableType::NonCluster); } - 12 => { - te = p; - p = p - 1; - { - found_syllable!(SyllableType::ViramaTerminatedCluster); - } + } + 13 => { + te = p; + p = p - 1; + { + found_syllable!(SyllableType::ViramaTerminatedCluster); } - 13 => { - te = p; - p = p - 1; - { - found_syllable!(SyllableType::SakotTerminatedCluster); - } + } + 11 => { + te = p; + p = p - 1; + { + found_syllable!(SyllableType::SakotTerminatedCluster); } - 14 => { - te = p; - p = p - 1; - { - found_syllable!(SyllableType::StandardCluster); - } + } + 9 => { + te = p; + p = p - 1; + { + found_syllable!(SyllableType::StandardCluster); } - 15 => { - te = p; - p = p - 1; - { - found_syllable!( - SyllableType::NumberJoinerTerminatedCluster - ); - } + } + 17 => { + te = p; + p = p - 1; + { + found_syllable!(SyllableType::NumberJoinerTerminatedCluster); } - 16 => { - te = p; - p = p - 1; - { - found_syllable!(SyllableType::NumeralCluster); - } + } + 15 => { + te = p; + p = p - 1; + { + found_syllable!(SyllableType::NumeralCluster); } - 17 => { - te = p; - p = p - 1; - { - found_syllable!(SyllableType::SymbolCluster); - } + } + 7 => { + te = p; + p = p - 1; + { + found_syllable!(SyllableType::SymbolCluster); } - 18 => { - te = p; - p = p - 1; - { - found_syllable!(SyllableType::HieroglyphCluster); - } + } + 21 => { + te = p; + p = p - 1; + { + found_syllable!(SyllableType::HieroglyphCluster); } - 19 => { - te = p; - p = p - 1; - { - found_syllable!(SyllableType::BrokenCluster); - buffer.scratch_flags |= - HB_BUFFER_SCRATCH_FLAG_HAS_BROKEN_SYLLABLE; - } + } + 19 => { + te = p; + p = p - 1; + { + found_syllable!(SyllableType::BrokenCluster); + buffer.scratch_flags |= + HB_BUFFER_SCRATCH_FLAG_HAS_BROKEN_SYLLABLE; } - 20 => { - te = p; - p = p - 1; - { - found_syllable!(SyllableType::NonCluster); - } + } + 20 => { + te = p; + p = p - 1; + { + found_syllable!(SyllableType::NonCluster); } - 21 => { - p = (te) - 1; - { - found_syllable!(SyllableType::SymbolCluster); - } + } + 1 => { + p = (te) - 1; + { + found_syllable!(SyllableType::SymbolCluster); } - - _ => {} } - _nacts -= 1; - _acts += 1; + + _ => {} } } } @@ -576,19 +503,12 @@ pub fn find_syllables(buffer: &mut hb_buffer_t) { } } else { { - _acts = (_use_syllable_machine_to_state_actions[(cs) as usize]) as i32; - _nacts = (_use_syllable_machine_actions[(_acts) as usize]) as u32; - _acts += 1; - while (_nacts > 0) { - match (_use_syllable_machine_actions[(_acts) as usize]) { - 0 => { - ts = p0; - } - - _ => {} + match (_use_syllable_machine_to_state_actions[(cs) as usize]) { + 2 => { + ts = p0; } - _nacts -= 1; - _acts += 1; + + _ => {} } p += 1; continue '_resume; diff --git a/src/hb/ot_shaper_use_table.rs b/src/hb/ot_shaper_use_table.rs index 1ca8fc69..d333988f 100644 --- a/src/hb/ot_shaper_use_table.rs +++ b/src/hb/ot_shaper_use_table.rs @@ -49,7 +49,7 @@ use super::ot_shaper_use::category::*; -const hb_use_u8: [u8; 3343] = +const hb_use_u8: [u8; 3345] = [ 16, 50, 51, 51, 51, 52, 51, 83, 118, 131, 57, 58, 59, 195, 211, 62, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, @@ -149,89 +149,89 @@ const hb_use_u8: [u8; 3343] = 2, 2, 2, 107, 22, 20, 20, 22, 48, 48, 22, 108, 2, 2, 2, 9, 0, 0, 0, 0, 0, 0, 109, 110, 110, 110, 110, 0, 0, 0, 0, 0, 0, 106, 74, 2, 2, 2, 2, 2, 2, 60, 61, 59, 25, 22, 111, 61, - 2, 2, 2, 2, 107, 22, 23, 45, 45, 102, 14, 0, 0, 0, 0, 0, - 0, 2, 2, 61, 18, 48, 23, 112, 102, 102, 102, 113, 114, 0, 0, 0, - 0, 2, 2, 2, 2, 2, 0, 30, 2, 11, 46, 115, 115, 115, 11, 115, - 115, 15, 115, 115, 115, 26, 0, 40, 0, 0, 0, 116, 51, 11, 5, 0, - 0, 0, 0, 0, 0, 0, 117, 0, 0, 0, 0, 0, 0, 0, 6, 118, - 119, 42, 42, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, 119, - 120, 119, 119, 119, 119, 119, 119, 119, 119, 0, 0, 121, 0, 0, 0, 0, - 0, 0, 7, 121, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 122, 122, 0, 0, + 2, 2, 2, 2, 107, 22, 23, 45, 45, 102, 112, 0, 0, 0, 0, 0, + 0, 2, 2, 61, 18, 48, 23, 113, 102, 102, 102, 114, 115, 0, 0, 0, + 0, 2, 2, 2, 2, 2, 0, 30, 2, 11, 46, 116, 116, 116, 11, 116, + 116, 15, 116, 116, 116, 26, 0, 40, 0, 0, 0, 117, 51, 11, 5, 0, + 0, 0, 0, 0, 0, 0, 118, 0, 0, 0, 0, 0, 0, 0, 6, 119, + 120, 42, 42, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 120, + 121, 120, 120, 120, 120, 120, 120, 120, 120, 0, 0, 122, 0, 0, 0, 0, + 0, 0, 7, 122, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 123, 123, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, - 123, 0, 122, 122, 0, 0, 0, 0, 0, 2, 53, 2, 108, 2, 10, 2, + 124, 0, 123, 123, 0, 0, 0, 0, 0, 2, 53, 2, 108, 2, 10, 2, 2, 2, 65, 19, 16, 0, 0, 31, 0, 2, 2, 0, 0, 0, 0, 0, - 0, 29, 2, 2, 2, 2, 2, 2, 2, 2, 2, 124, 23, 23, 23, 23, - 23, 23, 23, 125, 0, 0, 0, 0, 0, 11, 11, 11, 11, 11, 11, 11, - 11, 11, 2, 0, 0, 0, 0, 0, 52, 2, 2, 2, 22, 22, 126, 115, - 0, 2, 2, 2, 127, 20, 59, 20, 112, 102, 128, 0, 0, 0, 0, 0, - 0, 11, 129, 2, 2, 2, 2, 2, 2, 2, 130, 23, 22, 20, 48, 131, - 132, 133, 0, 0, 0, 0, 0, 0, 0, 2, 2, 52, 30, 2, 2, 2, - 2, 2, 2, 2, 2, 10, 22, 59, 99, 76, 134, 135, 136, 0, 0, 0, - 0, 2, 137, 2, 2, 2, 2, 138, 0, 30, 2, 42, 5, 0, 79, 15, - 2, 53, 22, 139, 52, 53, 2, 2, 105, 10, 9, 0, 0, 0, 0, 0, - 0, 2, 2, 2, 2, 2, 140, 21, 25, 0, 0, 141, 142, 0, 0, 0, - 0, 2, 65, 45, 23, 80, 47, 143, 0, 81, 81, 81, 81, 81, 81, 81, - 81, 0, 0, 0, 0, 0, 0, 0, 6, 119, 119, 119, 119, 120, 0, 0, + 0, 29, 2, 2, 2, 2, 2, 2, 2, 2, 2, 125, 23, 23, 23, 23, + 23, 23, 23, 126, 0, 0, 0, 0, 0, 11, 11, 11, 11, 11, 11, 11, + 11, 11, 2, 0, 0, 0, 0, 0, 52, 2, 2, 2, 22, 22, 127, 116, + 0, 2, 2, 2, 128, 20, 59, 20, 113, 102, 129, 0, 0, 0, 0, 0, + 0, 11, 130, 2, 2, 2, 2, 2, 2, 2, 131, 23, 22, 20, 48, 132, + 133, 134, 0, 0, 0, 0, 0, 0, 0, 2, 2, 52, 30, 2, 2, 2, + 2, 2, 2, 2, 2, 10, 22, 59, 99, 76, 135, 136, 137, 0, 0, 0, + 0, 2, 138, 2, 2, 2, 2, 139, 0, 30, 2, 42, 5, 0, 79, 15, + 2, 53, 22, 140, 52, 53, 2, 2, 105, 10, 9, 0, 0, 0, 0, 0, + 0, 2, 2, 2, 2, 2, 141, 21, 25, 0, 0, 142, 143, 0, 0, 0, + 0, 2, 65, 45, 23, 80, 47, 144, 0, 81, 81, 81, 81, 81, 81, 81, + 81, 0, 0, 0, 0, 0, 0, 0, 6, 120, 120, 120, 120, 121, 0, 0, 0, 2, 2, 2, 2, 2, 9, 2, 2, 2, 9, 2, 30, 2, 2, 2, - 2, 2, 30, 2, 2, 2, 30, 9, 0, 127, 20, 27, 31, 0, 0, 144, - 145, 2, 2, 30, 2, 30, 2, 2, 2, 2, 2, 2, 0, 14, 37, 0, - 146, 2, 2, 13, 37, 0, 30, 2, 2, 2, 0, 0, 0, 0, 0, 0, + 2, 2, 30, 2, 2, 2, 30, 9, 0, 128, 20, 27, 31, 0, 0, 145, + 146, 2, 2, 30, 2, 30, 2, 2, 2, 2, 2, 2, 0, 14, 37, 0, + 147, 2, 2, 13, 37, 0, 30, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 2, 2, 9, 2, 2, 11, 41, 0, 0, 0, 0, 2, 2, 2, 0, 27, 22, 22, 30, 2, 2, 2, 0, 0, 0, 0, - 0, 2, 2, 2, 2, 2, 27, 38, 0, 2, 2, 2, 115, 115, 115, 115, - 115, 147, 2, 9, 0, 0, 0, 0, 0, 2, 14, 14, 0, 0, 0, 0, + 0, 2, 2, 2, 2, 2, 27, 38, 0, 2, 2, 2, 116, 116, 116, 116, + 116, 148, 2, 9, 0, 0, 0, 0, 0, 2, 14, 14, 0, 0, 0, 0, 0, 9, 2, 2, 9, 2, 2, 2, 2, 30, 2, 9, 0, 30, 2, 0, - 0, 148, 149, 150, 2, 2, 2, 2, 2, 2, 2, 2, 2, 22, 22, 20, - 20, 20, 22, 22, 133, 0, 0, 0, 0, 0, 151, 151, 151, 151, 151, 151, - 151, 151, 151, 151, 2, 2, 2, 2, 2, 53, 52, 53, 0, 0, 0, 0, - 152, 11, 74, 2, 2, 2, 2, 2, 2, 18, 19, 21, 16, 24, 37, 0, + 0, 149, 150, 151, 2, 2, 2, 2, 2, 2, 2, 2, 2, 22, 22, 20, + 20, 20, 22, 22, 134, 0, 0, 0, 0, 0, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 2, 2, 2, 2, 2, 53, 52, 53, 0, 0, 0, 0, + 153, 11, 74, 2, 2, 2, 2, 2, 2, 18, 19, 21, 16, 24, 37, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 11, 49, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 127, 20, 22, 153, 22, 21, 154, 155, 2, 2, 2, 2, - 2, 0, 0, 65, 156, 0, 0, 0, 0, 2, 13, 0, 0, 0, 0, 0, - 0, 2, 65, 25, 20, 20, 20, 22, 22, 108, 157, 0, 0, 56, 158, 31, - 159, 30, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 23, - 19, 22, 22, 160, 44, 0, 0, 0, 49, 127, 0, 0, 0, 0, 0, 0, + 2, 2, 2, 2, 128, 20, 22, 154, 22, 21, 155, 156, 2, 2, 2, 2, + 2, 0, 0, 65, 157, 0, 0, 0, 0, 2, 13, 0, 0, 0, 0, 0, + 0, 2, 65, 25, 20, 20, 20, 22, 22, 108, 158, 0, 0, 56, 159, 31, + 160, 30, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 23, + 19, 22, 22, 161, 44, 0, 0, 0, 49, 128, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 9, 9, 2, 2, 30, 2, 2, 2, 2, 2, 2, 2, - 30, 2, 2, 2, 2, 2, 2, 2, 10, 18, 19, 21, 22, 161, 31, 0, + 30, 2, 2, 2, 2, 2, 2, 2, 10, 18, 19, 21, 22, 162, 31, 0, 0, 11, 11, 30, 2, 2, 2, 9, 30, 9, 2, 30, 2, 2, 58, 17, 23, 16, 23, 47, 32, 33, 32, 34, 0, 0, 0, 0, 35, 0, 0, 0, 2, 2, 23, 0, 11, 11, 11, 46, 0, 11, 11, 46, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 30, 0, 9, 2, 2, 2, 30, 45, 59, 20, - 20, 31, 33, 32, 32, 25, 162, 29, 163, 164, 37, 0, 0, 0, 0, 0, + 20, 31, 33, 32, 32, 25, 163, 29, 164, 165, 37, 0, 0, 0, 0, 0, 0, 12, 26, 0, 0, 0, 0, 0, 0, 2, 2, 65, 25, 20, 20, 20, - 22, 23, 125, 15, 17, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 0, - 165, 166, 0, 0, 0, 0, 0, 0, 0, 18, 19, 20, 20, 66, 99, 25, - 159, 11, 167, 9, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, - 65, 25, 20, 20, 0, 48, 48, 11, 168, 37, 0, 0, 0, 0, 0, 0, + 22, 23, 126, 15, 17, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 0, + 166, 167, 0, 0, 0, 0, 0, 0, 0, 18, 19, 20, 20, 66, 99, 25, + 160, 11, 168, 9, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, + 65, 25, 20, 20, 0, 48, 48, 11, 169, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 20, 0, 23, 19, 20, 20, 21, 16, 82, - 168, 38, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 10, 169, - 25, 20, 22, 22, 167, 9, 0, 0, 0, 2, 2, 2, 2, 2, 9, 43, - 135, 23, 22, 20, 76, 21, 22, 0, 0, 2, 2, 2, 9, 0, 0, 0, - 0, 2, 2, 2, 2, 2, 2, 18, 19, 20, 21, 22, 105, 168, 37, 0, + 169, 38, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 10, 170, + 25, 20, 22, 22, 168, 9, 0, 0, 0, 2, 2, 2, 2, 2, 9, 43, + 136, 23, 22, 20, 76, 21, 22, 0, 0, 2, 2, 2, 9, 0, 0, 0, + 0, 2, 2, 2, 2, 2, 2, 18, 19, 20, 21, 22, 105, 169, 37, 0, 0, 2, 2, 2, 9, 30, 0, 2, 2, 2, 2, 30, 9, 2, 2, 2, - 2, 23, 23, 18, 32, 33, 12, 170, 164, 171, 172, 0, 0, 0, 0, 0, + 2, 23, 23, 18, 32, 33, 12, 171, 165, 172, 173, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 2, 2, 2, 65, 25, 20, 20, 0, 22, 23, - 29, 108, 0, 33, 0, 0, 0, 0, 0, 52, 20, 22, 22, 22, 139, 2, - 2, 2, 173, 174, 11, 15, 175, 61, 176, 0, 0, 1, 146, 0, 0, 0, - 0, 52, 20, 22, 16, 19, 20, 2, 2, 2, 2, 157, 157, 157, 177, 177, - 177, 177, 177, 177, 15, 178, 0, 30, 0, 22, 20, 20, 31, 22, 22, 11, - 168, 0, 61, 61, 61, 61, 61, 61, 61, 66, 21, 82, 46, 0, 0, 0, + 29, 108, 0, 33, 0, 0, 0, 0, 0, 52, 20, 22, 22, 22, 140, 2, + 2, 2, 174, 175, 11, 15, 176, 61, 177, 0, 0, 1, 147, 0, 0, 0, + 0, 52, 20, 22, 16, 19, 20, 2, 2, 2, 2, 158, 158, 158, 178, 178, + 178, 178, 178, 178, 15, 179, 0, 30, 0, 22, 20, 20, 31, 22, 22, 11, + 169, 0, 61, 61, 61, 61, 61, 61, 61, 66, 21, 82, 46, 0, 0, 0, 0, 2, 2, 2, 9, 2, 30, 2, 2, 52, 22, 22, 31, 0, 38, 22, - 27, 11, 158, 179, 180, 0, 0, 0, 0, 2, 2, 2, 30, 9, 2, 2, + 27, 11, 159, 180, 181, 0, 0, 0, 0, 2, 2, 2, 30, 9, 2, 2, 2, 2, 2, 2, 2, 2, 23, 23, 47, 22, 35, 82, 68, 0, 0, 0, - 0, 2, 181, 66, 47, 0, 0, 0, 0, 11, 182, 2, 2, 2, 2, 2, - 2, 2, 2, 23, 22, 20, 31, 0, 48, 16, 142, 0, 0, 0, 0, 0, - 0, 2, 2, 2, 2, 2, 155, 0, 0, 183, 183, 183, 183, 183, 183, 183, - 183, 184, 184, 184, 185, 186, 184, 183, 183, 187, 183, 183, 188, 189, 189, 189, - 189, 189, 189, 189, 0, 0, 0, 0, 0, 183, 183, 183, 183, 183, 190, 0, - 0, 2, 2, 2, 2, 2, 2, 2, 22, 22, 22, 22, 22, 22, 191, 192, - 193, 11, 11, 11, 46, 0, 0, 0, 0, 29, 74, 2, 2, 2, 2, 2, + 0, 2, 182, 66, 47, 0, 0, 0, 0, 11, 183, 2, 2, 2, 2, 2, + 2, 2, 2, 23, 22, 20, 31, 0, 48, 16, 143, 0, 0, 0, 0, 0, + 0, 2, 2, 2, 2, 2, 156, 0, 0, 184, 184, 184, 184, 184, 184, 184, + 184, 185, 185, 185, 186, 187, 185, 184, 184, 188, 184, 184, 189, 190, 190, 190, + 190, 190, 190, 190, 0, 0, 0, 0, 0, 184, 184, 184, 184, 184, 191, 0, + 0, 2, 2, 2, 2, 2, 2, 2, 22, 22, 22, 22, 22, 22, 192, 193, + 194, 11, 11, 11, 46, 0, 0, 0, 0, 29, 74, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 65, 47, 0, 2, 2, 2, 2, 2, 9, 0, - 58, 194, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, - 20, 20, 20, 20, 20, 0, 0, 0, 40, 115, 26, 0, 0, 0, 0, 0, + 58, 195, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 0, 0, 0, 40, 116, 26, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 30, 2, 2, 2, 2, 2, 0, 58, 37, 0, 6, 119, 119, 119, 120, 0, + 30, 2, 2, 2, 2, 2, 0, 58, 37, 0, 6, 120, 120, 120, 121, 0, 0, 11, 11, 11, 49, 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 46, 2, 2, 2, 2, 2, 2, 11, 11, 2, 2, 2, 2, 2, 2, 22, 22, 2, 2, 2, 2, 2, 2, 2, @@ -249,17 +249,18 @@ const hb_use_u8: [u8; 3343] = FMAbv, FAbv,CMAbv,FMAbv,VMAbv,FMAbv, VAbv, IS,FMAbv, B,FMAbv, B, CGJ, WJ, CGJ, GB, CMAbv,CMAbv, B, GB, B, VAbv, SUB, FPst, FPst,VMBlw, FPst, FPst, FBlw,VMAbv,FMBlw, VAbv, VPre, B, MPre, MBlw, SUB, FAbv, FAbv, MAbv, SUB, Sk, VPst, VAbv,VMAbv,VMAbv, FAbv,CMAbv, - VPst, H, B, O,SMAbv,SMAbv,SMAbv, VPst, IS, VBlw, FAbv,VMPre,VMPre,FMAbv,CMBlw,VMBlw, - VMBlw,VMAbv, CS, O,FMAbv, ZWNJ, CGJ, WJ, WJ, WJ, O,FMPst, O, SB, SE, O, - H, MPst, VPst, H,VMAbv, VAbv,VMBlw, B, VBlw, FPst, VPst, FAbv,VMPst, B,CMAbv, VAbv, - MBlw, MPst, MBlw, H, O, VBlw, MPst, MPre, MAbv, MBlw, O, B, FAbv, FAbv, FPst, VBlw, - B, B, VPre, O,VMPst, IS, O,VMPst, VBlw, VPst,VMBlw,VMBlw,VMAbv, O, IS,VMBlw, - B,VMPst,VMAbv,VMPst, CS, CS, B, N, N, O, HN, VPre, VBlw, VAbv, IS,CMAbv, - O, VPst, B, R, R,CMBlw, VAbv, VPre,VMAbv,VMAbv, H, VAbv,CMBlw,VMPst, O,VMAbv, - CMBlw, IS, R,FMAbv, B, CS, CS, H,CMBlw,VMPst, H,VMPst, VAbv,VMAbv, VPst, MPst, - R, MPst,CMBlw, B,FMBlw, VBlw,VMAbv, CS, SUB, SUB, GB, FBlw, FBlw,CMAbv, IS, VBlw, - IS, R, MBlw, GB, VAbv, R,VMPst, G, G, J, J, J, SB, SE, J, HR, - G, G, HM, HM, HM, G, O, MPre, MPre, MPst,VMAbv, MBlw, VBlw, O, VBlw, + VPst, H, B, O,SMAbv,SMAbv,SMAbv, VPst, IS, RK, RK, VBlw, FAbv,VMPre,VMPre,FMAbv, + CMBlw,VMBlw,VMBlw,VMAbv, CS, O,FMAbv, ZWNJ, CGJ, WJ, WJ, WJ, O,FMPst, O, SB, + SE, O, H, MPst, VPst, H,VMAbv, VAbv,VMBlw, B, VBlw, FPst, VPst, FAbv,VMPst, B, + CMAbv, VAbv, MBlw, MPst, MBlw, H, O, VBlw, MPst, MPre, MAbv, MBlw, O, B, FAbv, FAbv, + FPst, VBlw, B, B, VPre, O,VMPst, IS, O,VMPst, VBlw, VPst,VMBlw,VMBlw,VMAbv, O, + IS,VMBlw, B,VMPst,VMAbv,VMPst, CS, CS, B, N, N, O, HN, VPre, VBlw, VAbv, + IS,CMAbv, O, VPst, B, R, R,CMBlw, VAbv, VPre,VMAbv,VMAbv, H, VAbv,CMBlw,VMPst, + O,VMAbv,CMBlw, IS, R,FMAbv, B, CS, CS, H,CMBlw,VMPst, H,VMPst, VAbv,VMAbv, + VPst, MPst, R, MPst,CMBlw, B,FMBlw, VBlw,VMAbv, CS, SUB, SUB, GB, FBlw, FBlw,CMAbv, + IS, VBlw, IS, R, MBlw, GB, VAbv, R,VMPst, G, G, J, J, J, SB, SE, + J, HR, G, G, HM, HM, HM, G, O, MPre, MPre, MPst,VMAbv, MBlw, VBlw, O, + VBlw, ]; const hb_use_u16: [u16; 856] = diff --git a/src/hb/tag_table.rs b/src/hb/tag_table.rs index d1804e7e..8be8503f 100644 --- a/src/hb/tag_table.rs +++ b/src/hb/tag_table.rs @@ -384,7 +384,7 @@ pub const OPEN_TYPE_LANGUAGES: &[LangTag] = &[ LangTag { language: "dgr", tag: Tag::from_bytes(b"ATH ") }, // Tlicho -> Athapaskan LangTag { language: "dhd", tag: Tag::from_bytes(b"MAW ") }, // Dhundari -> Marwari // LangTag { language: "dhg", tag: Tag::from_bytes(b"DHG ") }, // Dhangu - LangTag { language: "dhv", tag: Tag(0) }, // Dehu != Divehi (Dhivehi, Maldivian)(deprecated) + LangTag { language: "dhv", tag: Tag(0) }, // Dehu != Divehi (Dhivehi, Maldivian) (deprecated) LangTag { language: "dib", tag: Tag::from_bytes(b"DNK ") }, // South Central Dinka -> Dinka LangTag { language: "dik", tag: Tag::from_bytes(b"DNK ") }, // Southwestern Dinka -> Dinka LangTag { language: "din", tag: Tag::from_bytes(b"DNK ") }, // Dinka [macrolanguage] @@ -410,7 +410,7 @@ pub const OPEN_TYPE_LANGUAGES: &[LangTag] = &[ LangTag { language: "dun", tag: Tag(0) }, // Dusun Deyah != Dungan LangTag { language: "dup", tag: Tag::from_bytes(b"MLY ") }, // Duano -> Malay LangTag { language: "dv", tag: Tag::from_bytes(b"DIV ") }, // Divehi (Dhivehi, Maldivian) - LangTag { language: "dv", tag: Tag::from_bytes(b"DHV ") }, // Divehi (Dhivehi, Maldivian)(deprecated) + LangTag { language: "dv", tag: Tag::from_bytes(b"DHV ") }, // Divehi (Dhivehi, Maldivian) (deprecated) LangTag { language: "dwk", tag: Tag::from_bytes(b"KUI ") }, // Dawik Kui -> Kui LangTag { language: "dwu", tag: Tag::from_bytes(b"DUJ ") }, // Dhuwal LangTag { language: "dwy", tag: Tag::from_bytes(b"DUJ ") }, // Dhuwaya -> Dhuwal @@ -1684,7 +1684,7 @@ fn lang_matches(language: &str, spec: &str) -> bool { fn strncmp(s1: &str, s2: &str, n: usize) -> bool { let n1 = core::cmp::min(n, s1.len()); let n2 = core::cmp::min(n, s2.len()); - s1[..n1] == s2[..n2] + &s1[..n1] == &s2[..n2] } /// Converts a multi-subtag BCP 47 language tag to language tags. diff --git a/tests/shaping/in_house.rs b/tests/shaping/in_house.rs index dd05f81a..acfc89db 100644 --- a/tests/shaping/in_house.rs +++ b/tests/shaping/in_house.rs @@ -1720,34 +1720,6 @@ fn cluster_004() { ); } -#[test] -fn collections_004() { - assert_eq!( - shape( - "tests/fonts/in-house/TTC.ttc", - "\u{2026}\u{0020}\u{002E}", - "--face-index=0", - ), - "ellipsis=0+723|\ - space=1+250|\ - period=2+241" - ); -} - -#[test] -fn collections_005() { - assert_eq!( - shape( - "tests/fonts/in-house/TTC.ttc", - "\u{2026}\u{0020}\u{002E}", - "--face-index=1", - ), - "ellipsis=0+723|\ - space=1+250|\ - period=2+241" - ); -} - #[test] fn color_fonts_001() { assert_eq!( @@ -15293,6 +15265,21 @@ fn use_syllable_008() { #[test] fn use_syllable_009() { + assert_eq!( + shape( + "tests/fonts/in-house/59a585a63b3df608fbeef00956c8c108deec7de6.ttf", + "\u{1BC7}\u{1BF3}\u{1BF3}", + "--no-glyph-names", + ), + "1=0+749|\ + 3=0+401|\ + 4=0+535|\ + 3=0+401" + ); +} + +#[test] +fn use_syllable_010() { assert_eq!( shape( "tests/fonts/in-house/1ed7e9064f008f62de6ff0207bb4dd29409597a5.ttf", @@ -15305,7 +15292,7 @@ fn use_syllable_009() { } #[test] -fn use_syllable_010() { +fn use_syllable_011() { assert_eq!( shape( "tests/fonts/in-house/28f497629c04ceb15546c9a70e0730125ed6698d.ttf", @@ -15319,7 +15306,7 @@ fn use_syllable_010() { } #[test] -fn use_syllable_011() { +fn use_syllable_012() { assert_eq!( shape( "tests/fonts/in-house/28f497629c04ceb15546c9a70e0730125ed6698d.ttf", @@ -15333,7 +15320,7 @@ fn use_syllable_011() { } #[test] -fn use_syllable_012() { +fn use_syllable_013() { assert_eq!( shape( "tests/fonts/in-house/28f497629c04ceb15546c9a70e0730125ed6698d.ttf", @@ -15346,7 +15333,7 @@ fn use_syllable_012() { } #[test] -fn use_syllable_013() { +fn use_syllable_014() { assert_eq!( shape( "tests/fonts/in-house/86cdd983c4e4c4d7f27dd405d6ceb7d4b9ed3d35.ttf", @@ -15360,7 +15347,7 @@ fn use_syllable_013() { } #[test] -fn use_syllable_014() { +fn use_syllable_015() { assert_eq!( shape( "tests/fonts/in-house/3cc01fede4debd4b7794ccb1b16cdb9987ea7571.ttf", @@ -15374,7 +15361,7 @@ fn use_syllable_014() { } #[test] -fn use_syllable_015() { +fn use_syllable_016() { assert_eq!( shape( "tests/fonts/in-house/3cc01fede4debd4b7794ccb1b16cdb9987ea7571.ttf", @@ -15392,7 +15379,7 @@ fn use_syllable_015() { } #[test] -fn use_syllable_016() { +fn use_syllable_017() { assert_eq!( shape( "tests/fonts/in-house/3cc01fede4debd4b7794ccb1b16cdb9987ea7571.ttf", @@ -15411,7 +15398,7 @@ fn use_syllable_016() { } #[test] -fn use_syllable_017() { +fn use_syllable_018() { assert_eq!( shape( "tests/fonts/in-house/3cc01fede4debd4b7794ccb1b16cdb9987ea7571.ttf", @@ -15429,7 +15416,7 @@ fn use_syllable_017() { } #[test] -fn use_syllable_018() { +fn use_syllable_019() { assert_eq!( shape( "tests/fonts/in-house/573d3a3177c9a8646e94c8a0d7b224334340946a.ttf", @@ -15443,7 +15430,7 @@ fn use_syllable_018() { } #[test] -fn use_syllable_019() { +fn use_syllable_020() { assert_eq!( shape( "tests/fonts/in-house/573d3a3177c9a8646e94c8a0d7b224334340946a.ttf", @@ -15457,7 +15444,7 @@ fn use_syllable_019() { } #[test] -fn use_syllable_020() { +fn use_syllable_021() { assert_eq!( shape( "tests/fonts/in-house/573d3a3177c9a8646e94c8a0d7b224334340946a.ttf", @@ -15470,7 +15457,7 @@ fn use_syllable_020() { } #[test] -fn use_syllable_021() { +fn use_syllable_022() { assert_eq!( shape( "tests/fonts/in-house/e68a88939e0f06e34d2bc911f09b70890289c8fd.ttf", @@ -15483,7 +15470,7 @@ fn use_syllable_021() { } #[test] -fn use_syllable_022() { +fn use_syllable_023() { assert_eq!( shape( "tests/fonts/in-house/2a670df15b73a5dc75a5cc491bde5ac93c5077dc.ttf", @@ -15496,7 +15483,7 @@ fn use_syllable_022() { } #[test] -fn use_syllable_023() { +fn use_syllable_024() { assert_eq!( shape( "tests/fonts/in-house/2a670df15b73a5dc75a5cc491bde5ac93c5077dc.ttf", @@ -15510,7 +15497,7 @@ fn use_syllable_023() { } #[test] -fn use_syllable_024() { +fn use_syllable_025() { assert_eq!( shape( "tests/fonts/in-house/a56745bac8449d0ad94918b2bb5930716ba02fe3.ttf", @@ -15524,7 +15511,7 @@ fn use_syllable_024() { } #[test] -fn use_syllable_025() { +fn use_syllable_026() { assert_eq!( shape( "tests/fonts/in-house/d0430ea499348c420946f6abc2efc84fdf8f00e3.ttf",