HarfBuzz: Update to version 4.0.1

This commit is contained in:
bruvzg 2022-03-18 14:50:57 +02:00
parent 309cd91ea7
commit 94a365e94b
No known key found for this signature in database
GPG key ID: 7960FCF39844EC38
16 changed files with 1217 additions and 558 deletions

View file

@ -103,6 +103,7 @@ if env["builtin_harfbuzz"]:
"src/hb-subset-cff2.cc",
"src/hb-subset-input.cc",
"src/hb-subset-plan.cc",
"src/hb-subset-repacker.cc",
"src/hb-subset.cc",
"src/hb-ucd.cc",
"src/hb-unicode.cc",

View file

@ -192,7 +192,7 @@ Files extracted from upstream source:
## harfbuzz
- Upstream: https://github.com/harfbuzz/harfbuzz
- Version: 4.0.0 (8d1b000a3edc90c12267b836b4ef3f81c0e53edc, 2022)
- Version: 4.0.1 (1f79ba9407ecd54e382997940cbcc3fb71bef8be, 2022)
- License: MIT
Files extracted from upstream source:

View file

@ -108,7 +108,7 @@ static const hb_aat_feature_mapping_t feature_mappings[] =
{HB_TAG ('f','r','a','c'), HB_AAT_LAYOUT_FEATURE_TYPE_FRACTIONS, HB_AAT_LAYOUT_FEATURE_SELECTOR_DIAGONAL_FRACTIONS, HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_FRACTIONS},
{HB_TAG ('f','w','i','d'), HB_AAT_LAYOUT_FEATURE_TYPE_TEXT_SPACING, HB_AAT_LAYOUT_FEATURE_SELECTOR_MONOSPACED_TEXT, (hb_aat_layout_feature_selector_t) 7},
{HB_TAG ('h','a','l','t'), HB_AAT_LAYOUT_FEATURE_TYPE_TEXT_SPACING, HB_AAT_LAYOUT_FEATURE_SELECTOR_ALT_HALF_WIDTH_TEXT, (hb_aat_layout_feature_selector_t) 7},
{HB_TAG ('h','i','s','t'), HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES, HB_AAT_LAYOUT_FEATURE_SELECTOR_HISTORICAL_LIGATURES_ON, HB_AAT_LAYOUT_FEATURE_SELECTOR_HISTORICAL_LIGATURES_OFF},
{HB_TAG ('h','i','s','t'), (hb_aat_layout_feature_type_t) 40, (hb_aat_layout_feature_selector_t) 0, (hb_aat_layout_feature_selector_t) 1},
{HB_TAG ('h','k','n','a'), HB_AAT_LAYOUT_FEATURE_TYPE_ALTERNATE_KANA, HB_AAT_LAYOUT_FEATURE_SELECTOR_ALTERNATE_HORIZ_KANA_ON, HB_AAT_LAYOUT_FEATURE_SELECTOR_ALTERNATE_HORIZ_KANA_OFF},
{HB_TAG ('h','l','i','g'), HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES, HB_AAT_LAYOUT_FEATURE_SELECTOR_HISTORICAL_LIGATURES_ON, HB_AAT_LAYOUT_FEATURE_SELECTOR_HISTORICAL_LIGATURES_OFF},
{HB_TAG ('h','n','g','l'), HB_AAT_LAYOUT_FEATURE_TYPE_TRANSLITERATION, HB_AAT_LAYOUT_FEATURE_SELECTOR_HANJA_TO_HANGUL, HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_TRANSLITERATION},
@ -170,6 +170,7 @@ static const hb_aat_feature_mapping_t feature_mappings[] =
{HB_TAG ('v','k','n','a'), HB_AAT_LAYOUT_FEATURE_TYPE_ALTERNATE_KANA, HB_AAT_LAYOUT_FEATURE_SELECTOR_ALTERNATE_VERT_KANA_ON, HB_AAT_LAYOUT_FEATURE_SELECTOR_ALTERNATE_VERT_KANA_OFF},
{HB_TAG ('v','p','a','l'), HB_AAT_LAYOUT_FEATURE_TYPE_TEXT_SPACING, HB_AAT_LAYOUT_FEATURE_SELECTOR_ALT_PROPORTIONAL_TEXT, (hb_aat_layout_feature_selector_t) 7},
{HB_TAG ('v','r','t','2'), HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_SUBSTITUTION, HB_AAT_LAYOUT_FEATURE_SELECTOR_SUBSTITUTE_VERTICAL_FORMS_ON, HB_AAT_LAYOUT_FEATURE_SELECTOR_SUBSTITUTE_VERTICAL_FORMS_OFF},
{HB_TAG ('v','r','t','r'), HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_SUBSTITUTION, (hb_aat_layout_feature_selector_t) 2, (hb_aat_layout_feature_selector_t) 3},
{HB_TAG ('z','e','r','o'), HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS, HB_AAT_LAYOUT_FEATURE_SELECTOR_SLASHED_ZERO_ON, HB_AAT_LAYOUT_FEATURE_SELECTOR_SLASHED_ZERO_OFF},
};

View file

