From 075895364435ee88936696bcb5457283c4bb1a29 Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Fri, 5 Jan 2018 15:08:28 +0000 Subject: [PATCH] [indic] Remove main Khmer stuff --- src/hb-ot-shape-complex-indic.cc | 73 +------------------------------- 1 file changed, 2 insertions(+), 71 deletions(-) diff --git a/src/hb-ot-shape-complex-indic.cc b/src/hb-ot-shape-complex-indic.cc index 97d6d3828..a970f4b7f 100644 --- a/src/hb-ot-shape-complex-indic.cc +++ b/src/hb-ot-shape-complex-indic.cc @@ -49,7 +49,6 @@ #define IS_KNDA(u) (IN_HALF_BLOCK (u, 0x0C80u)) #define IS_MLYM(u) (IN_HALF_BLOCK (u, 0x0D00u)) #define IS_SINH(u) (IN_HALF_BLOCK (u, 0x0D80u)) -#define IS_KHMR(u) (IN_HALF_BLOCK (u, 0x1780u)) #define MATRA_POS_LEFT(u) POS_PRE_M @@ -64,7 +63,6 @@ IS_KNDA(u) ? (u < 0x0CC3u || u > 0xCD6u ? POS_BEFORE_SUB : POS_AFTER_SUB) : \ IS_MLYM(u) ? POS_AFTER_POST : \ IS_SINH(u) ? POS_AFTER_SUB : \ - IS_KHMR(u) ? POS_AFTER_POST : \ /*default*/ POS_AFTER_SUB \ ) #define MATRA_POS_TOP(u) ( /* BENG and MLYM don't have top matras. */ \ @@ -76,7 +74,6 @@ IS_TELU(u) ? POS_BEFORE_SUB : \ IS_KNDA(u) ? POS_BEFORE_SUB : \ IS_SINH(u) ? POS_AFTER_SUB : \ - IS_KHMR(u) ? POS_AFTER_POST : \ /*default*/ POS_AFTER_SUB \ ) #define MATRA_POS_BOTTOM(u) ( \ @@ -90,7 +87,6 @@ IS_KNDA(u) ? POS_BEFORE_SUB : \ IS_MLYM(u) ? POS_AFTER_POST : \ IS_SINH(u) ? POS_AFTER_SUB : \ - IS_KHMR(u) ? POS_AFTER_POST : \ /*default*/ POS_AFTER_SUB \ ) @@ -124,8 +120,6 @@ static const hb_codepoint_t ra_chars[] = { 0x0D30u, /* Malayalam */ /* No Reph, Logical Repha */ 0x0DBBu, /* Sinhala */ /* Reph formed only with ZWJ */ - - 0x179Au, /* Khmer */ /* No Reph, Visual Repha */ }; static inline bool @@ -200,14 +194,6 @@ set_indic_properties (hb_glyph_info_t &info) cat = OT_Symbol; static_assert (((int) INDIC_SYLLABIC_CATEGORY_AVAGRAHA == OT_Symbol), ""); } - else if (unlikely (hb_in_range (u, 0x17CDu, 0x17D1u) || - u == 0x17CBu || u == 0x17D3u || u == 0x17DDu)) /* Khmer Various signs */ - { - /* These can occur mid-syllable (eg. before matras), even though Unicode marks them as Syllable_Modifier. - * https://github.com/roozbehp/unicode-data/issues/5 */ - cat = OT_M; - pos = POS_ABOVE_C; - } else if (unlikely (u == 0x0A51u)) { /* https://github.com/harfbuzz/harfbuzz/issues/524 */ @@ -224,7 +210,6 @@ set_indic_properties (hb_glyph_info_t &info) else if (unlikely (u == 0x0980u)) cat = OT_PLACEHOLDER; /* https://github.com/harfbuzz/harfbuzz/issues/538 */ else if (unlikely (u == 0x0C80u)) cat = OT_PLACEHOLDER; /* https://github.com/harfbuzz/harfbuzz/pull/623 */ - else if (unlikely (u == 0x17C6u)) cat = OT_N; /* Khmer Bindu doesn't like to be repositioned. */ else if (unlikely (hb_in_range (u, 0x2010u, 0x2011u))) cat = OT_PLACEHOLDER; else if (unlikely (u == 0x25CCu)) cat = OT_DOTTEDCIRCLE; @@ -271,7 +256,6 @@ set_indic_properties (hb_glyph_info_t &info) */ enum base_position_t { - BASE_POS_FIRST, BASE_POS_LAST_SINHALA, BASE_POS_LAST }; @@ -280,13 +264,11 @@ enum reph_position_t { REPH_POS_BEFORE_SUB = POS_BEFORE_SUB, REPH_POS_AFTER_SUB = POS_AFTER_SUB, REPH_POS_BEFORE_POST = POS_BEFORE_POST, - REPH_POS_AFTER_POST = POS_AFTER_POST, - REPH_POS_DONT_CARE = POS_RA_TO_BECOME_REPH + REPH_POS_AFTER_POST = POS_AFTER_POST }; enum reph_mode_t { REPH_MODE_IMPLICIT, /* Reph formed out of initial Ra,H sequence. */ REPH_MODE_EXPLICIT, /* Reph formed out of initial Ra,H,ZWJ sequence. */ - REPH_MODE_VIS_REPHA, /* Encoded Repha character, no reordering needed. */ REPH_MODE_LOG_REPHA /* Encoded Repha character, needs reordering. */ }; enum blwf_mode_t { @@ -319,7 +301,6 @@ static const indic_config_t indic_configs[] = {HB_SCRIPT_MALAYALAM, true, 0x0D4Du,BASE_POS_LAST, REPH_POS_AFTER_MAIN, REPH_MODE_LOG_REPHA,BLWF_MODE_PRE_AND_POST}, {HB_SCRIPT_SINHALA, false,0x0DCAu,BASE_POS_LAST_SINHALA, REPH_POS_AFTER_MAIN, REPH_MODE_EXPLICIT, BLWF_MODE_PRE_AND_POST}, - {HB_SCRIPT_KHMER, false,0x17D2u,BASE_POS_FIRST,REPH_POS_DONT_CARE, REPH_MODE_VIS_REPHA,BLWF_MODE_PRE_AND_POST}, }; @@ -351,7 +332,6 @@ indic_features[] = {HB_TAG('p','s','t','f'), F_NONE}, {HB_TAG('v','a','t','u'), F_GLOBAL}, {HB_TAG('c','j','c','t'), F_GLOBAL}, - {HB_TAG('c','f','a','r'), F_NONE}, /* * Other features. * These features are applied all at once, after final_reordering. @@ -385,7 +365,6 @@ enum { PSTF, _VATU, _CJCT, - CFAR, INIT, _PRES, @@ -452,17 +431,6 @@ collect_features_indic (hb_ot_shape_planner_t *plan) static void override_features_indic (hb_ot_shape_planner_t *plan) { - /* Uniscribe does not apply 'kern' in Khmer. */ - if (hb_options ().uniscribe_bug_compatible) - { - switch ((hb_tag_t) plan->props.script) - { - case HB_SCRIPT_KHMER: - plan->map.add_feature (HB_TAG('k','e','r','n'), 0, F_GLOBAL); - break; - } - } - plan->map.add_feature (HB_TAG('l','i','g','a'), 0, F_GLOBAL); } @@ -730,8 +698,7 @@ initial_reordering_consonant_syllable (const hb_ot_shape_plan_t *plan, * and has more than one consonant, Ra is excluded from candidates for * base consonants. */ unsigned int limit = start; - if (indic_plan->config->reph_pos != REPH_POS_DONT_CARE && - indic_plan->mask_array[RPHF] && + if (indic_plan->mask_array[RPHF] && start + 3 <= end && ( (indic_plan->config->reph_mode == REPH_MODE_IMPLICIT && !is_joiner (info[start + 2])) || @@ -840,22 +807,6 @@ initial_reordering_consonant_syllable (const hb_ot_shape_plan_t *plan, info[i].indic_position() = POS_BELOW_C; } break; - - case BASE_POS_FIRST: - { - /* The first consonant is always the base. */ - - assert (indic_plan->config->reph_mode == REPH_MODE_VIS_REPHA); - assert (!has_reph); - - base = start; - - /* Mark all subsequent consonants as below. */ - for (unsigned int i = base + 1; i < end; i++) - if (is_consonant (info[i])) - info[i].indic_position() = POS_BELOW_C; - } - break; } /* -> If the syllable starts with Ra + Halant (in a script that has Reph) @@ -1133,17 +1084,6 @@ initial_reordering_consonant_syllable (const hb_ot_shape_plan_t *plan, { for (unsigned int j = 0; j < pref_len; j++) info[i++].mask |= indic_plan->mask_array[PREF]; - - /* Mark the subsequent stuff with 'cfar'. Used in Khmer. - * Read the feature spec. - * This allows distinguishing the following cases with MS Khmer fonts: - * U+1784,U+17D2,U+179A,U+17D2,U+1782 - * U+1784,U+17D2,U+1782,U+17D2,U+179A - */ - if (indic_plan->mask_array[CFAR]) - for (; i < end; i++) - info[i].mask |= indic_plan->mask_array[CFAR]; - break; } } @@ -1481,8 +1421,6 @@ final_reordering_syllable (const hb_ot_shape_plan_t *plan, unsigned int new_reph_pos; reph_position_t reph_pos = indic_plan->config->reph_pos; - assert (reph_pos != REPH_POS_DONT_CARE); - /* 1. If reph should be positioned after post-base consonant forms, * proceed to step 5. */ @@ -1766,13 +1704,6 @@ decompose_indic (const hb_ot_shape_normalize_context_t *c, * Decompose split matras that don't have Unicode decompositions. */ - /* Khmer */ - case 0x17BEu : *a = 0x17C1u; *b= 0x17BEu; return true; - case 0x17BFu : *a = 0x17C1u; *b= 0x17BFu; return true; - case 0x17C0u : *a = 0x17C1u; *b= 0x17C0u; return true; - case 0x17C4u : *a = 0x17C1u; *b= 0x17C4u; return true; - case 0x17C5u : *a = 0x17C1u; *b= 0x17C5u; return true; - #if 0 /* Gujarati */ /* This one has no decomposition in Unicode, but needs no decomposition either. */