| Index: third_party/harfbuzz-ng/src/hb-ot-shape-complex-hebrew.cc
|
| diff --git a/third_party/harfbuzz-ng/src/hb-ot-shape-complex-default.cc b/third_party/harfbuzz-ng/src/hb-ot-shape-complex-hebrew.cc
|
| similarity index 73%
|
| copy from third_party/harfbuzz-ng/src/hb-ot-shape-complex-default.cc
|
| copy to third_party/harfbuzz-ng/src/hb-ot-shape-complex-hebrew.cc
|
| index d6afa0e1c114ef9bf334e6bd1df7f16da4b4396a..6bb6043f652cfd533da2fa857dc771c6b04d424c 100644
|
| --- a/third_party/harfbuzz-ng/src/hb-ot-shape-complex-default.cc
|
| +++ b/third_party/harfbuzz-ng/src/hb-ot-shape-complex-hebrew.cc
|
| @@ -27,61 +27,11 @@
|
| #include "hb-ot-shape-complex-private.hh"
|
|
|
|
|
| -/* TODO Add kana, and other small shapers here */
|
| -
|
| -
|
| -/* The default shaper *only* adds additional per-script features.*/
|
| -
|
| -static const hb_tag_t hangul_features[] =
|
| -{
|
| - HB_TAG('l','j','m','o'),
|
| - HB_TAG('v','j','m','o'),
|
| - HB_TAG('t','j','m','o'),
|
| - HB_TAG_NONE
|
| -};
|
| -
|
| -static const hb_tag_t tibetan_features[] =
|
| -{
|
| - HB_TAG('a','b','v','s'),
|
| - HB_TAG('b','l','w','s'),
|
| - HB_TAG('a','b','v','m'),
|
| - HB_TAG('b','l','w','m'),
|
| - HB_TAG_NONE
|
| -};
|
| -
|
| -static void
|
| -collect_features_default (hb_ot_shape_planner_t *plan)
|
| -{
|
| - const hb_tag_t *script_features = NULL;
|
| -
|
| - switch ((hb_tag_t) plan->props.script)
|
| - {
|
| - /* Unicode-1.1 additions */
|
| - case HB_SCRIPT_HANGUL:
|
| - script_features = hangul_features;
|
| - break;
|
| -
|
| - /* Unicode-2.0 additions */
|
| - case HB_SCRIPT_TIBETAN:
|
| - script_features = tibetan_features;
|
| - break;
|
| - }
|
| -
|
| - for (; script_features && *script_features; script_features++)
|
| - plan->map.add_global_bool_feature (*script_features);
|
| -}
|
| -
|
| -static hb_ot_shape_normalization_mode_t
|
| -normalization_preference_default (const hb_segment_properties_t *props)
|
| -{
|
| - return HB_OT_SHAPE_NORMALIZATION_MODE_COMPOSED_DIACRITICS;
|
| -}
|
| -
|
| static bool
|
| -compose_default (const hb_ot_shape_normalize_context_t *c,
|
| - hb_codepoint_t a,
|
| - hb_codepoint_t b,
|
| - hb_codepoint_t *ab)
|
| +compose_hebrew (const hb_ot_shape_normalize_context_t *c,
|
| + hb_codepoint_t a,
|
| + hb_codepoint_t b,
|
| + hb_codepoint_t *ab)
|
| {
|
| /* Hebrew presentation-form shaping.
|
| * https://bugzilla.mozilla.org/show_bug.cgi?id=728866
|
| @@ -120,7 +70,8 @@ compose_default (const hb_ot_shape_normalize_context_t *c,
|
|
|
| bool found = c->unicode->compose (a, b, ab);
|
|
|
| - if (!found && (b & ~0x7F) == 0x0580) {
|
| + if (!found && !c->plan->has_mark)
|
| + {
|
| /* Special-case Hebrew presentation forms that are excluded from
|
| * standard normalization, but wanted for old fonts. */
|
| switch (b) {
|
| @@ -203,18 +154,19 @@ compose_default (const hb_ot_shape_normalize_context_t *c,
|
| return found;
|
| }
|
|
|
| -const hb_ot_complex_shaper_t _hb_ot_complex_shaper_default =
|
| +
|
| +const hb_ot_complex_shaper_t _hb_ot_complex_shaper_hebrew =
|
| {
|
| - "default",
|
| - collect_features_default,
|
| + "hebrew",
|
| + NULL, /* collect_features */
|
| NULL, /* override_features */
|
| NULL, /* data_create */
|
| NULL, /* data_destroy */
|
| NULL, /* preprocess_text */
|
| - normalization_preference_default,
|
| + HB_OT_SHAPE_NORMALIZATION_MODE_DEFAULT,
|
| NULL, /* decompose */
|
| - compose_default,
|
| + compose_hebrew,
|
| NULL, /* setup_masks */
|
| - HB_OT_SHAPE_ZERO_WIDTH_MARKS_BY_UNICODE_LATE,
|
| + HB_OT_SHAPE_ZERO_WIDTH_MARKS_DEFAULT,
|
| true, /* fallback_position */
|
| };
|
|
|