@ -478,7 +478,7 @@ _resume:
case 18:
#line 58 "hb-buffer-deserialize-text.rl"
{
/* TODO Unescape delimeters. */
/* TODO Unescape delimiters. */
if (!hb_font_glyph_from_string (font,
tok, p - tok,
&info.codepoint))
@ -535,7 +535,7 @@ _resume:
case 16:
#line 58 "hb-buffer-deserialize-text.rl"
{
/* TODO Unescape delimeters. */
/* TODO Unescape delimiters. */
if (!hb_font_glyph_from_string (font,
tok, p - tok,
&info.codepoint))
@ -635,7 +635,7 @@ _resume:
}
#line 58 "hb-buffer-deserialize-text.rl"
{
/* TODO Unescape delimeters. */
/* TODO Unescape delimiters. */
if (!hb_font_glyph_from_string (font,
tok, p - tok,
&info.codepoint))
@ -645,7 +645,7 @@ _resume:
case 17:
#line 58 "hb-buffer-deserialize-text.rl"
{
/* TODO Unescape delimeters. */
/* TODO Unescape delimiters. */
if (!hb_font_glyph_from_string (font,
tok, p - tok,
&info.codepoint))
@ -674,7 +674,7 @@ _resume:
}
#line 58 "hb-buffer-deserialize-text.rl"
{
/* TODO Unescape delimeters. */
/* TODO Unescape delimiters. */
if (!hb_font_glyph_from_string (font,
tok, p - tok,
&info.codepoint))
@ -701,7 +701,7 @@ _resume:
}
#line 58 "hb-buffer-deserialize-text.rl"
{
/* TODO Unescape delimeters. */
/* TODO Unescape delimiters. */
if (!hb_font_glyph_from_string (font,
tok, p - tok,
&info.codepoint))
@ -733,7 +733,7 @@ _again:
case 16:
#line 58 "hb-buffer-deserialize-text.rl"
{
/* TODO Unescape delimeters. */
/* TODO Unescape delimiters. */
if (!hb_font_glyph_from_string (font,
tok, p - tok,
&info.codepoint))
@ -820,7 +820,7 @@ _again:
}
#line 58 "hb-buffer-deserialize-text.rl"
{
/* TODO Unescape delimeters. */
/* TODO Unescape delimiters. */
if (!hb_font_glyph_from_string (font,
tok, p - tok,
&info.codepoint))

View file

@ -117,7 +117,7 @@ typedef struct hb_glyph_info_t {
* from there, and repeat.
* At the start of next line a similar algorithm can
* be implemented. That is: 1. Iterate forward from
* the line-break position untill the first cluster
* the line-break position until the first cluster
* start position that is NOT unsafe-to-concat, 2.
* shape the segment from beginning of the line to
* that position, 3. check whether the resulting

View file

@ -41,7 +41,10 @@ namespace OT {
struct BaseCoordFormat1
{
hb_position_t get_coord () const { return coordinate; }
hb_position_t get_coord (hb_font_t *font, hb_direction_t direction) const
{
return HB_DIRECTION_IS_HORIZONTAL (direction) ? font->em_scale_y (coordinate) : font->em_scale_x (coordinate);
}
bool sanitize (hb_sanitize_context_t *c) const
{
@ -58,10 +61,10 @@ struct BaseCoordFormat1
struct BaseCoordFormat2
{
hb_position_t get_coord () const
hb_position_t get_coord (hb_font_t *font, hb_direction_t direction) const
{
/* TODO */
return coordinate;
return HB_DIRECTION_IS_HORIZONTAL (direction) ? font->em_scale_y (coordinate) : font->em_scale_x (coordinate);
}
bool sanitize (hb_sanitize_context_t *c) const
@ -87,9 +90,10 @@ struct BaseCoordFormat3
hb_direction_t direction) const
{
const Device &device = this+deviceTable;
return coordinate + (HB_DIRECTION_IS_VERTICAL (direction) ?
device.get_y_delta (font, var_store) :
device.get_x_delta (font, var_store));
return HB_DIRECTION_IS_HORIZONTAL (direction)
? font->em_scale_y (coordinate) + device.get_y_delta (font, var_store)
: font->em_scale_x (coordinate) + device.get_x_delta (font, var_store);
}
@ -120,8 +124,8 @@ struct BaseCoord
hb_direction_t direction) const
{
switch (u.format) {
case 1: return u.format1.get_coord ();
case 2: return u.format2.get_coord ();
case 1: return u.format1.get_coord (font, direction);
case 2: return u.format2.get_coord (font, direction);
case 3: return u.format3.get_coord (font, var_store, direction);
default:return 0;
}

View file

@ -2060,12 +2060,7 @@ hb_ot_layout_get_baseline (hb_font_t *font,
hb_tag_t language_tag,
hb_position_t *coord /* OUT. May be NULL. */)
{
bool result = font->face->table.BASE->get_baseline (font, baseline_tag, direction, script_tag, language_tag, coord);
if (result && coord)
*coord = HB_DIRECTION_IS_HORIZONTAL (direction) ? font->em_scale_y (*coord) : font->em_scale_x (*coord);
return result;
return font->face->table.BASE->get_baseline (font, baseline_tag, direction, script_tag, language_tag, coord);
}
/**

View file

@ -92,41 +92,60 @@ enum use_syllable_type_t {
#define use_syllable_machine_ex_VMPst 39u
#define use_syllable_machine_ex_VPre 22u
#define use_syllable_machine_ex_VPst 35u
#define use_syllable_machine_ex_WJ 16u
#define use_syllable_machine_ex_ZWNJ 14u
#line 99 "hb-ot-shape-complex-use-machine.hh"
#line 100 "hb-ot-shape-complex-use-machine.hh"
static const unsigned char _use_syllable_machine_trans_keys[] = {
0u, 51u, 41u, 42u, 42u, 42u, 11u, 48u, 11u, 48u, 1u, 1u, 22u, 48u, 23u, 48u,
0u, 51u, 11u, 48u, 11u, 48u, 1u, 1u, 22u, 48u, 23u, 48u, 24u, 47u, 25u, 47u,
26u, 47u, 45u, 46u, 46u, 46u, 24u, 48u, 24u, 48u, 24u, 48u, 1u, 1u, 24u, 48u,
23u, 48u, 23u, 48u, 23u, 48u, 22u, 48u, 22u, 48u, 22u, 48u, 11u, 48u, 1u, 48u,
11u, 48u, 41u, 42u, 42u, 42u, 11u, 48u, 11u, 48u, 1u, 1u, 22u, 48u, 23u, 48u,
24u, 47u, 25u, 47u, 26u, 47u, 45u, 46u, 46u, 46u, 24u, 48u, 24u, 48u, 24u, 48u,
1u, 1u, 24u, 48u, 23u, 48u, 23u, 48u, 23u, 48u, 22u, 48u, 22u, 48u, 22u, 48u,
11u, 48u, 1u, 48u, 13u, 13u, 4u, 4u, 11u, 48u, 11u, 48u, 1u, 1u, 22u, 48u,
23u, 48u, 24u, 47u, 25u, 47u, 26u, 47u, 45u, 46u, 46u, 46u, 24u, 48u, 24u, 48u,
24u, 48u, 1u, 1u, 24u, 48u, 23u, 48u, 23u, 48u, 23u, 48u, 22u, 48u, 22u, 48u,
22u, 48u, 11u, 48u, 1u, 48u, 4u, 4u, 13u, 13u, 1u, 48u, 11u, 48u, 41u, 42u,
42u, 42u, 1u, 5u, 50u, 52u, 49u, 52u, 49u, 51u, 0
22u, 48u, 11u, 48u, 1u, 48u, 11u, 48u, 11u, 48u, 1u, 1u, 22u, 48u, 23u, 48u,
24u, 47u, 25u, 47u, 26u, 47u, 45u, 46u, 46u, 46u, 24u, 48u, 24u, 48u, 24u, 48u,
1u, 1u, 24u, 48u, 23u, 48u, 23u, 48u, 23u, 48u, 22u, 48u, 22u, 48u, 22u, 48u,
11u, 48u, 1u, 48u, 4u, 4u, 13u, 13u, 1u, 48u, 11u, 48u, 41u, 42u, 42u, 42u,
1u, 5u, 50u, 52u, 49u, 52u, 49u, 51u, 0
};
static const char _use_syllable_machine_key_spans[] = {
52, 2, 1, 38, 38, 1, 27, 26,
52, 38, 38, 1, 27, 26, 24, 23,
22, 2, 1, 25, 25, 25, 1, 25,
26, 26, 26, 27, 27, 27, 38, 48,
38, 2, 1, 38, 38, 1, 27, 26,
24, 23, 22, 2, 1, 25, 25, 25,
1, 25, 26, 26, 26, 27, 27, 27,
38, 48, 1, 1, 38, 38, 1, 27,
26, 24, 23, 22, 2, 1, 25, 25,
25, 1, 25, 26, 26, 26, 27, 27,
27, 38, 48, 1, 1, 48, 38, 2,
1, 5, 3, 4, 3
27, 38, 48, 38, 38, 1, 27, 26,
24, 23, 22, 2, 1, 25, 25, 25,
1, 25, 26, 26, 26, 27, 27, 27,
38, 48, 1, 1, 48, 38, 2, 1,
5, 3, 4, 3
};
static const short _use_syllable_machine_index_offsets[] = {
0, 53, 56, 58, 97, 136, 138, 166,
193, 218, 242, 265, 268, 270, 296, 322,
348, 350, 376, 403, 430, 457, 485, 513,
541, 580, 629, 631, 633, 672, 711, 713,
741, 768, 793, 817, 840, 843, 845, 871,
897, 923, 925, 951, 978, 1005, 1032, 1060,
1088, 1116, 1155, 1204, 1206, 1208, 1257, 1296,
1299, 1301, 1307, 1311, 1316
0, 53, 92, 131, 133, 161, 188, 213,
237, 260, 263, 265, 291, 317, 343, 345,
371, 398, 425, 452, 480, 508, 536, 575,
624, 663, 666, 668, 707, 746, 748, 776,
803, 828, 852, 875, 878, 880, 906, 932,
958, 960, 986, 1013, 1040, 1067, 1095, 1123,
1151, 1190, 1239, 1241, 1243, 1282, 1321, 1323,
1351, 1378, 1403, 1427, 1450, 1453, 1455, 1481,
1507, 1533, 1535, 1561, 1588, 1615, 1642, 1670,
1698, 1726, 1765, 1814, 1853, 1892, 1894, 1922,
1949, 1974, 1998, 2021, 2024, 2026, 2052, 2078,
2104, 2106, 2132, 2159, 2186, 2213, 2241, 2269,
2297, 2336, 2385, 2387, 2389, 2438, 2477, 2480,
2482, 2488, 2492, 2497
};
static const char _use_syllable_machine_indicies[] = {
@ -136,178 +155,331 @@ static const char _use_syllable_machine_indicies[] = {
11, 12, 13, 14, 15, 9, 16, 17,
18, 19, 20, 21, 2, 22, 23, 24,
2, 25, 26, 27, 28, 29, 30, 31,
6, 32, 2, 33, 2, 0, 35, 34,
35, 34, 37, 38, 36, 36, 36, 36,
36, 36, 36, 36, 36, 39, 40, 41,
42, 43, 44, 45, 39, 46, 1, 47,
48, 49, 50, 36, 51, 52, 53, 36,
36, 36, 36, 54, 55, 56, 57, 38,
36, 37, 38, 36, 36, 36, 36, 36,
36, 36, 36, 36, 39, 40, 41, 42,
43, 44, 45, 39, 46, 47, 47, 48,
49, 50, 36, 51, 52, 53, 36, 36,
36, 36, 54, 55, 56, 57, 38, 36,
37, 58, 39, 40, 41, 42, 43, 36,
36, 36, 36, 36, 36, 48, 49, 50,
36, 51, 52, 53, 36, 36, 36, 36,
40, 55, 56, 57, 59, 36, 40, 41,
42, 43, 36, 36, 36, 36, 36, 36,
36, 36, 36, 36, 51, 52, 53, 36,
36, 36, 36, 36, 55, 56, 57, 59,
36, 41, 42, 43, 36, 36, 36, 36,
36, 36, 36, 36, 36, 36, 36, 36,
36, 36, 36, 36, 36, 36, 55, 56,
57, 36, 42, 43, 36, 36, 36, 36,
36, 36, 36, 36, 36, 36, 36, 36,
36, 36, 36, 36, 36, 36, 55, 56,
57, 36, 43, 36, 36, 36, 36, 36,
36, 36, 36, 36, 36, 36, 36, 36,
36, 36, 36, 36, 36, 55, 56, 57,
36, 55, 56, 36, 56, 36, 41, 42,
43, 36, 36, 36, 36, 36, 36, 36,
36, 36, 36, 51, 52, 53, 36, 36,
36, 36, 36, 55, 56, 57, 59, 36,
41, 42, 43, 36, 36, 36, 36, 36,
36, 36, 36, 36, 36, 36, 52, 53,
36, 36, 36, 36, 36, 55, 56, 57,
59, 36, 41, 42, 43, 36, 36, 36,
36, 36, 36, 36, 36, 36, 36, 36,
36, 53, 36, 36, 36, 36, 36, 55,
56, 57, 59, 36, 61, 60, 41, 42,
43, 36, 36, 36, 36, 36, 36, 36,
36, 36, 36, 36, 36, 36, 36, 36,
36, 36, 36, 55, 56, 57, 59, 36,
40, 41, 42, 43, 36, 36, 36, 36,
36, 36, 48, 49, 50, 36, 51, 52,
53, 36, 36, 36, 36, 40, 55, 56,
57, 59, 36, 40, 41, 42, 43, 36,
36, 36, 36, 36, 36, 36, 49, 50,
36, 51, 52, 53, 36, 36, 36, 36,
40, 55, 56, 57, 59, 36, 40, 41,
42, 43, 36, 36, 36, 36, 36, 36,
36, 36, 50, 36, 51, 52, 53, 36,
36, 36, 36, 40, 55, 56, 57, 59,
36, 39, 40, 41, 42, 43, 36, 45,
39, 36, 36, 36, 48, 49, 50, 36,
51, 52, 53, 36, 36, 36, 36, 40,
55, 56, 57, 59, 36, 39, 40, 41,
42, 43, 36, 36, 39, 36, 36, 36,
48, 49, 50, 36, 51, 52, 53, 36,
36, 36, 36, 40, 55, 56, 57, 59,
36, 39, 40, 41, 42, 43, 44, 45,
39, 36, 36, 36, 48, 49, 50, 36,
51, 52, 53, 36, 36, 36, 36, 40,
55, 56, 57, 59, 36, 37, 38, 36,
36, 36, 36, 36, 36, 36, 36, 36,
39, 40, 41, 42, 43, 44, 45, 39,
46, 36, 47, 48, 49, 50, 36, 51,
52, 53, 36, 36, 36, 36, 54, 55,
56, 57, 38, 36, 37, 58, 58, 58,
58, 58, 58, 58, 58, 58, 58, 58,
58, 58, 58, 58, 58, 58, 58, 58,
58, 58, 40, 41, 42, 43, 58, 58,
58, 58, 58, 58, 58, 58, 58, 58,
51, 52, 53, 58, 58, 58, 58, 58,
55, 56, 57, 59, 58, 63, 62, 3,
64, 37, 38, 36, 36, 36, 36, 36,
36, 36, 36, 36, 39, 40, 41, 42,
43, 44, 45, 39, 46, 1, 47, 48,
49, 50, 36, 51, 52, 53, 36, 0,
35, 36, 54, 55, 56, 57, 38, 36,
5, 6, 65, 65, 65, 65, 65, 65,
65, 65, 65, 9, 10, 11, 12, 13,
14, 15, 9, 16, 18, 18, 19, 20,
21, 65, 22, 23, 24, 65, 65, 65,
65, 28, 29, 30, 31, 6, 65, 5,
65, 9, 10, 11, 12, 13, 65, 65,
65, 65, 65, 65, 19, 20, 21, 65,
22, 23, 24, 65, 65, 65, 65, 10,
29, 30, 31, 66, 65, 10, 11, 12,
13, 65, 65, 65, 65, 65, 65, 65,
65, 65, 65, 22, 23, 24, 65, 65,
65, 65, 65, 29, 30, 31, 66, 65,
11, 12, 13, 65, 65, 65, 65, 65,
65, 65, 65, 65, 65, 65, 65, 65,
65, 65, 65, 65, 65, 29, 30, 31,
65, 12, 13, 65, 65, 65, 65, 65,
65, 65, 65, 65, 65, 65, 65, 65,
65, 65, 65, 65, 65, 29, 30, 31,
65, 13, 65, 65, 65, 65, 65, 65,
65, 65, 65, 65, 65, 65, 65, 65,
65, 65, 65, 65, 29, 30, 31, 65,
29, 30, 65, 30, 65, 11, 12, 13,
65, 65, 65, 65, 65, 65, 65, 65,
65, 65, 22, 23, 24, 65, 65, 65,
65, 65, 29, 30, 31, 66, 65, 11,
12, 13, 65, 65, 65, 65, 65, 65,
65, 65, 65, 65, 65, 23, 24, 65,
65, 65, 65, 65, 29, 30, 31, 66,
65, 11, 12, 13, 65, 65, 65, 65,
65, 65, 65, 65, 65, 65, 65, 65,
24, 65, 65, 65, 65, 65, 29, 30,
31, 66, 65, 67, 65, 11, 12, 13,
65, 65, 65, 65, 65, 65, 65, 65,
65, 65, 65, 65, 65, 65, 65, 65,
65, 65, 29, 30, 31, 66, 65, 10,
11, 12, 13, 65, 65, 65, 65, 65,
65, 19, 20, 21, 65, 22, 23, 24,
65, 65, 65, 65, 10, 29, 30, 31,
66, 65, 10, 11, 12, 13, 65, 65,
65, 65, 65, 65, 65, 20, 21, 65,
22, 23, 24, 65, 65, 65, 65, 10,
29, 30, 31, 66, 65, 10, 11, 12,
13, 65, 65, 65, 65, 65, 65, 65,
65, 21, 65, 22, 23, 24, 65, 65,
65, 65, 10, 29, 30, 31, 66, 65,
9, 10, 11, 12, 13, 65, 15, 9,
65, 65, 65, 19, 20, 21, 65, 22,
23, 24, 65, 65, 65, 65, 10, 29,
30, 31, 66, 65, 9, 10, 11, 12,
13, 65, 65, 9, 65, 65, 65, 19,
20, 21, 65, 22, 23, 24, 65, 65,
65, 65, 10, 29, 30, 31, 66, 65,
6, 32, 2, 33, 2, 35, 36, 34,
34, 34, 34, 34, 34, 34, 34, 34,
37, 38, 39, 40, 41, 42, 43, 37,
44, 45, 46, 47, 48, 49, 34, 50,
51, 52, 34, 53, 54, 34, 55, 56,
57, 58, 36, 34, 35, 36, 34, 34,
34, 34, 34, 34, 34, 34, 34, 37,
38, 39, 40, 41, 42, 43, 37, 44,
46, 46, 47, 48, 49, 34, 50, 51,
52, 34, 34, 34, 34, 55, 56, 57,
58, 36, 34, 35, 34, 37, 38, 39,
40, 41, 34, 34, 34, 34, 34, 34,
47, 48, 49, 34, 50, 51, 52, 34,
34, 34, 34, 38, 56, 57, 58, 59,
34, 38, 39, 40, 41, 34, 34, 34,
34, 34, 34, 34, 34, 34, 34, 50,
51, 52, 34, 34, 34, 34, 34, 56,
57, 58, 59, 34, 39, 40, 41, 34,
34, 34, 34, 34, 34, 34, 34, 34,
34, 34, 34, 34, 34, 34, 34, 34,
34, 56, 57, 58, 34, 40, 41, 34,
34, 34, 34, 34, 34, 34, 34, 34,
34, 34, 34, 34, 34, 34, 34, 34,
34, 56, 57, 58, 34, 41, 34, 34,
34, 34, 34, 34, 34, 34, 34, 34,
34, 34, 34, 34, 34, 34, 34, 34,
56, 57, 58, 34, 56, 57, 34, 57,
34, 39, 40, 41, 34, 34, 34, 34,
34, 34, 34, 34, 34, 34, 50, 51,
52, 34, 34, 34, 34, 34, 56, 57,
58, 59, 34, 39, 40, 41, 34, 34,
34, 34, 34, 34, 34, 34, 34, 34,
34, 51, 52, 34, 34, 34, 34, 34,
56, 57, 58, 59, 34, 39, 40, 41,
34, 34, 34, 34, 34, 34, 34, 34,
34, 34, 34, 34, 52, 34, 34, 34,
34, 34, 56, 57, 58, 59, 34, 60,
34, 39, 40, 41, 34, 34, 34, 34,
34, 34, 34, 34, 34, 34, 34, 34,
34, 34, 34, 34, 34, 34, 56, 57,
58, 59, 34, 38, 39, 40, 41, 34,
34, 34, 34, 34, 34, 47, 48, 49,
34, 50, 51, 52, 34, 34, 34, 34,
38, 56, 57, 58, 59, 34, 38, 39,
40, 41, 34, 34, 34, 34, 34, 34,
34, 48, 49, 34, 50, 51, 52, 34,
34, 34, 34, 38, 56, 57, 58, 59,
34, 38, 39, 40, 41, 34, 34, 34,
34, 34, 34, 34, 34, 49, 34, 50,
51, 52, 34, 34, 34, 34, 38, 56,
57, 58, 59, 34, 37, 38, 39, 40,
41, 34, 43, 37, 34, 34, 34, 47,
48, 49, 34, 50, 51, 52, 34, 34,
34, 34, 38, 56, 57, 58, 59, 34,
37, 38, 39, 40, 41, 34, 34, 37,
34, 34, 34, 47, 48, 49, 34, 50,
51, 52, 34, 34, 34, 34, 38, 56,
57, 58, 59, 34, 37, 38, 39, 40,
41, 42, 43, 37, 34, 34, 34, 47,
48, 49, 34, 50, 51, 52, 34, 34,
34, 34, 38, 56, 57, 58, 59, 34,
35, 36, 34, 34, 34, 34, 34, 34,
34, 34, 34, 37, 38, 39, 40, 41,
42, 43, 37, 44, 34, 46, 47, 48,
49, 34, 50, 51, 52, 34, 34, 34,
34, 55, 56, 57, 58, 36, 34, 35,
34, 34, 34, 34, 34, 34, 34, 34,
34, 34, 34, 34, 34, 34, 34, 34,
34, 34, 34, 34, 34, 38, 39, 40,
41, 34, 34, 34, 34, 34, 34, 34,
34, 34, 34, 50, 51, 52, 34, 34,
34, 34, 34, 56, 57, 58, 59, 34,
35, 36, 34, 34, 34, 34, 34, 34,
34, 34, 34, 37, 38, 39, 40, 41,
42, 43, 37, 44, 45, 46, 47, 48,
49, 34, 50, 51, 52, 34, 34, 34,
34, 55, 56, 57, 58, 36, 34, 53,
54, 34, 54, 34, 62, 63, 61, 61,
61, 61, 61, 61, 61, 61, 61, 64,
65, 66, 67, 68, 69, 70, 64, 71,
1, 72, 73, 74, 75, 61, 76, 77,
78, 61, 61, 61, 61, 79, 80, 81,
82, 63, 61, 62, 63, 61, 61, 61,
61, 61, 61, 61, 61, 61, 64, 65,
66, 67, 68, 69, 70, 64, 71, 72,
72, 73, 74, 75, 61, 76, 77, 78,
61, 61, 61, 61, 79, 80, 81, 82,
63, 61, 62, 83, 64, 65, 66, 67,
68, 61, 61, 61, 61, 61, 61, 73,
74, 75, 61, 76, 77, 78, 61, 61,
61, 61, 65, 80, 81, 82, 84, 61,
65, 66, 67, 68, 61, 61, 61, 61,
61, 61, 61, 61, 61, 61, 76, 77,
78, 61, 61, 61, 61, 61, 80, 81,
82, 84, 61, 66, 67, 68, 61, 61,
61, 61, 61, 61, 61, 61, 61, 61,
61, 61, 61, 61, 61, 61, 61, 61,
80, 81, 82, 61, 67, 68, 61, 61,
61, 61, 61, 61, 61, 61, 61, 61,
61, 61, 61, 61, 61, 61, 61, 61,
80, 81, 82, 61, 68, 61, 61, 61,
61, 61, 61, 61, 61, 61, 61, 61,
61, 61, 61, 61, 61, 61, 61, 80,
81, 82, 61, 80, 81, 61, 81, 61,
66, 67, 68, 61, 61, 61, 61, 61,
61, 61, 61, 61, 61, 76, 77, 78,
61, 61, 61, 61, 61, 80, 81, 82,
84, 61, 66, 67, 68, 61, 61, 61,
61, 61, 61, 61, 61, 61, 61, 61,
77, 78, 61, 61, 61, 61, 61, 80,
81, 82, 84, 61, 66, 67, 68, 61,
61, 61, 61, 61, 61, 61, 61, 61,
61, 61, 61, 78, 61, 61, 61, 61,
61, 80, 81, 82, 84, 61, 86, 85,
66, 67, 68, 61, 61, 61, 61, 61,
61, 61, 61, 61, 61, 61, 61, 61,
61, 61, 61, 61, 61, 80, 81, 82,
84, 61, 65, 66, 67, 68, 61, 61,
61, 61, 61, 61, 73, 74, 75, 61,
76, 77, 78, 61, 61, 61, 61, 65,
80, 81, 82, 84, 61, 65, 66, 67,
68, 61, 61, 61, 61, 61, 61, 61,
74, 75, 61, 76, 77, 78, 61, 61,
61, 61, 65, 80, 81, 82, 84, 61,
65, 66, 67, 68, 61, 61, 61, 61,
61, 61, 61, 61, 75, 61, 76, 77,
78, 61, 61, 61, 61, 65, 80, 81,
82, 84, 61, 64, 65, 66, 67, 68,
61, 70, 64, 61, 61, 61, 73, 74,
75, 61, 76, 77, 78, 61, 61, 61,
61, 65, 80, 81, 82, 84, 61, 64,
65, 66, 67, 68, 61, 61, 64, 61,
61, 61, 73, 74, 75, 61, 76, 77,
78, 61, 61, 61, 61, 65, 80, 81,
82, 84, 61, 64, 65, 66, 67, 68,
69, 70, 64, 61, 61, 61, 73, 74,
75, 61, 76, 77, 78, 61, 61, 61,
61, 65, 80, 81, 82, 84, 61, 62,
63, 61, 61, 61, 61, 61, 61, 61,
61, 61, 64, 65, 66, 67, 68, 69,
70, 64, 71, 61, 72, 73, 74, 75,
61, 76, 77, 78, 61, 61, 61, 61,
79, 80, 81, 82, 63, 61, 62, 83,
83, 83, 83, 83, 83, 83, 83, 83,
83, 83, 83, 83, 83, 83, 83, 83,
83, 83, 83, 83, 65, 66, 67, 68,
83, 83, 83, 83, 83, 83, 83, 83,
83, 83, 76, 77, 78, 83, 83, 83,
83, 83, 80, 81, 82, 84, 83, 88,
87, 3, 89, 90, 91, 61, 61, 61,
61, 61, 61, 61, 61, 61, 92, 93,
94, 95, 96, 97, 98, 92, 99, 100,
101, 102, 103, 104, 61, 105, 106, 107,
61, 53, 54, 61, 108, 109, 110, 82,
91, 61, 90, 91, 61, 61, 61, 61,
61, 61, 61, 61, 61, 92, 93, 94,
95, 96, 97, 98, 92, 99, 101, 101,
102, 103, 104, 61, 105, 106, 107, 61,
61, 61, 61, 108, 109, 110, 82, 91,
61, 90, 83, 92, 93, 94, 95, 96,
61, 61, 61, 61, 61, 61, 102, 103,
104, 61, 105, 106, 107, 61, 61, 61,
61, 93, 109, 110, 82, 111, 61, 93,
94, 95, 96, 61, 61, 61, 61, 61,
61, 61, 61, 61, 61, 105, 106, 107,
61, 61, 61, 61, 61, 109, 110, 82,
111, 61, 94, 95, 96, 61, 61, 61,
61, 61, 61, 61, 61, 61, 61, 61,
61, 61, 61, 61, 61, 61, 61, 109,
110, 82, 61, 95, 96, 61, 61, 61,
61, 61, 61, 61, 61, 61, 61, 61,
61, 61, 61, 61, 61, 61, 61, 109,
110, 82, 61, 96, 61, 61, 61, 61,
61, 61, 61, 61, 61, 61, 61, 61,
61, 61, 61, 61, 61, 61, 109, 110,
82, 61, 109, 110, 61, 110, 61, 94,
95, 96, 61, 61, 61, 61, 61, 61,
61, 61, 61, 61, 105, 106, 107, 61,
61, 61, 61, 61, 109, 110, 82, 111,
61, 94, 95, 96, 61, 61, 61, 61,
61, 61, 61, 61, 61, 61, 61, 106,
107, 61, 61, 61, 61, 61, 109, 110,
82, 111, 61, 94, 95, 96, 61, 61,
61, 61, 61, 61, 61, 61, 61, 61,
61, 61, 107, 61, 61, 61, 61, 61,
109, 110, 82, 111, 61, 112, 85, 94,
95, 96, 61, 61, 61, 61, 61, 61,
61, 61, 61, 61, 61, 61, 61, 61,
61, 61, 61, 61, 109, 110, 82, 111,
61, 93, 94, 95, 96, 61, 61, 61,
61, 61, 61, 102, 103, 104, 61, 105,
106, 107, 61, 61, 61, 61, 93, 109,
110, 82, 111, 61, 93, 94, 95, 96,
61, 61, 61, 61, 61, 61, 61, 103,
104, 61, 105, 106, 107, 61, 61, 61,
61, 93, 109, 110, 82, 111, 61, 93,
94, 95, 96, 61, 61, 61, 61, 61,
61, 61, 61, 104, 61, 105, 106, 107,
61, 61, 61, 61, 93, 109, 110, 82,
111, 61, 92, 93, 94, 95, 96, 61,
98, 92, 61, 61, 61, 102, 103, 104,
61, 105, 106, 107, 61, 61, 61, 61,
93, 109, 110, 82, 111, 61, 92, 93,
94, 95, 96, 61, 61, 92, 61, 61,
61, 102, 103, 104, 61, 105, 106, 107,
61, 61, 61, 61, 93, 109, 110, 82,
111, 61, 92, 93, 94, 95, 96, 97,
98, 92, 61, 61, 61, 102, 103, 104,
61, 105, 106, 107, 61, 61, 61, 61,
93, 109, 110, 82, 111, 61, 90, 91,
61, 61, 61, 61, 61, 61, 61, 61,
61, 92, 93, 94, 95, 96, 97, 98,
92, 99, 61, 101, 102, 103, 104, 61,
105, 106, 107, 61, 61, 61, 61, 108,
109, 110, 82, 91, 61, 90, 83, 83,
83, 83, 83, 83, 83, 83, 83, 83,
83, 83, 83, 83, 83, 83, 83, 83,
83, 83, 83, 93, 94, 95, 96, 83,
83, 83, 83, 83, 83, 83, 83, 83,
83, 105, 106, 107, 83, 83, 83, 83,
83, 109, 110, 82, 111, 83, 90, 91,
61, 61, 61, 61, 61, 61, 61, 61,
61, 92, 93, 94, 95, 96, 97, 98,
92, 99, 100, 101, 102, 103, 104, 61,
105, 106, 107, 61, 61, 61, 61, 108,
109, 110, 82, 91, 61, 5, 6, 113,
113, 113, 113, 113, 113, 113, 113, 113,
9, 10, 11, 12, 13, 14, 15, 9,
65, 65, 65, 19, 20, 21, 65, 22,
23, 24, 65, 65, 65, 65, 10, 29,
30, 31, 66, 65, 5, 6, 65, 65,
65, 65, 65, 65, 65, 65, 65, 9,
10, 11, 12, 13, 14, 15, 9, 16,
65, 18, 19, 20, 21, 65, 22, 23,
24, 65, 65, 65, 65, 28, 29, 30,
31, 6, 65, 5, 65, 65, 65, 65,
65, 65, 65, 65, 65, 65, 65, 65,
65, 65, 65, 65, 65, 65, 65, 65,
65, 10, 11, 12, 13, 65, 65, 65,
65, 65, 65, 65, 65, 65, 65, 22,
23, 24, 65, 65, 65, 65, 65, 29,
30, 31, 66, 65, 68, 65, 7, 65,
1, 65, 65, 65, 1, 65, 65, 65,
65, 65, 5, 6, 7, 65, 65, 65,
65, 65, 65, 65, 65, 9, 10, 11,
12, 13, 14, 15, 9, 16, 17, 18,
19, 20, 21, 65, 22, 23, 24, 65,
25, 26, 65, 28, 29, 30, 31, 6,
65, 5, 6, 65, 65, 65, 65, 65,
65, 65, 65, 65, 9, 10, 11, 12,
13, 14, 15, 9, 16, 17, 18, 19,
20, 21, 65, 22, 23, 24, 65, 65,
65, 65, 28, 29, 30, 31, 6, 65,
25, 26, 65, 26, 65, 1, 69, 69,
69, 1, 69, 71, 70, 32, 70, 32,
71, 70, 71, 70, 32, 70, 33, 70,
0
16, 18, 18, 19, 20, 21, 113, 22,
23, 24, 113, 113, 113, 113, 28, 29,
30, 31, 6, 113, 5, 113, 9, 10,
11, 12, 13, 113, 113, 113, 113, 113,
113, 19, 20, 21, 113, 22, 23, 24,
113, 113, 113, 113, 10, 29, 30, 31,
114, 113, 10, 11, 12, 13, 113, 113,
113, 113, 113, 113, 113, 113, 113, 113,
22, 23, 24, 113, 113, 113, 113, 113,
29, 30, 31, 114, 113, 11, 12, 13,
113, 113, 113, 113, 113, 113, 113, 113,
113, 113, 113, 113, 113, 113, 113, 113,
113, 113, 29, 30, 31, 113, 12, 13,
113, 113, 113, 113, 113, 113, 113, 113,
113, 113, 113, 113, 113, 113, 113, 113,
113, 113, 29, 30, 31, 113, 13, 113,
113, 113, 113, 113, 113, 113, 113, 113,
113, 113, 113, 113, 113, 113, 113, 113,
113, 29, 30, 31, 113, 29, 30, 113,
30, 113, 11, 12, 13, 113, 113, 113,
113, 113, 113, 113, 113, 113, 113, 22,
23, 24, 113, 113, 113, 113, 113, 29,
30, 31, 114, 113, 11, 12, 13, 113,
113, 113, 113, 113, 113, 113, 113, 113,
113, 113, 23, 24, 113, 113, 113, 113,
113, 29, 30, 31, 114, 113, 11, 12,
13, 113, 113, 113, 113, 113, 113, 113,
113, 113, 113, 113, 113, 24, 113, 113,
113, 113, 113, 29, 30, 31, 114, 113,
115, 113, 11, 12, 13, 113, 113, 113,
113, 113, 113, 113, 113, 113, 113, 113,
113, 113, 113, 113, 113, 113, 113, 29,
30, 31, 114, 113, 10, 11, 12, 13,
113, 113, 113, 113, 113, 113, 19, 20,
21, 113, 22, 23, 24, 113, 113, 113,
113, 10, 29, 30, 31, 114, 113, 10,
11, 12, 13, 113, 113, 113, 113, 113,
113, 113, 20, 21, 113, 22, 23, 24,
113, 113, 113, 113, 10, 29, 30, 31,
114, 113, 10, 11, 12, 13, 113, 113,
113, 113, 113, 113, 113, 113, 21, 113,
22, 23, 24, 113, 113, 113, 113, 10,
29, 30, 31, 114, 113, 9, 10, 11,
12, 13, 113, 15, 9, 113, 113, 113,
19, 20, 21, 113, 22, 23, 24, 113,
113, 113, 113, 10, 29, 30, 31, 114,
113, 9, 10, 11, 12, 13, 113, 113,
9, 113, 113, 113, 19, 20, 21, 113,
22, 23, 24, 113, 113, 113, 113, 10,
29, 30, 31, 114, 113, 9, 10, 11,
12, 13, 14, 15, 9, 113, 113, 113,
19, 20, 21, 113, 22, 23, 24, 113,
113, 113, 113, 10, 29, 30, 31, 114,
113, 5, 6, 113, 113, 113, 113, 113,
113, 113, 113, 113, 9, 10, 11, 12,
13, 14, 15, 9, 16, 113, 18, 19,
20, 21, 113, 22, 23, 24, 113, 113,
113, 113, 28, 29, 30, 31, 6, 113,
5, 113, 113, 113, 113, 113, 113, 113,
113, 113, 113, 113, 113, 113, 113, 113,
113, 113, 113, 113, 113, 113, 10, 11,
12, 13, 113, 113, 113, 113, 113, 113,
113, 113, 113, 113, 22, 23, 24, 113,
113, 113, 113, 113, 29, 30, 31, 114,
113, 116, 113, 7, 113, 1, 113, 113,
113, 1, 113, 113, 113, 113, 113, 5,
6, 7, 113, 113, 113, 113, 113, 113,
113, 113, 9, 10, 11, 12, 13, 14,
15, 9, 16, 17, 18, 19, 20, 21,
113, 22, 23, 24, 113, 25, 26, 113,
28, 29, 30, 31, 6, 113, 5, 6,
113, 113, 113, 113, 113, 113, 113, 113,
113, 9, 10, 11, 12, 13, 14, 15,
9, 16, 17, 18, 19, 20, 21, 113,
22, 23, 24, 113, 113, 113, 113, 28,
29, 30, 31, 6, 113, 25, 26, 113,
26, 113, 1, 117, 117, 117, 1, 117,
119, 118, 32, 118, 32, 119, 118, 119,
118, 32, 118, 33, 118, 0
};
static const char _use_syllable_machine_trans_targs[] = {
1, 3, 0, 26, 28, 29, 30, 51,
53, 31, 32, 33, 34, 35, 46, 47,
48, 54, 49, 43, 44, 45, 38, 39,
40, 55, 56, 57, 50, 36, 37, 0,
58, 60, 0, 2, 0, 4, 5, 6,
7, 8, 9, 10, 21, 22, 23, 24,
18, 19, 20, 13, 14, 15, 25, 11,
12, 0, 0, 16, 0, 17, 0, 27,
0, 0, 41, 42, 52, 0, 0, 59
1, 27, 0, 50, 52, 76, 77, 98,
100, 78, 79, 80, 81, 82, 93, 94,
95, 101, 96, 90, 91, 92, 85, 86,
87, 102, 103, 104, 97, 83, 84, 0,
105, 107, 0, 2, 3, 4, 5, 6,
7, 8, 19, 20, 21, 24, 22, 16,
17, 18, 11, 12, 13, 25, 26, 23,
9, 10, 0, 14, 15, 0, 28, 29,
30, 31, 32, 33, 34, 45, 46, 47,
48, 42, 43, 44, 37, 38, 39, 49,
35, 36, 0, 0, 40, 0, 41, 0,
51, 0, 53, 54, 55, 56, 57, 58,
59, 70, 71, 72, 75, 73, 67, 68,
69, 62, 63, 64, 74, 60, 61, 65,
66, 0, 88, 89, 99, 0, 0, 106
};
static const char _use_syllable_machine_trans_actions[] = {
@ -315,11 +487,17 @@ static const char _use_syllable_machine_trans_actions[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 4,
0, 0, 5, 0, 6, 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, 7, 8, 0, 9, 0, 10, 0,
11, 12, 0, 0, 0, 13, 14, 0
0, 0, 6, 0, 0, 7, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 8, 9, 0, 10, 0, 11,
0, 12, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 13, 0, 0, 0, 14, 15, 0
};
static const char _use_syllable_machine_to_state_actions[] = {
@ -330,7 +508,13 @@ 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, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 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[] = {
@ -341,18 +525,30 @@ 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, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 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[] = {
0, 35, 35, 37, 37, 59, 37, 37,
37, 37, 37, 37, 37, 37, 37, 37,
61, 37, 37, 37, 37, 37, 37, 37,
37, 59, 63, 65, 37, 66, 66, 66,
66, 66, 66, 66, 66, 66, 66, 66,
66, 66, 66, 66, 66, 66, 66, 66,
66, 66, 66, 66, 66, 66, 66, 66,
66, 70, 71, 71, 71
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, 62, 62, 84, 62, 62,
62, 62, 62, 62, 62, 62, 62, 62,
86, 62, 62, 62, 62, 62, 62, 62,
62, 84, 88, 90, 62, 62, 84, 62,
62, 62, 62, 62, 62, 62, 62, 62,
62, 86, 62, 62, 62, 62, 62, 62,
62, 62, 84, 62, 114, 114, 114, 114,
114, 114, 114, 114, 114, 114, 114, 114,
114, 114, 114, 114, 114, 114, 114, 114,
114, 114, 114, 114, 114, 114, 114, 114,
118, 119, 119, 119
};
static const int use_syllable_machine_start = 0;
@ -366,7 +562,7 @@ static const int use_syllable_machine_en_main = 0;
#line 179 "hb-ot-shape-complex-use-machine.rl"
#line 181 "hb-ot-shape-complex-use-machine.rl"
#define found_syllable(syllable_type) \
@ -422,7 +618,7 @@ HB_FUNCOBJ (machine_index);
static bool
not_ccs_default_ignorable (const hb_glyph_info_t &i)
{ return !(i.use_category() == USE(CGJ) && _hb_glyph_info_is_default_ignorable (&i)); }
{ return i.use_category() != USE(CGJ); }
static inline void
find_syllables_use (hb_buffer_t *buffer)
@ -451,7 +647,7 @@ find_syllables_use (hb_buffer_t *buffer)
unsigned int act HB_UNUSED;
int cs;
#line 453 "hb-ot-shape-complex-use-machine.hh"
#line 651 "hb-ot-shape-complex-use-machine.hh"
{
cs = use_syllable_machine_start;
ts = 0;
@ -459,12 +655,12 @@ find_syllables_use (hb_buffer_t *buffer)
act = 0;
}
#line 263 "hb-ot-shape-complex-use-machine.rl"
#line 267 "hb-ot-shape-complex-use-machine.rl"
unsigned int syllable_serial = 1;
#line 466 "hb-ot-shape-complex-use-machine.hh"
#line 664 "hb-ot-shape-complex-use-machine.hh"
{
int _slen;
int _trans;
@ -478,7 +674,7 @@ _resume:
#line 1 "NONE"
{ts = p;}
break;
#line 480 "hb-ot-shape-complex-use-machine.hh"
#line 678 "hb-ot-shape-complex-use-machine.hh"
}
_keys = _use_syllable_machine_trans_keys + (cs<<1);
@ -496,55 +692,59 @@ _eof_trans:
goto _again;
switch ( _use_syllable_machine_trans_actions[_trans] ) {
case 7:
#line 169 "hb-ot-shape-complex-use-machine.rl"
case 8:
#line 171 "hb-ot-shape-complex-use-machine.rl"
{te = p+1;{ found_syllable (use_standard_cluster); }}
break;
case 4:
case 6:
#line 174 "hb-ot-shape-complex-use-machine.rl"
{te = p+1;{ found_syllable (use_symbol_cluster); }}
break;
case 4:
#line 176 "hb-ot-shape-complex-use-machine.rl"
{te = p+1;{ found_syllable (use_broken_cluster); }}
break;
case 3:
#line 175 "hb-ot-shape-complex-use-machine.rl"
#line 177 "hb-ot-shape-complex-use-machine.rl"
{te = p+1;{ found_syllable (use_non_cluster); }}
break;
case 8:
#line 167 "hb-ot-shape-complex-use-machine.rl"
case 9:
#line 169 "hb-ot-shape-complex-use-machine.rl"
{te = p;p--;{ found_syllable (use_virama_terminated_cluster); }}
break;
case 9:
#line 168 "hb-ot-shape-complex-use-machine.rl"
case 10:
#line 170 "hb-ot-shape-complex-use-machine.rl"
{te = p;p--;{ found_syllable (use_sakot_terminated_cluster); }}
break;
case 6:
#line 169 "hb-ot-shape-complex-use-machine.rl"
case 7:
#line 171 "hb-ot-shape-complex-use-machine.rl"
{te = p;p--;{ found_syllable (use_standard_cluster); }}
break;
case 11:
#line 170 "hb-ot-shape-complex-use-machine.rl"
case 12:
#line 172 "hb-ot-shape-complex-use-machine.rl"
{te = p;p--;{ found_syllable (use_number_joiner_terminated_cluster); }}
break;
case 10:
#line 171 "hb-ot-shape-complex-use-machine.rl"
case 11:
#line 173 "hb-ot-shape-complex-use-machine.rl"
{te = p;p--;{ found_syllable (use_numeral_cluster); }}
break;
case 5:
#line 172 "hb-ot-shape-complex-use-machine.rl"
#line 174 "hb-ot-shape-complex-use-machine.rl"
{te = p;p--;{ found_syllable (use_symbol_cluster); }}
break;
case 14:
#line 173 "hb-ot-shape-complex-use-machine.rl"
case 15:
#line 175 "hb-ot-shape-complex-use-machine.rl"
{te = p;p--;{ found_syllable (use_hieroglyph_cluster); }}
break;
case 12:
#line 174 "hb-ot-shape-complex-use-machine.rl"
case 13:
#line 176 "hb-ot-shape-complex-use-machine.rl"
{te = p;p--;{ found_syllable (use_broken_cluster); }}
break;
case 13:
#line 175 "hb-ot-shape-complex-use-machine.rl"
case 14:
#line 177 "hb-ot-shape-complex-use-machine.rl"
{te = p;p--;{ found_syllable (use_non_cluster); }}
break;
#line 546 "hb-ot-shape-complex-use-machine.hh"
#line 748 "hb-ot-shape-complex-use-machine.hh"
}
_again:
@ -553,7 +753,7 @@ _again:
#line 1 "NONE"
{ts = 0;}
break;
#line 555 "hb-ot-shape-complex-use-machine.hh"
#line 757 "hb-ot-shape-complex-use-machine.hh"
}
if ( ++p != pe )
@ -569,7 +769,7 @@ _again:
}
#line 268 "hb-ot-shape-complex-use-machine.rl"
#line 272 "hb-ot-shape-complex-use-machine.rl"
}

File diff suppressed because it is too large Load diff

View file

@ -206,7 +206,7 @@ setup_masks_use (const hb_ot_shape_plan_t *plan,
unsigned int count = buffer->len;
hb_glyph_info_t *info = buffer->info;
for (unsigned int i = 0; i < count; i++)
info[i].use_category() = hb_use_get_category (info[i].codepoint);
info[i].use_category() = hb_use_get_category (info[i]);
}
static void
@ -257,7 +257,6 @@ setup_topographical_masks (const hb_ot_shape_plan_t *plan,
use_syllable_type_t syllable_type = (use_syllable_type_t) (info[start].syllable() & 0x0F);
switch (syllable_type)
{
case use_symbol_cluster:
case use_hieroglyph_cluster:
case use_non_cluster:
/* These don't join. Nothing to do. */
@ -269,6 +268,7 @@ setup_topographical_masks (const hb_ot_shape_plan_t *plan,
case use_standard_cluster:
case use_number_joiner_terminated_cluster:
case use_numeral_cluster:
case use_symbol_cluster:
case use_broken_cluster:
bool join = last_form == JOINING_FORM_FINA || last_form == JOINING_FORM_ISOL;
@ -363,6 +363,7 @@ reorder_syllable_use (hb_buffer_t *buffer, unsigned int start, unsigned int end)
(FLAG (use_virama_terminated_cluster) |
FLAG (use_sakot_terminated_cluster) |
FLAG (use_standard_cluster) |
FLAG (use_symbol_cluster) |
FLAG (use_broken_cluster) |
0))))
return;

View file

@ -7,7 +7,7 @@
* on files with these headers:
*
* <meta name="updated_at" content="2022-01-28 10:00 PM" />
* File-Date: 2021-12-29
* File-Date: 2022-03-02
*/
#ifndef HB_OT_TAG_TABLE_HH
@ -54,6 +54,7 @@ static const LangTag ot_languages[] = {
/*{"aio", HB_TAG('A','I','O',' ')},*/ /* Aiton */
{"aiw", HB_TAG('A','R','I',' ')}, /* Aari */
{"ajp", HB_TAG('A','R','A',' ')}, /* South Levantine Arabic -> Arabic */
{"ajt", HB_TAG('A','R','A',' ')}, /* Judeo-Tunisian Arabic (retired code) -> Arabic */
{"ak", HB_TAG('A','K','A',' ')}, /* Akan [macrolanguage] */
{"akb", HB_TAG('A','K','B',' ')}, /* Batak Angkola */
{"akb", HB_TAG('B','T','K',' ')}, /* Batak Angkola -> Batak */
@ -809,7 +810,7 @@ static const LangTag ot_languages[] = {
{"lac", HB_TAG('M','Y','N',' ')}, /* Lacandon -> Mayan */
{"lad", HB_TAG('J','U','D',' ')}, /* Ladino */
{"lah", HB_TAG_NONE }, /* Lahnda [macrolanguage] != Lahuli */
{"lak", HB_TAG_NONE }, /* Laka (Nigeria) != Lak */
{"lak", HB_TAG_NONE }, /* Laka (Nigeria) (retired code) != Lak */
{"lam", HB_TAG_NONE }, /* Lamba != Lambani */
{"laz", HB_TAG_NONE }, /* Aribwatsa != Laz */
{"lb", HB_TAG('L','T','Z',' ')}, /* Luxembourgish */
@ -1339,12 +1340,14 @@ static const LangTag ot_languages[] = {
{"sla", HB_TAG_NONE }, /* Slavic [collection] != Slavey */
{"sm", HB_TAG('S','M','O',' ')}, /* Samoan */
{"sma", HB_TAG('S','S','M',' ')}, /* Southern Sami */
{"smd", HB_TAG('M','B','N',' ')}, /* Sama (retired code) -> Mbundu */
{"smj", HB_TAG('L','S','M',' ')}, /* Lule Sami */
{"sml", HB_TAG_NONE }, /* Central Sama != Somali */
{"smn", HB_TAG('I','S','M',' ')}, /* Inari Sami */
{"sms", HB_TAG('S','K','S',' ')}, /* Skolt Sami */
{"smt", HB_TAG('Q','I','N',' ')}, /* Simte -> Chin */
{"sn", HB_TAG('S','N','A','0')}, /* Shona */
{"snb", HB_TAG('I','B','A',' ')}, /* Sebuyau (retired code) -> Iban */
{"snh", HB_TAG_NONE }, /* Shinabo (retired code) != Sinhala (Sinhalese) */
/*{"snk", HB_TAG('S','N','K',' ')},*/ /* Soninke */
{"so", HB_TAG('S','M','L',' ')}, /* Somali */

View file

@ -37,7 +37,6 @@
* For a detailed writeup on the overflow resolution algorithm see:
* docs/repacker.md
*/
struct graph_t
{
struct vertex_t
@ -140,7 +139,8 @@ struct graph_t
* the 'packed' object stack used internally in the
* serializer
*/
graph_t (const hb_vector_t<hb_serialize_context_t::object_t *>& objects)
template<typename T>
graph_t (const T& objects)
: parents_invalid (true),
distance_invalid (true),
positions_invalid (true),
@ -1098,8 +1098,9 @@ struct graph_t
hb_vector_t<unsigned> num_roots_for_space_;
};
static bool _try_isolating_subgraphs (const hb_vector_t<graph_t::overflow_record_t>& overflows,
graph_t& sorted_graph)
static inline
bool _try_isolating_subgraphs (const hb_vector_t<graph_t::overflow_record_t>& overflows,
graph_t& sorted_graph)
{
unsigned space = 0;
hb_set_t roots_to_isolate;
@ -1147,9 +1148,10 @@ static bool _try_isolating_subgraphs (const hb_vector_t<graph_t::overflow_record
return true;
}
static bool _process_overflows (const hb_vector_t<graph_t::overflow_record_t>& overflows,
hb_set_t& priority_bumped_parents,
graph_t& sorted_graph)
static inline
bool _process_overflows (const hb_vector_t<graph_t::overflow_record_t>& overflows,
hb_set_t& priority_bumped_parents,
graph_t& sorted_graph)
{
bool resolution_attempted = false;
@ -1207,8 +1209,9 @@ static bool _process_overflows (const hb_vector_t<graph_t::overflow_record_t>& o
* For a detailed writeup describing how the algorithm operates see:
* docs/repacker.md
*/
template<typename T>
inline hb_blob_t*
hb_resolve_overflows (const hb_vector_t<hb_serialize_context_t::object_t *>& packed,
hb_resolve_overflows (const T& packed,
hb_tag_t table_tag,
unsigned max_rounds = 20) {
// Kahn sort is ~twice as fast as shortest distance sort and works for many fonts

View file

@ -36,6 +36,9 @@
#include "hb-map.hh"
#include "hb-pool.hh"
#ifdef HB_EXPERIMENTAL_API
#include "hb-subset-repacker.h"
#endif
/*
* Serialize
@ -70,6 +73,24 @@ struct hb_serialize_context_t
virtual_links.fini ();
}
object_t () = default;
#ifdef HB_EXPERIMENTAL_API
object_t (const hb_object_t &o)
{
head = o.head;
tail = o.tail;
next = nullptr;
real_links.alloc (o.num_real_links);
for (unsigned i = 0 ; i < o.num_real_links; i++)
real_links.push (o.real_links[i]);
virtual_links.alloc (o.num_virtual_links);
for (unsigned i = 0; i < o.num_virtual_links; i++)
virtual_links.push (o.virtual_links[i]);
}
#endif
bool operator == (const object_t &o) const
{
// Virtual links aren't considered for equality since they don't affect the functionality
@ -95,6 +116,20 @@ struct hb_serialize_context_t
unsigned position: 28;
unsigned bias;
objidx_t objidx;
link_t () = default;
#ifdef HB_EXPERIMENTAL_API
link_t (const hb_link_t &o)
{
width = o.width;
is_signed = 0;
whence = 0;
position = o.position;
bias = 0;
objidx = o.objidx;
}
#endif
};
char *head;

View file

@ -0,0 +1,49 @@
/*
* Copyright © 2022 Google, Inc.
*
* This is part of HarfBuzz, a text shaping library.
*
* Permission is hereby granted, without written agreement and without
* license or royalty fees, to use, copy, modify, and distribute this
* software and its documentation for any purpose, provided that the
* above copyright notice and the following two paragraphs appear in
* all copies of this software.
*
* IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
* DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
* ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
* IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
* DAMAGE.
*
* THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
* BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
* ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
* PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
*
*/
#include "hb-repacker.hh"
#ifdef HB_EXPERIMENTAL_API
/**
* hb_subset_repack_or_fail:
* @hb_objects: raw array of struct hb_object_t, which provides
* object graph info
* @num_hb_objs: number of hb_object_t in the hb_objects array.
*
* Given the input object graph info, repack a table to eliminate
* offset overflows. A nullptr is returned if the repacking attempt fails.
*
* Since: EXPERIMENTAL
**/
hb_blob_t* hb_subset_repack_or_fail (hb_object_t* hb_objects, unsigned num_hb_objs)
{
hb_vector_t<const hb_object_t *> packed;
packed.alloc (num_hb_objs + 1);
packed.push (nullptr);
for (unsigned i = 0 ; i < num_hb_objs ; i++)
packed.push (&(hb_objects[i]));
return hb_resolve_overflows (packed, HB_OT_TAG_GSUB);
}
#endif

View file

@ -0,0 +1,80 @@
/*
* Copyright © 2022 Google, Inc.
*
* This is part of HarfBuzz, a text shaping library.
*
* Permission is hereby granted, without written agreement and without
* license or royalty fees, to use, copy, modify, and distribute this
* software and its documentation for any purpose, provided that the
* above copyright notice and the following two paragraphs appear in
* all copies of this software.
*
* IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
* DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
* ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
* IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
* DAMAGE.
*
* THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
* BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
* ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
* PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
*
*/
#ifndef HB_SUBSET_REPACKER_H
#define HB_SUBSET_REPACKER_H
#include "hb.h"
HB_BEGIN_DECLS
#ifdef HB_EXPERIMENTAL_API
/**
* struct hb_link_t
* width: offsetSize in bytes
* position: position of the offset field in bytes
* from beginning of subtable
* objidx: index of subtable
**/
struct hb_link_t
{
unsigned width;
unsigned position;
unsigned objidx;
};
typedef struct hb_link_t hb_link_t;
/**
* struct hb_object_t
* head: start of object data
* tail: end of object data
* num_real_links: num of offset field in the object
* real_links: pointer to array of offset info
* num_virtual_links: num of objects that must be packed
* after current object in the final serialized order
* virtual_links: array of virtual link info
**/
struct hb_object_t
{
char *head;
char *tail;
unsigned num_real_links;
hb_link_t *real_links;
unsigned num_virtual_links;
hb_link_t *virtual_links;
};
typedef struct hb_object_t hb_object_t;
HB_EXTERN hb_blob_t*
hb_subset_repack_or_fail (hb_object_t* hb_objects,
unsigned num_hb_objs);
#endif
HB_END_DECLS
#endif /* HB_SUBSET_REPACKER_H */

View file

@ -53,14 +53,14 @@ HB_BEGIN_DECLS
*
* The micro component of the library version available at compile-time.
*/
#define HB_VERSION_MICRO 0
#define HB_VERSION_MICRO 1
/**
* HB_VERSION_STRING:
*
* A string literal containing the library version available at compile-time.
*/
#define HB_VERSION_STRING "4.0.0"
#define HB_VERSION_STRING "4.0.1"
/**
* HB_VERSION_ATLEAST: