| Index: third_party/harfbuzz-ng/src/hb-ot-shape-fallback.cc
|
| diff --git a/third_party/harfbuzz-ng/src/hb-ot-shape-fallback.cc b/third_party/harfbuzz-ng/src/hb-ot-shape-fallback.cc
|
| index 5d526c3a8e80d0f0ae498cd1a15ed8d9de2adca2..a774f951852ac2c6eef3b135436639ed7186d016 100644
|
| --- a/third_party/harfbuzz-ng/src/hb-ot-shape-fallback.cc
|
| +++ b/third_party/harfbuzz-ng/src/hb-ot-shape-fallback.cc
|
| @@ -35,42 +35,42 @@ recategorize_combining_class (hb_codepoint_t u,
|
| return klass;
|
|
|
| /* Thai / Lao need some per-character work. */
|
| - if ((u & ~0xFF) == 0x0E00)
|
| + if ((u & ~0xFF) == 0x0E00u)
|
| {
|
| if (unlikely (klass == 0))
|
| {
|
| switch (u)
|
| {
|
| - case 0x0E31:
|
| - case 0x0E34:
|
| - case 0x0E35:
|
| - case 0x0E36:
|
| - case 0x0E37:
|
| - case 0x0E47:
|
| - case 0x0E4C:
|
| - case 0x0E4D:
|
| - case 0x0E4E:
|
| + case 0x0E31u:
|
| + case 0x0E34u:
|
| + case 0x0E35u:
|
| + case 0x0E36u:
|
| + case 0x0E37u:
|
| + case 0x0E47u:
|
| + case 0x0E4Cu:
|
| + case 0x0E4Du:
|
| + case 0x0E4Eu:
|
| klass = HB_UNICODE_COMBINING_CLASS_ABOVE_RIGHT;
|
| break;
|
|
|
| - case 0x0EB1:
|
| - case 0x0EB4:
|
| - case 0x0EB5:
|
| - case 0x0EB6:
|
| - case 0x0EB7:
|
| - case 0x0EBB:
|
| - case 0x0ECC:
|
| - case 0x0ECD:
|
| + case 0x0EB1u:
|
| + case 0x0EB4u:
|
| + case 0x0EB5u:
|
| + case 0x0EB6u:
|
| + case 0x0EB7u:
|
| + case 0x0EBBu:
|
| + case 0x0ECCu:
|
| + case 0x0ECDu:
|
| klass = HB_UNICODE_COMBINING_CLASS_ABOVE;
|
| break;
|
|
|
| - case 0x0EBC:
|
| + case 0x0EBCu:
|
| klass = HB_UNICODE_COMBINING_CLASS_BELOW;
|
| break;
|
| }
|
| } else {
|
| /* Thai virama is below-right */
|
| - if (u == 0x0E3A)
|
| + if (u == 0x0E3Au)
|
| klass = HB_UNICODE_COMBINING_CLASS_BELOW_RIGHT;
|
| }
|
| }
|
| @@ -167,11 +167,12 @@ _hb_ot_shape_fallback_position_recategorize_marks (const hb_ot_shape_plan_t *pla
|
| hb_buffer_t *buffer)
|
| {
|
| unsigned int count = buffer->len;
|
| + hb_glyph_info_t *info = buffer->info;
|
| for (unsigned int i = 0; i < count; i++)
|
| - if (_hb_glyph_info_get_general_category (&buffer->info[i]) == HB_UNICODE_GENERAL_CATEGORY_NON_SPACING_MARK) {
|
| - unsigned int combining_class = _hb_glyph_info_get_modified_combining_class (&buffer->info[i]);
|
| - combining_class = recategorize_combining_class (buffer->info[i].codepoint, combining_class);
|
| - _hb_glyph_info_set_modified_combining_class (&buffer->info[i], combining_class);
|
| + if (_hb_glyph_info_get_general_category (&info[i]) == HB_UNICODE_GENERAL_CATEGORY_NON_SPACING_MARK) {
|
| + unsigned int combining_class = _hb_glyph_info_get_modified_combining_class (&info[i]);
|
| + combining_class = recategorize_combining_class (info[i].codepoint, combining_class);
|
| + _hb_glyph_info_set_modified_combining_class (&info[i], combining_class);
|
| }
|
| }
|
|
|
| @@ -181,8 +182,9 @@ zero_mark_advances (hb_buffer_t *buffer,
|
| unsigned int start,
|
| unsigned int end)
|
| {
|
| + hb_glyph_info_t *info = buffer->info;
|
| for (unsigned int i = start; i < end; i++)
|
| - if (_hb_glyph_info_get_general_category (&buffer->info[i]) == HB_UNICODE_GENERAL_CATEGORY_NON_SPACING_MARK)
|
| + if (_hb_glyph_info_get_general_category (&info[i]) == HB_UNICODE_GENERAL_CATEGORY_NON_SPACING_MARK)
|
| {
|
| buffer->pos[i].x_advance = 0;
|
| buffer->pos[i].y_advance = 0;
|
| @@ -327,12 +329,13 @@ position_around_base (const hb_ot_shape_plan_t *plan,
|
| unsigned int last_lig_component = (unsigned int) -1;
|
| unsigned int last_combining_class = 255;
|
| hb_glyph_extents_t cluster_extents = base_extents; /* Initialization is just to shut gcc up. */
|
| + hb_glyph_info_t *info = buffer->info;
|
| for (unsigned int i = base + 1; i < end; i++)
|
| - if (_hb_glyph_info_get_modified_combining_class (&buffer->info[i]))
|
| + if (_hb_glyph_info_get_modified_combining_class (&info[i]))
|
| {
|
| if (num_lig_components > 1) {
|
| - unsigned int this_lig_id = _hb_glyph_info_get_lig_id (&buffer->info[i]);
|
| - unsigned int this_lig_component = _hb_glyph_info_get_lig_comp (&buffer->info[i]) - 1;
|
| + unsigned int this_lig_id = _hb_glyph_info_get_lig_id (&info[i]);
|
| + unsigned int this_lig_component = _hb_glyph_info_get_lig_comp (&info[i]) - 1;
|
| /* Conditions for attaching to the last component. */
|
| if (!lig_id || lig_id != this_lig_id || this_lig_component >= num_lig_components)
|
| this_lig_component = num_lig_components - 1;
|
| @@ -355,7 +358,7 @@ position_around_base (const hb_ot_shape_plan_t *plan,
|
| }
|
| }
|
|
|
| - unsigned int this_combining_class = _hb_glyph_info_get_modified_combining_class (&buffer->info[i]);
|
| + unsigned int this_combining_class = _hb_glyph_info_get_modified_combining_class (&info[i]);
|
| if (last_combining_class != this_combining_class)
|
| {
|
| last_combining_class = this_combining_class;
|
| @@ -391,13 +394,14 @@ position_cluster (const hb_ot_shape_plan_t *plan,
|
| return;
|
|
|
| /* Find the base glyph */
|
| + hb_glyph_info_t *info = buffer->info;
|
| for (unsigned int i = start; i < end; i++)
|
| - if (!HB_UNICODE_GENERAL_CATEGORY_IS_MARK (_hb_glyph_info_get_general_category (&buffer->info[i])))
|
| + if (!HB_UNICODE_GENERAL_CATEGORY_IS_MARK (_hb_glyph_info_get_general_category (&info[i])))
|
| {
|
| /* Find mark glyphs */
|
| unsigned int j;
|
| for (j = i + 1; j < end; j++)
|
| - if (!HB_UNICODE_GENERAL_CATEGORY_IS_MARK (_hb_glyph_info_get_general_category (&buffer->info[j])))
|
| + if (!HB_UNICODE_GENERAL_CATEGORY_IS_MARK (_hb_glyph_info_get_general_category (&info[j])))
|
| break;
|
|
|
| position_around_base (plan, font, buffer, i, j);
|
| @@ -432,15 +436,13 @@ _hb_ot_shape_fallback_kern (const hb_ot_shape_plan_t *plan,
|
| {
|
| if (!plan->has_kern) return;
|
|
|
| - unsigned int count = buffer->len;
|
| -
|
| OT::hb_apply_context_t c (1, font, buffer);
|
| c.set_lookup_mask (plan->kern_mask);
|
| c.set_lookup_props (OT::LookupFlag::IgnoreMarks);
|
|
|
| + unsigned int count = buffer->len;
|
| hb_glyph_info_t *info = buffer->info;
|
| hb_glyph_position_t *pos = buffer->pos;
|
| -
|
| for (unsigned int idx = 0; idx < count;)
|
| {
|
| OT::hb_apply_context_t::skipping_forward_iterator_t skippy_iter (&c, idx, 1);
|
|
|