diff --git a/src/gen-use-table.py b/src/gen-use-table.py index 164f8027f..c86bdbbdc 100755 --- a/src/gen-use-table.py +++ b/src/gen-use-table.py @@ -320,7 +320,11 @@ use_positions = { 'H': None, 'HVM': None, 'B': None, - 'FM': None, + 'FM': { + 'Abv': [Top], + 'Blw': [Bottom], + 'Pst': [Not_Applicable], + }, 'SUB': None, } @@ -359,15 +363,9 @@ def map_to_use(data): # the nasalization marks, maybe only for U+1CE9..U+1CF1. if U == 0x1CED: UISC = Tone_Mark - # TODO: https://github.com/harfbuzz/harfbuzz/issues/525 - if U == 0x1A7F: UISC = Consonant_Final - # TODO: https://github.com/harfbuzz/harfbuzz/issues/1105 if U == 0x11134: UISC = Gemination_Mark - # TODO: https://github.com/harfbuzz/harfbuzz/pull/1399 - if U == 0x111C9: UISC = Consonant_Final - values = [k for k,v in items if v(U,UISC,UGC)] assert len(values) == 1, "%s %s %s %s" % (hex(U), UISC, UGC, values) USE = values[0] diff --git a/src/hb-ot-shape-complex-use-machine.hh b/src/hb-ot-shape-complex-use-machine.hh index f83e09fbc..39c20dec8 100644 --- a/src/hb-ot-shape-complex-use-machine.hh +++ b/src/hb-ot-shape-complex-use-machine.hh @@ -36,39 +36,39 @@ #line 38 "hb-ot-shape-complex-use-machine.hh" static const unsigned char _use_syllable_machine_trans_keys[] = { - 12u, 44u, 1u, 15u, 1u, 1u, 12u, 44u, 0u, 44u, 21u, 21u, 8u, 44u, 8u, 44u, - 1u, 15u, 1u, 1u, 8u, 44u, 8u, 44u, 8u, 39u, 8u, 26u, 8u, 26u, 8u, 26u, - 8u, 39u, 8u, 39u, 8u, 39u, 8u, 44u, 8u, 44u, 8u, 44u, 8u, 44u, 8u, 44u, - 8u, 44u, 8u, 44u, 8u, 44u, 1u, 39u, 8u, 44u, 13u, 21u, 4u, 4u, 13u, 13u, - 8u, 44u, 8u, 44u, 41u, 42u, 42u, 42u, 8u, 44u, 8u, 44u, 8u, 44u, 8u, 39u, - 8u, 26u, 8u, 26u, 8u, 26u, 8u, 39u, 8u, 39u, 8u, 39u, 8u, 44u, 8u, 44u, - 8u, 44u, 8u, 44u, 8u, 44u, 8u, 44u, 8u, 44u, 8u, 44u, 1u, 39u, 1u, 15u, - 4u, 4u, 13u, 21u, 13u, 13u, 12u, 44u, 1u, 44u, 8u, 44u, 41u, 42u, 42u, 42u, - 21u, 42u, 1u, 5u, 0 + 12u, 44u, 1u, 15u, 1u, 1u, 12u, 44u, 0u, 47u, 21u, 21u, 11u, 47u, 11u, 47u, + 1u, 15u, 1u, 1u, 11u, 47u, 22u, 47u, 23u, 47u, 24u, 47u, 25u, 47u, 26u, 47u, + 45u, 46u, 46u, 46u, 24u, 47u, 24u, 47u, 24u, 47u, 23u, 47u, 23u, 47u, 23u, 47u, + 22u, 47u, 22u, 47u, 22u, 47u, 22u, 47u, 11u, 47u, 1u, 47u, 11u, 47u, 13u, 21u, + 4u, 4u, 13u, 13u, 11u, 47u, 11u, 47u, 41u, 42u, 42u, 42u, 11u, 47u, 11u, 47u, + 22u, 47u, 23u, 47u, 24u, 47u, 25u, 47u, 26u, 47u, 45u, 46u, 46u, 46u, 24u, 47u, + 24u, 47u, 24u, 47u, 23u, 47u, 23u, 47u, 23u, 47u, 22u, 47u, 22u, 47u, 22u, 47u, + 22u, 47u, 11u, 47u, 1u, 47u, 1u, 15u, 4u, 4u, 13u, 21u, 13u, 13u, 12u, 44u, + 1u, 47u, 11u, 47u, 41u, 42u, 42u, 42u, 21u, 42u, 1u, 5u, 0 }; static const char _use_syllable_machine_key_spans[] = { - 33, 15, 1, 33, 45, 1, 37, 37, - 15, 1, 37, 37, 32, 19, 19, 19, - 32, 32, 32, 37, 37, 37, 37, 37, - 37, 37, 37, 39, 37, 9, 1, 1, - 37, 37, 2, 1, 37, 37, 37, 32, - 19, 19, 19, 32, 32, 32, 37, 37, - 37, 37, 37, 37, 37, 37, 39, 15, - 1, 9, 1, 33, 44, 37, 2, 1, - 22, 5 + 33, 15, 1, 33, 48, 1, 37, 37, + 15, 1, 37, 26, 25, 24, 23, 22, + 2, 1, 24, 24, 24, 25, 25, 25, + 26, 26, 26, 26, 37, 47, 37, 9, + 1, 1, 37, 37, 2, 1, 37, 37, + 26, 25, 24, 23, 22, 2, 1, 24, + 24, 24, 25, 25, 25, 26, 26, 26, + 26, 37, 47, 15, 1, 9, 1, 33, + 47, 37, 2, 1, 22, 5 }; static const short _use_syllable_machine_index_offsets[] = { - 0, 34, 50, 52, 86, 132, 134, 172, - 210, 226, 228, 266, 304, 337, 357, 377, - 397, 430, 463, 496, 534, 572, 610, 648, - 686, 724, 762, 800, 840, 878, 888, 890, - 892, 930, 968, 971, 973, 1011, 1049, 1087, - 1120, 1140, 1160, 1180, 1213, 1246, 1279, 1317, - 1355, 1393, 1431, 1469, 1507, 1545, 1583, 1623, - 1639, 1641, 1651, 1653, 1687, 1732, 1770, 1773, - 1775, 1798 + 0, 34, 50, 52, 86, 135, 137, 175, + 213, 229, 231, 269, 296, 322, 347, 371, + 394, 397, 399, 424, 449, 474, 500, 526, + 552, 579, 606, 633, 660, 698, 746, 784, + 794, 796, 798, 836, 874, 877, 879, 917, + 955, 982, 1008, 1033, 1057, 1080, 1083, 1085, + 1110, 1135, 1160, 1186, 1212, 1238, 1265, 1292, + 1319, 1346, 1384, 1432, 1448, 1450, 1460, 1462, + 1496, 1544, 1582, 1585, 1587, 1610 }; static const char _use_syllable_machine_indicies[] = { @@ -83,247 +83,226 @@ static const char _use_syllable_machine_indicies[] = { 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 5, 7, 8, - 9, 7, 10, 11, 9, 9, 12, 9, - 9, 3, 13, 14, 9, 15, 7, 7, - 16, 17, 9, 9, 18, 19, 20, 21, - 22, 23, 24, 18, 25, 26, 27, 28, - 29, 30, 9, 31, 32, 33, 9, 34, - 35, 36, 37, 9, 39, 38, 41, 40, - 40, 42, 1, 40, 40, 43, 40, 40, - 40, 40, 40, 44, 45, 46, 47, 48, - 49, 50, 51, 45, 52, 44, 53, 54, - 55, 56, 40, 57, 58, 59, 40, 40, - 40, 40, 60, 40, 41, 40, 40, 42, - 1, 40, 40, 43, 40, 40, 40, 40, - 40, 61, 45, 46, 47, 48, 49, 50, - 51, 45, 52, 53, 53, 54, 55, 56, - 40, 57, 58, 59, 40, 40, 40, 40, - 60, 40, 42, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 62, 62, 62, 62, - 63, 62, 42, 62, 41, 40, 40, 42, - 1, 40, 40, 43, 40, 40, 40, 40, - 40, 40, 45, 46, 47, 48, 49, 50, - 51, 45, 52, 53, 53, 54, 55, 56, - 40, 57, 58, 59, 40, 40, 40, 40, - 60, 40, 41, 40, 40, 40, 40, 40, - 40, 40, 40, 40, 40, 40, 40, 40, - 45, 46, 47, 48, 49, 40, 40, 40, - 40, 40, 40, 54, 55, 56, 40, 57, - 58, 59, 40, 40, 40, 40, 46, 40, - 41, 40, 40, 40, 40, 40, 40, 40, - 40, 40, 40, 40, 40, 40, 40, 46, - 47, 48, 49, 40, 40, 40, 40, 40, - 40, 40, 40, 40, 40, 57, 58, 59, - 40, 41, 40, 40, 40, 40, 40, 40, - 40, 40, 40, 40, 40, 40, 40, 40, - 40, 47, 48, 49, 40, 41, 40, 40, - 40, 40, 40, 40, 40, 40, 40, 40, - 40, 40, 40, 40, 40, 40, 48, 49, - 40, 41, 40, 40, 40, 40, 40, 40, - 40, 40, 40, 40, 40, 40, 40, 40, - 40, 40, 40, 49, 40, 41, 40, 40, - 40, 40, 40, 40, 40, 40, 40, 40, - 40, 40, 40, 40, 40, 47, 48, 49, - 40, 40, 40, 40, 40, 40, 40, 40, - 40, 40, 57, 58, 59, 40, 41, 40, - 40, 40, 40, 40, 40, 40, 40, 40, - 40, 40, 40, 40, 40, 40, 47, 48, - 49, 40, 40, 40, 40, 40, 40, 40, - 40, 40, 40, 40, 58, 59, 40, 41, - 40, 40, 40, 40, 40, 40, 40, 40, - 40, 40, 40, 40, 40, 40, 40, 47, - 48, 49, 40, 40, 40, 40, 40, 40, - 40, 40, 40, 40, 40, 40, 59, 40, - 41, 40, 40, 40, 40, 40, 40, 40, - 40, 40, 40, 40, 40, 40, 40, 46, - 47, 48, 49, 40, 40, 40, 40, 40, - 40, 54, 55, 56, 40, 57, 58, 59, - 40, 40, 40, 40, 46, 40, 41, 40, - 40, 40, 40, 40, 40, 40, 40, 40, - 40, 40, 40, 40, 40, 46, 47, 48, - 49, 40, 40, 40, 40, 40, 40, 40, - 55, 56, 40, 57, 58, 59, 40, 40, - 40, 40, 46, 40, 41, 40, 40, 40, - 40, 40, 40, 40, 40, 40, 40, 40, - 40, 40, 40, 46, 47, 48, 49, 40, - 40, 40, 40, 40, 40, 40, 40, 56, - 40, 57, 58, 59, 40, 40, 40, 40, - 46, 40, 41, 40, 40, 40, 40, 40, - 40, 40, 40, 40, 40, 40, 40, 40, - 45, 46, 47, 48, 49, 40, 51, 45, - 40, 40, 40, 54, 55, 56, 40, 57, - 58, 59, 40, 40, 40, 40, 46, 40, - 41, 40, 40, 40, 40, 40, 40, 40, - 40, 40, 40, 40, 40, 40, 45, 46, - 47, 48, 49, 40, 64, 45, 40, 40, - 40, 54, 55, 56, 40, 57, 58, 59, - 40, 40, 40, 40, 46, 40, 41, 40, - 40, 40, 40, 40, 40, 40, 40, 40, - 40, 40, 40, 40, 45, 46, 47, 48, - 49, 40, 40, 45, 40, 40, 40, 54, - 55, 56, 40, 57, 58, 59, 40, 40, - 40, 40, 46, 40, 41, 40, 40, 40, - 40, 40, 40, 40, 40, 40, 40, 40, - 40, 40, 45, 46, 47, 48, 49, 50, - 51, 45, 40, 40, 40, 54, 55, 56, - 40, 57, 58, 59, 40, 40, 40, 40, - 46, 40, 41, 40, 40, 42, 1, 40, - 40, 43, 40, 40, 40, 40, 40, 40, - 45, 46, 47, 48, 49, 50, 51, 45, - 52, 40, 53, 54, 55, 56, 40, 57, - 58, 59, 40, 40, 40, 40, 60, 40, - 42, 62, 62, 62, 62, 62, 62, 41, - 62, 62, 62, 62, 62, 62, 63, 62, - 62, 62, 62, 62, 62, 62, 46, 47, - 48, 49, 62, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 57, 58, 59, 62, - 41, 40, 40, 42, 1, 40, 40, 43, - 40, 40, 40, 40, 40, 40, 45, 46, - 47, 48, 49, 50, 51, 45, 52, 44, - 53, 54, 55, 56, 40, 57, 58, 59, - 40, 40, 40, 40, 60, 40, 66, 65, - 65, 65, 65, 65, 65, 65, 67, 65, - 10, 68, 66, 65, 41, 40, 40, 42, - 1, 40, 40, 43, 40, 40, 40, 40, - 40, 69, 45, 46, 47, 48, 49, 50, - 51, 45, 52, 44, 53, 54, 55, 56, - 40, 57, 58, 59, 40, 70, 71, 40, - 60, 40, 41, 40, 40, 42, 1, 40, - 40, 43, 40, 40, 40, 40, 40, 40, - 45, 46, 47, 48, 49, 50, 51, 45, - 52, 44, 53, 54, 55, 56, 40, 57, - 58, 59, 40, 70, 71, 40, 60, 40, - 70, 71, 72, 71, 72, 12, 73, 73, - 3, 6, 73, 73, 74, 73, 73, 73, - 73, 73, 75, 18, 19, 20, 21, 22, - 23, 24, 18, 25, 27, 27, 28, 29, - 30, 73, 31, 32, 33, 73, 73, 73, - 73, 37, 73, 12, 73, 73, 3, 6, - 73, 73, 74, 73, 73, 73, 73, 73, - 73, 18, 19, 20, 21, 22, 23, 24, - 18, 25, 27, 27, 28, 29, 30, 73, - 31, 32, 33, 73, 73, 73, 73, 37, - 73, 12, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 18, - 19, 20, 21, 22, 73, 73, 73, 73, - 73, 73, 28, 29, 30, 73, 31, 32, - 33, 73, 73, 73, 73, 19, 73, 12, - 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 19, 20, - 21, 22, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 31, 32, 33, 73, - 12, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, - 20, 21, 22, 73, 12, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 21, 22, 73, - 12, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 22, 73, 12, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 20, 21, 22, 73, - 73, 73, 73, 73, 73, 73, 73, 73, - 73, 31, 32, 33, 73, 12, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 20, 21, 22, - 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 32, 33, 73, 12, 73, - 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 20, 21, - 22, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 33, 73, 12, - 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 19, 20, - 21, 22, 73, 73, 73, 73, 73, 73, - 28, 29, 30, 73, 31, 32, 33, 73, - 73, 73, 73, 19, 73, 12, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 19, 20, 21, 22, - 73, 73, 73, 73, 73, 73, 73, 29, - 30, 73, 31, 32, 33, 73, 73, 73, - 73, 19, 73, 12, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 19, 20, 21, 22, 73, 73, - 73, 73, 73, 73, 73, 73, 30, 73, - 31, 32, 33, 73, 73, 73, 73, 19, - 73, 12, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 18, - 19, 20, 21, 22, 73, 24, 18, 73, - 73, 73, 28, 29, 30, 73, 31, 32, - 33, 73, 73, 73, 73, 19, 73, 12, - 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 18, 19, 20, - 21, 22, 73, 76, 18, 73, 73, 73, - 28, 29, 30, 73, 31, 32, 33, 73, - 73, 73, 73, 19, 73, 12, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 18, 19, 20, 21, 22, - 73, 73, 18, 73, 73, 73, 28, 29, - 30, 73, 31, 32, 33, 73, 73, 73, - 73, 19, 73, 12, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, - 73, 18, 19, 20, 21, 22, 23, 24, - 18, 73, 73, 73, 28, 29, 30, 73, - 31, 32, 33, 73, 73, 73, 73, 19, - 73, 12, 73, 73, 3, 6, 73, 73, - 74, 73, 73, 73, 73, 73, 73, 18, - 19, 20, 21, 22, 23, 24, 18, 25, - 73, 27, 28, 29, 30, 73, 31, 32, - 33, 73, 73, 73, 73, 37, 73, 3, - 73, 73, 73, 73, 73, 73, 12, 73, - 73, 73, 73, 73, 73, 4, 73, 73, - 73, 73, 73, 73, 73, 19, 20, 21, - 22, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 31, 32, 33, 73, 3, + 9, 7, 10, 11, 9, 9, 9, 9, + 9, 3, 12, 13, 9, 14, 7, 7, + 15, 16, 9, 9, 17, 18, 19, 20, + 21, 22, 23, 17, 24, 25, 26, 27, + 28, 29, 9, 30, 31, 32, 9, 33, + 34, 35, 36, 37, 38, 39, 9, 41, + 40, 43, 1, 42, 42, 44, 42, 42, + 42, 42, 42, 45, 46, 47, 48, 49, + 50, 51, 52, 46, 53, 45, 54, 55, + 56, 57, 42, 58, 59, 60, 42, 42, + 42, 42, 61, 62, 63, 64, 42, 43, + 1, 42, 42, 44, 42, 42, 42, 42, + 42, 65, 46, 47, 48, 49, 50, 51, + 52, 46, 53, 54, 54, 55, 56, 57, + 42, 58, 59, 60, 42, 42, 42, 42, + 61, 62, 63, 64, 42, 43, 66, 66, + 66, 66, 66, 66, 66, 66, 66, 66, + 66, 66, 66, 67, 66, 43, 66, 43, + 1, 42, 42, 44, 42, 42, 42, 42, + 42, 42, 46, 47, 48, 49, 50, 51, + 52, 46, 53, 54, 54, 55, 56, 57, + 42, 58, 59, 60, 42, 42, 42, 42, + 61, 62, 63, 64, 42, 46, 47, 48, + 49, 50, 42, 42, 42, 42, 42, 42, + 55, 56, 57, 42, 58, 59, 60, 42, + 42, 42, 42, 47, 62, 63, 64, 42, + 47, 48, 49, 50, 42, 42, 42, 42, + 42, 42, 42, 42, 42, 42, 58, 59, + 60, 42, 42, 42, 42, 42, 62, 63, + 64, 42, 48, 49, 50, 42, 42, 42, + 42, 42, 42, 42, 42, 42, 42, 42, + 42, 42, 42, 42, 42, 42, 42, 62, + 63, 64, 42, 49, 50, 42, 42, 42, + 42, 42, 42, 42, 42, 42, 42, 42, + 42, 42, 42, 42, 42, 42, 42, 62, + 63, 64, 42, 50, 42, 42, 42, 42, + 42, 42, 42, 42, 42, 42, 42, 42, + 42, 42, 42, 42, 42, 42, 62, 63, + 64, 42, 62, 63, 42, 63, 42, 48, + 49, 50, 42, 42, 42, 42, 42, 42, + 42, 42, 42, 42, 58, 59, 60, 42, + 42, 42, 42, 42, 62, 63, 64, 42, + 48, 49, 50, 42, 42, 42, 42, 42, + 42, 42, 42, 42, 42, 42, 59, 60, + 42, 42, 42, 42, 42, 62, 63, 64, + 42, 48, 49, 50, 42, 42, 42, 42, + 42, 42, 42, 42, 42, 42, 42, 42, + 60, 42, 42, 42, 42, 42, 62, 63, + 64, 42, 47, 48, 49, 50, 42, 42, + 42, 42, 42, 42, 55, 56, 57, 42, + 58, 59, 60, 42, 42, 42, 42, 47, + 62, 63, 64, 42, 47, 48, 49, 50, + 42, 42, 42, 42, 42, 42, 42, 56, + 57, 42, 58, 59, 60, 42, 42, 42, + 42, 47, 62, 63, 64, 42, 47, 48, + 49, 50, 42, 42, 42, 42, 42, 42, + 42, 42, 57, 42, 58, 59, 60, 42, + 42, 42, 42, 47, 62, 63, 64, 42, + 46, 47, 48, 49, 50, 42, 52, 46, + 42, 42, 42, 55, 56, 57, 42, 58, + 59, 60, 42, 42, 42, 42, 47, 62, + 63, 64, 42, 46, 47, 48, 49, 50, + 42, 68, 46, 42, 42, 42, 55, 56, + 57, 42, 58, 59, 60, 42, 42, 42, + 42, 47, 62, 63, 64, 42, 46, 47, + 48, 49, 50, 42, 42, 46, 42, 42, + 42, 55, 56, 57, 42, 58, 59, 60, + 42, 42, 42, 42, 47, 62, 63, 64, + 42, 46, 47, 48, 49, 50, 51, 52, + 46, 42, 42, 42, 55, 56, 57, 42, + 58, 59, 60, 42, 42, 42, 42, 47, + 62, 63, 64, 42, 43, 1, 42, 42, + 44, 42, 42, 42, 42, 42, 42, 46, + 47, 48, 49, 50, 51, 52, 46, 53, + 42, 54, 55, 56, 57, 42, 58, 59, + 60, 42, 42, 42, 42, 61, 62, 63, + 64, 42, 43, 66, 66, 66, 66, 66, + 66, 66, 66, 66, 66, 66, 66, 66, + 67, 66, 66, 66, 66, 66, 66, 66, + 47, 48, 49, 50, 66, 66, 66, 66, + 66, 66, 66, 66, 66, 66, 58, 59, + 60, 66, 66, 66, 66, 66, 62, 63, + 64, 66, 43, 1, 42, 42, 44, 42, + 42, 42, 42, 42, 42, 46, 47, 48, + 49, 50, 51, 52, 46, 53, 45, 54, + 55, 56, 57, 42, 58, 59, 60, 42, + 42, 42, 42, 61, 62, 63, 64, 42, + 70, 69, 69, 69, 69, 69, 69, 69, + 71, 69, 10, 72, 70, 69, 43, 1, + 42, 42, 44, 42, 42, 42, 42, 42, + 73, 46, 47, 48, 49, 50, 51, 52, + 46, 53, 45, 54, 55, 56, 57, 42, + 58, 59, 60, 42, 74, 75, 42, 61, + 62, 63, 64, 42, 43, 1, 42, 42, + 44, 42, 42, 42, 42, 42, 42, 46, + 47, 48, 49, 50, 51, 52, 46, 53, + 45, 54, 55, 56, 57, 42, 58, 59, + 60, 42, 74, 75, 42, 61, 62, 63, + 64, 42, 74, 75, 76, 75, 76, 3, + 6, 77, 77, 78, 77, 77, 77, 77, + 77, 79, 17, 18, 19, 20, 21, 22, + 23, 17, 24, 26, 26, 27, 28, 29, + 77, 30, 31, 32, 77, 77, 77, 77, + 36, 37, 38, 39, 77, 3, 6, 77, + 77, 78, 77, 77, 77, 77, 77, 77, + 17, 18, 19, 20, 21, 22, 23, 17, + 24, 26, 26, 27, 28, 29, 77, 30, + 31, 32, 77, 77, 77, 77, 36, 37, + 38, 39, 77, 17, 18, 19, 20, 21, + 77, 77, 77, 77, 77, 77, 27, 28, + 29, 77, 30, 31, 32, 77, 77, 77, + 77, 18, 37, 38, 39, 77, 18, 19, + 20, 21, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 30, 31, 32, 77, + 77, 77, 77, 77, 37, 38, 39, 77, + 19, 20, 21, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, - 77, 77, 77, 77, 77, 4, 77, 78, - 73, 14, 73, 73, 73, 73, 73, 73, - 73, 79, 73, 14, 73, 6, 77, 77, + 77, 77, 77, 77, 77, 37, 38, 39, + 77, 20, 21, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 37, 38, 39, + 77, 21, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 37, 38, 39, 77, + 37, 38, 77, 38, 77, 19, 20, 21, 77, 77, 77, 77, 77, 77, 77, 77, - 77, 77, 77, 77, 77, 6, 77, 8, - 73, 73, 73, 8, 73, 73, 12, 73, - 73, 3, 6, 14, 73, 74, 73, 73, - 73, 73, 73, 73, 18, 19, 20, 21, - 22, 23, 24, 18, 25, 26, 27, 28, - 29, 30, 73, 31, 32, 33, 73, 34, - 35, 73, 37, 73, 12, 73, 73, 3, - 6, 73, 73, 74, 73, 73, 73, 73, - 73, 73, 18, 19, 20, 21, 22, 23, - 24, 18, 25, 26, 27, 28, 29, 30, - 73, 31, 32, 33, 73, 73, 73, 73, - 37, 73, 34, 35, 73, 35, 73, 70, - 72, 72, 72, 72, 72, 72, 72, 72, - 72, 72, 72, 72, 72, 72, 72, 72, - 72, 72, 72, 70, 71, 72, 8, 77, - 77, 77, 8, 77, 0 + 77, 77, 30, 31, 32, 77, 77, 77, + 77, 77, 37, 38, 39, 77, 19, 20, + 21, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 31, 32, 77, 77, + 77, 77, 77, 37, 38, 39, 77, 19, + 20, 21, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 32, 77, + 77, 77, 77, 77, 37, 38, 39, 77, + 18, 19, 20, 21, 77, 77, 77, 77, + 77, 77, 27, 28, 29, 77, 30, 31, + 32, 77, 77, 77, 77, 18, 37, 38, + 39, 77, 18, 19, 20, 21, 77, 77, + 77, 77, 77, 77, 77, 28, 29, 77, + 30, 31, 32, 77, 77, 77, 77, 18, + 37, 38, 39, 77, 18, 19, 20, 21, + 77, 77, 77, 77, 77, 77, 77, 77, + 29, 77, 30, 31, 32, 77, 77, 77, + 77, 18, 37, 38, 39, 77, 17, 18, + 19, 20, 21, 77, 23, 17, 77, 77, + 77, 27, 28, 29, 77, 30, 31, 32, + 77, 77, 77, 77, 18, 37, 38, 39, + 77, 17, 18, 19, 20, 21, 77, 80, + 17, 77, 77, 77, 27, 28, 29, 77, + 30, 31, 32, 77, 77, 77, 77, 18, + 37, 38, 39, 77, 17, 18, 19, 20, + 21, 77, 77, 17, 77, 77, 77, 27, + 28, 29, 77, 30, 31, 32, 77, 77, + 77, 77, 18, 37, 38, 39, 77, 17, + 18, 19, 20, 21, 22, 23, 17, 77, + 77, 77, 27, 28, 29, 77, 30, 31, + 32, 77, 77, 77, 77, 18, 37, 38, + 39, 77, 3, 6, 77, 77, 78, 77, + 77, 77, 77, 77, 77, 17, 18, 19, + 20, 21, 22, 23, 17, 24, 77, 26, + 27, 28, 29, 77, 30, 31, 32, 77, + 77, 77, 77, 36, 37, 38, 39, 77, + 3, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 4, 77, + 77, 77, 77, 77, 77, 77, 18, 19, + 20, 21, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 30, 31, 32, 77, + 77, 77, 77, 77, 37, 38, 39, 77, + 3, 81, 81, 81, 81, 81, 81, 81, + 81, 81, 81, 81, 81, 81, 4, 81, + 82, 77, 13, 77, 77, 77, 77, 77, + 77, 77, 83, 77, 13, 77, 6, 81, + 81, 81, 81, 81, 81, 81, 81, 81, + 81, 81, 81, 81, 81, 81, 81, 81, + 81, 81, 81, 81, 81, 81, 81, 81, + 81, 81, 81, 81, 81, 81, 6, 81, + 8, 77, 77, 77, 8, 77, 77, 77, + 77, 77, 3, 6, 13, 77, 78, 77, + 77, 77, 77, 77, 77, 17, 18, 19, + 20, 21, 22, 23, 17, 24, 25, 26, + 27, 28, 29, 77, 30, 31, 32, 77, + 33, 34, 77, 36, 37, 38, 39, 77, + 3, 6, 77, 77, 78, 77, 77, 77, + 77, 77, 77, 17, 18, 19, 20, 21, + 22, 23, 17, 24, 25, 26, 27, 28, + 29, 77, 30, 31, 32, 77, 77, 77, + 77, 36, 37, 38, 39, 77, 33, 34, + 77, 34, 77, 74, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 74, + 75, 76, 8, 81, 81, 81, 8, 81, + 0 }; static const char _use_syllable_machine_trans_targs[] = { - 4, 8, 4, 36, 2, 4, 1, 5, - 6, 4, 29, 32, 4, 55, 56, 59, - 60, 64, 38, 39, 40, 41, 42, 49, - 50, 52, 61, 53, 46, 47, 48, 43, - 44, 45, 62, 63, 65, 54, 4, 4, - 4, 4, 7, 0, 28, 11, 12, 13, - 14, 15, 22, 23, 25, 26, 19, 20, - 21, 16, 17, 18, 27, 10, 4, 9, - 24, 4, 30, 31, 4, 33, 34, 35, - 4, 4, 3, 37, 51, 4, 57, 58 + 4, 8, 4, 38, 2, 4, 1, 5, + 6, 4, 31, 34, 59, 60, 63, 64, + 68, 40, 41, 42, 43, 44, 53, 54, + 56, 65, 57, 50, 51, 52, 47, 48, + 49, 66, 67, 69, 58, 45, 46, 4, + 4, 4, 4, 7, 0, 30, 11, 12, + 13, 14, 15, 24, 25, 27, 28, 21, + 22, 23, 18, 19, 20, 29, 16, 17, + 4, 10, 4, 9, 26, 4, 32, 33, + 4, 35, 36, 37, 4, 4, 3, 39, + 55, 4, 61, 62 }; static const char _use_syllable_machine_trans_actions[] = { 1, 0, 2, 3, 0, 4, 0, 0, - 7, 8, 0, 7, 9, 10, 0, 10, - 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 3, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 3, 11, 12, - 13, 14, 7, 0, 7, 0, 0, 0, - 0, 0, 0, 0, 0, 7, 0, 0, - 0, 0, 0, 0, 0, 7, 15, 0, - 0, 16, 0, 0, 17, 7, 0, 0, - 18, 19, 0, 3, 0, 20, 0, 0 + 7, 8, 0, 7, 9, 0, 9, 3, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 10, + 11, 12, 13, 7, 0, 7, 0, 0, + 0, 0, 0, 0, 0, 0, 7, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 14, 7, 15, 0, 0, 16, 0, 0, + 17, 7, 0, 0, 18, 19, 0, 3, + 0, 20, 0, 0 }; static const char _use_syllable_machine_to_state_actions[] = { @@ -335,7 +314,7 @@ static const char _use_syllable_machine_to_state_actions[] = { 0, 0, 0, 0, 0, 0, 0, 0, 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 const char _use_syllable_machine_from_state_actions[] = { @@ -347,19 +326,19 @@ static const char _use_syllable_machine_from_state_actions[] = { 0, 0, 0, 0, 0, 0, 0, 0, 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 const short _use_syllable_machine_eof_trans[] = { - 1, 3, 3, 6, 0, 39, 41, 41, - 63, 63, 41, 41, 41, 41, 41, 41, - 41, 41, 41, 41, 41, 41, 41, 41, - 41, 41, 41, 63, 41, 66, 69, 66, - 41, 41, 73, 73, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 78, - 74, 74, 74, 78, 74, 74, 74, 74, - 73, 78 + 1, 3, 3, 6, 0, 41, 43, 43, + 67, 67, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 43, 43, 67, 43, 70, + 73, 70, 43, 43, 77, 77, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 82, 78, 78, 78, 82, + 78, 78, 78, 78, 77, 82 }; static const int use_syllable_machine_start = 4; @@ -373,7 +352,7 @@ static const int use_syllable_machine_en_main = 4; -#line 146 "hb-ot-shape-complex-use-machine.rl" +#line 150 "hb-ot-shape-complex-use-machine.rl" #define found_syllable(syllable_type) \ @@ -392,7 +371,7 @@ find_syllables (hb_buffer_t *buffer) int cs; hb_glyph_info_t *info = buffer->info; -#line 396 "hb-ot-shape-complex-use-machine.hh" +#line 375 "hb-ot-shape-complex-use-machine.hh" { cs = use_syllable_machine_start; ts = 0; @@ -400,7 +379,7 @@ find_syllables (hb_buffer_t *buffer) act = 0; } -#line 166 "hb-ot-shape-complex-use-machine.rl" +#line 170 "hb-ot-shape-complex-use-machine.rl" p = 0; @@ -408,7 +387,7 @@ find_syllables (hb_buffer_t *buffer) unsigned int syllable_serial = 1; -#line 412 "hb-ot-shape-complex-use-machine.hh" +#line 391 "hb-ot-shape-complex-use-machine.hh" { int _slen; int _trans; @@ -422,7 +401,7 @@ _resume: #line 1 "NONE" {ts = p;} break; -#line 426 "hb-ot-shape-complex-use-machine.hh" +#line 405 "hb-ot-shape-complex-use-machine.hh" } _keys = _use_syllable_machine_trans_keys + (cs<<1); @@ -445,59 +424,59 @@ _eof_trans: {te = p+1;} break; case 12: -#line 135 "hb-ot-shape-complex-use-machine.rl" +#line 139 "hb-ot-shape-complex-use-machine.rl" {te = p+1;{ found_syllable (independent_cluster); }} break; case 14: -#line 137 "hb-ot-shape-complex-use-machine.rl" +#line 141 "hb-ot-shape-complex-use-machine.rl" {te = p+1;{ found_syllable (standard_cluster); }} break; - case 9: -#line 141 "hb-ot-shape-complex-use-machine.rl" + case 10: +#line 145 "hb-ot-shape-complex-use-machine.rl" {te = p+1;{ found_syllable (broken_cluster); }} break; case 8: -#line 142 "hb-ot-shape-complex-use-machine.rl" +#line 146 "hb-ot-shape-complex-use-machine.rl" {te = p+1;{ found_syllable (non_cluster); }} break; case 11: -#line 135 "hb-ot-shape-complex-use-machine.rl" +#line 139 "hb-ot-shape-complex-use-machine.rl" {te = p;p--;{ found_syllable (independent_cluster); }} break; case 15: -#line 136 "hb-ot-shape-complex-use-machine.rl" +#line 140 "hb-ot-shape-complex-use-machine.rl" {te = p;p--;{ found_syllable (virama_terminated_cluster); }} break; case 13: -#line 137 "hb-ot-shape-complex-use-machine.rl" +#line 141 "hb-ot-shape-complex-use-machine.rl" {te = p;p--;{ found_syllable (standard_cluster); }} break; case 17: -#line 138 "hb-ot-shape-complex-use-machine.rl" +#line 142 "hb-ot-shape-complex-use-machine.rl" {te = p;p--;{ found_syllable (number_joiner_terminated_cluster); }} break; case 16: -#line 139 "hb-ot-shape-complex-use-machine.rl" +#line 143 "hb-ot-shape-complex-use-machine.rl" {te = p;p--;{ found_syllable (numeral_cluster); }} break; case 18: -#line 140 "hb-ot-shape-complex-use-machine.rl" +#line 144 "hb-ot-shape-complex-use-machine.rl" {te = p;p--;{ found_syllable (symbol_cluster); }} break; case 19: -#line 141 "hb-ot-shape-complex-use-machine.rl" +#line 145 "hb-ot-shape-complex-use-machine.rl" {te = p;p--;{ found_syllable (broken_cluster); }} break; case 20: -#line 142 "hb-ot-shape-complex-use-machine.rl" +#line 146 "hb-ot-shape-complex-use-machine.rl" {te = p;p--;{ found_syllable (non_cluster); }} break; case 1: -#line 137 "hb-ot-shape-complex-use-machine.rl" +#line 141 "hb-ot-shape-complex-use-machine.rl" {{p = ((te))-1;}{ found_syllable (standard_cluster); }} break; case 4: -#line 141 "hb-ot-shape-complex-use-machine.rl" +#line 145 "hb-ot-shape-complex-use-machine.rl" {{p = ((te))-1;}{ found_syllable (broken_cluster); }} break; case 2: @@ -515,16 +494,16 @@ _eof_trans: case 3: #line 1 "NONE" {te = p+1;} -#line 141 "hb-ot-shape-complex-use-machine.rl" +#line 145 "hb-ot-shape-complex-use-machine.rl" {act = 7;} break; - case 10: + case 9: #line 1 "NONE" {te = p+1;} -#line 142 "hb-ot-shape-complex-use-machine.rl" +#line 146 "hb-ot-shape-complex-use-machine.rl" {act = 8;} break; -#line 528 "hb-ot-shape-complex-use-machine.hh" +#line 507 "hb-ot-shape-complex-use-machine.hh" } _again: @@ -533,7 +512,7 @@ _again: #line 1 "NONE" {ts = 0;} break; -#line 537 "hb-ot-shape-complex-use-machine.hh" +#line 516 "hb-ot-shape-complex-use-machine.hh" } if ( ++p != pe ) @@ -549,7 +528,7 @@ _again: } -#line 174 "hb-ot-shape-complex-use-machine.rl" +#line 178 "hb-ot-shape-complex-use-machine.rl" } diff --git a/src/hb-ot-shape-complex-use-machine.rl b/src/hb-ot-shape-complex-use-machine.rl index 82803da0c..2a1b90d8f 100644 --- a/src/hb-ot-shape-complex-use-machine.rl +++ b/src/hb-ot-shape-complex-use-machine.rl @@ -49,7 +49,7 @@ N = 4; # BASE_NUM GB = 5; # BASE_OTHER CGJ = 6; # CGJ #F = 7; # CONS_FINAL -FM = 8; # CONS_FINAL_MOD +#FM = 8; # CONS_FINAL_MOD #M = 9; # CONS_MED #CM = 10; # CONS_MOD SUB = 11; # CONS_SUB @@ -66,6 +66,8 @@ S = 19; # SYM VS = 21; # VARIATION_SELECTOR #V = 36; # VOWEL #VM = 40; # VOWEL_MOD +CS = 43; # CONS_WITH_STACKER +HVM = 44; # HALANT_OR_VOWEL_MODIFIER FAbv = 24; # CONS_FINAL_ABOVE FBlw = 25; # CONS_FINAL_BELOW @@ -86,9 +88,9 @@ VMPst = 39; # VOWEL_MOD_POST VMPre = 23; # VOWEL_MOD_PRE SMAbv = 41; # SYM_MOD_ABOVE SMBlw = 42; # SYM_MOD_BELOW -CS = 43; # CONS_WITH_STACKER - -HVM = 44; # HALANT_OR_VOWEL_MODIFIER +FMAbv = 45; # CONS_FINAL_MOD UIPC = Top +FMBlw = 46; # CONS_FINAL_MOD UIPC = Bottom +FMPst = 47; # CONS_FINAL_MOD UIPC = Not_Applicable h = H | HVM; # https://github.com/harfbuzz/harfbuzz/issues/1102 @@ -98,7 +100,8 @@ consonant_modifiers = CMAbv* CMBlw* ((ZWJ?.h.ZWJ? B | SUB) VS? CMAbv? CMBlw*)*; medial_consonants = MPre? MAbv? MBlw?.MBlw? MPst?; dependent_vowels = VPre* VAbv* VBlw* VPst*; vowel_modifiers = HVM? VMPre* VMAbv* VMBlw* VMPst*; -final_consonants = FAbv* FBlw* FPst* FM?; +final_consonants = FAbv* FBlw* FPst*; +final_modifiers = FMAbv* FMBlw* | FMPst?; complex_syllable_tail = consonant_modifiers @@ -106,6 +109,7 @@ complex_syllable_tail = dependent_vowels vowel_modifiers final_consonants + final_modifiers ; number_joiner_terminated_cluster_tail = (HN N VS?)* HN; numeral_cluster_tail = (HN N VS?)+; diff --git a/src/hb-ot-shape-complex-use-table.cc b/src/hb-ot-shape-complex-use-table.cc index c065ff289..93b815217 100644 --- a/src/hb-ot-shape-complex-use-table.cc +++ b/src/hb-ot-shape-complex-use-table.cc @@ -22,7 +22,6 @@ #define B USE_B /* BASE */ #define CGJ USE_CGJ /* CGJ */ #define CS USE_CS /* CONS_WITH_STACKER */ -#define FM USE_FM /* CONS_FINAL_MOD */ #define GB USE_GB /* BASE_OTHER */ #define H USE_H /* HALANT */ #define HN USE_HN /* HALANT_NUM */ @@ -43,6 +42,9 @@ #define FBlw USE_FBlw #define FPst USE_FPst #define FAbv USE_FAbv +#define FMBlw USE_FMBlw +#define FMPst USE_FMPst +#define FMAbv USE_FMAbv #define MPre USE_MPre #define MBlw USE_MBlw #define MPst USE_MPst @@ -75,7 +77,7 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = { /* Latin-1 Supplement */ /* 00A0 */ GB, O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, - /* 00B0 */ O, O, FM, FM, O, O, O, O, O, O, O, O, O, O, O, O, + /* 00B0 */ O, O, FMPst, FMPst, O, O, O, O, O, O, O, O, O, O, O, O, /* 00C0 */ O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, /* 00D0 */ O, O, O, O, O, O, O, GB, @@ -108,7 +110,7 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = { /* 09C0 */ VPst, VBlw, VBlw, VBlw, VBlw, O, O, VPre, VPre, O, O, VPst, VPst, H, IND, O, /* 09D0 */ O, O, O, O, O, O, O, VPst, O, O, O, O, B, B, O, B, /* 09E0 */ B, B, VBlw, VBlw, O, O, B, B, B, B, B, B, B, B, B, B, - /* 09F0 */ B, B, O, O, O, O, O, O, O, O, O, O, B, O, FM, O, + /* 09F0 */ B, B, O, O, O, O, O, O, O, O, O, O, B, O, FMAbv, O, /* Gurmukhi */ @@ -204,7 +206,7 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = { /* Tibetan */ VBlw, VBlw, O, O, O, O, O, O, /* 0F20 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, - /* 0F30 */ B, B, B, B, O, FM, O, FM, O, CMAbv, O, O, O, O, VPst, VPre, + /* 0F30 */ B, B, B, B, O, FMBlw, O, FMBlw, O, CMAbv, O, O, O, O, VPst, VPre, /* 0F40 */ B, B, B, B, B, B, B, B, O, B, B, B, B, B, B, B, /* 0F50 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, /* 0F60 */ B, B, B, B, B, B, B, B, B, B, B, B, B, O, O, O, @@ -213,7 +215,7 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = { /* 0F90 */ SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB, O, SUB, SUB, SUB, SUB, SUB, SUB, SUB, /* 0FA0 */ SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB, /* 0FB0 */ SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB, O, O, O, - /* 0FC0 */ O, O, O, O, O, O, FM, O, + /* 0FC0 */ O, O, O, O, O, O, FMBlw, O, #define use_offset_0x1000u 1536 @@ -260,8 +262,8 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = { /* 1790 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, /* 17A0 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, /* 17B0 */ B, B, B, B, O, O, VPst, VAbv, VAbv, VAbv, VAbv, VBlw, VBlw, VBlw, VPst, VPst, - /* 17C0 */ VPst, VPre, VPre, VPre, VPst, VPst, VMAbv, VMPst, VPst, VMAbv, VMAbv, FM, FAbv, CMAbv, FM, FM, - /* 17D0 */ FM, VAbv, H, FM, O, O, O, O, O, O, O, O, B, FM, O, O, + /* 17C0 */ VPst, VPre, VPre, VPre, VPst, VPst, VMAbv, VMPst, VPst, VMAbv, VMAbv, FMAbv, FAbv, CMAbv, FMAbv, FMAbv, + /* 17D0 */ FMAbv, VAbv, H, FMAbv, O, O, O, O, O, O, O, O, B, FMAbv, O, O, /* 17E0 */ B, B, B, B, B, B, B, B, B, B, O, O, O, O, O, O, #define use_offset_0x1900u 1936 @@ -272,7 +274,7 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = { /* 1900 */ GB, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, /* 1910 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, O, /* 1920 */ VAbv, VAbv, VBlw, VPst, VPst, VAbv, VAbv, VAbv, VAbv, SUB, SUB, SUB, O, O, O, O, - /* 1930 */ FPst, FPst, VMBlw, FPst, FPst, FPst, FPst, FPst, FPst, FBlw, VAbv, FM, O, O, O, O, + /* 1930 */ FPst, FPst, VMBlw, FPst, FPst, FPst, FPst, FPst, FPst, FBlw, VAbv, FMBlw, O, O, O, O, /* 1940 */ O, O, O, O, O, O, B, B, B, B, B, B, B, B, B, B, /* Tai Le */ @@ -304,7 +306,7 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = { /* 1A40 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, /* 1A50 */ B, B, B, B, B, MPre, MBlw, SUB, FAbv, FAbv, MAbv, SUB, SUB, SUB, SUB, O, /* 1A60 */ H, VPst, VAbv, VPst, VPst, VAbv, VAbv, VAbv, VAbv, VBlw, VBlw, VAbv, VBlw, VPst, VPre, VPre, - /* 1A70 */ VPre, VPre, VPre, VAbv, VMAbv, VMAbv, VMAbv, VMAbv, VMAbv, VMAbv, VAbv, FM, FM, O, O, FBlw, + /* 1A70 */ VPre, VPre, VPre, VAbv, VMAbv, VMAbv, VMAbv, VMAbv, VMAbv, VMAbv, VAbv, FMAbv, FMAbv, O, O, FMBlw, /* 1A80 */ B, B, B, B, B, B, B, B, B, B, O, O, O, O, O, O, /* 1A90 */ B, B, B, B, B, B, B, B, B, B, O, O, O, O, O, O, @@ -341,7 +343,7 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = { /* 1C00 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, /* 1C10 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, /* 1C20 */ B, B, B, B, SUB, SUB, VPst, VPre, VPre, VPst, VPst, VPst, VBlw, FAbv, FAbv, FAbv, - /* 1C30 */ FAbv, FAbv, FAbv, FAbv, VMPre, VMPre, FM, CMBlw, O, O, O, O, O, O, O, O, + /* 1C30 */ FAbv, FAbv, FAbv, FAbv, VMPre, VMPre, FMAbv, CMBlw, O, O, O, O, O, O, O, O, /* 1C40 */ B, B, B, B, B, B, B, B, B, B, O, O, O, B, B, B, #define use_offset_0x1cd0u 2688 @@ -357,7 +359,7 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = { /* Combining Diacritical Marks Supplement */ - O, O, O, FM, O, O, O, O, + O, O, O, FMAbv, O, O, O, O, #define use_offset_0x2008u 2744 @@ -372,8 +374,8 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = { /* Superscripts and Subscripts */ - /* 2070 */ O, O, O, O, FM, O, O, O, O, O, O, O, O, O, O, O, - /* 2080 */ O, O, FM, FM, FM, O, O, O, + /* 2070 */ O, O, O, O, FMPst, O, O, O, O, O, O, O, O, O, O, O, + /* 2080 */ O, O, FMPst, FMPst, FMPst, O, O, O, #define use_offset_0x20f0u 2800 @@ -547,7 +549,7 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = { /* 11190 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, /* 111A0 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, /* 111B0 */ B, B, B, VPst, VPre, VPst, VBlw, VBlw, VBlw, VBlw, VBlw, VBlw, VAbv, VAbv, VAbv, VAbv, - /* 111C0 */ H, B, R, R, O, O, O, O, GB, FBlw, CMBlw, VAbv, VBlw, O, O, O, + /* 111C0 */ H, B, R, R, O, O, O, O, GB, FMBlw, CMBlw, VAbv, VBlw, O, O, O, /* 111D0 */ B, B, B, B, B, B, B, B, B, B, O, O, O, O, O, O, /* Sinhala Archaic Numbers */ @@ -600,7 +602,7 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = { /* 11420 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, /* 11430 */ B, B, B, B, B, VPst, VPre, VPst, VBlw, VBlw, VBlw, VBlw, VBlw, VBlw, VAbv, VAbv, /* 11440 */ VPst, VPst, H, VMAbv, VMAbv, VMPst, CMBlw, B, O, O, O, O, O, O, O, O, - /* 11450 */ B, B, B, B, B, B, B, B, B, B, O, O, O, O, FM, B, + /* 11450 */ B, B, B, B, B, B, B, B, B, B, O, O, O, O, FMAbv, B, /* 11460 */ O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, /* 11470 */ O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, @@ -683,7 +685,7 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = { /* 11A00 */ B, VAbv, VBlw, VBlw, VAbv, VAbv, VAbv, VAbv, VAbv, VAbv, VBlw, B, B, B, B, B, /* 11A10 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, /* 11A20 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, - /* 11A30 */ B, B, B, FM, VBlw, VMAbv, VMAbv, VMAbv, VMAbv, VMPst, R, MBlw, MBlw, MBlw, MBlw, GB, + /* 11A30 */ B, B, B, FMBlw, VBlw, VMAbv, VMAbv, VMAbv, VMAbv, VMPst, R, MBlw, MBlw, MBlw, MBlw, GB, /* 11A40 */ O, O, O, O, O, GB, O, H, O, O, O, O, O, O, O, O, /* Soyombo */ @@ -809,7 +811,6 @@ hb_use_get_category (hb_codepoint_t u) #undef B #undef CGJ #undef CS -#undef FM #undef GB #undef H #undef HN @@ -830,6 +831,9 @@ hb_use_get_category (hb_codepoint_t u) #undef FBlw #undef FPst #undef FAbv +#undef FMBlw +#undef FMPst +#undef FMAbv #undef MPre #undef MBlw #undef MPst diff --git a/src/hb-ot-shape-complex-use.hh b/src/hb-ot-shape-complex-use.hh index ab56e1b8f..b52b853cd 100644 --- a/src/hb-ot-shape-complex-use.hh +++ b/src/hb-ot-shape-complex-use.hh @@ -68,6 +68,10 @@ enum use_category_t { USE_VS = 21, /* VARIATION_SELECTOR */ // USE_V = 36, /* VOWEL */ // USE_VM = 40, /* VOWEL_MOD */ + USE_CS = 43, /* CONS_WITH_STACKER */ + + /* https://github.com/harfbuzz/harfbuzz/issues/1102 */ + USE_HVM = 44, /* HALANT_OR_VOWEL_MODIFIER */ USE_FAbv = 24, /* CONS_FINAL_ABOVE */ USE_FBlw = 25, /* CONS_FINAL_BELOW */ @@ -88,10 +92,9 @@ enum use_category_t { USE_VMPre = 23, /* VOWEL_MOD_PRE */ USE_SMAbv = 41, /* SYM_MOD_ABOVE */ USE_SMBlw = 42, /* SYM_MOD_BELOW */ - USE_CS = 43, /* CONS_WITH_STACKER */ - - /* https://github.com/harfbuzz/harfbuzz/issues/1102 */ - USE_HVM = 44, /* HALANT_OR_VOWEL_MODIFIER */ + USE_FMAbv = 45, /* CONS_FINAL_MOD UIPC = Top */ + USE_FMBlw = 46, /* CONS_FINAL_MOD UIPC = Bottom */ + USE_FMPst = 47, /* CONS_FINAL_MOD UIPC = Not_Applicable */ }; HB_INTERNAL USE_TABLE_ELEMENT_TYPE