[HarfBuzz] harfbuzz: Branch 'master'

Behdad Esfahbod behdad at kemper.freedesktop.org
Tue Jul 31 19:49:30 UTC 2018


 src/hb-ot-shape-complex-khmer.cc |   22 +++++++++++++++++-----
 1 file changed, 17 insertions(+), 5 deletions(-)

New commits:
commit 7c658ea2f20a77cac35e8988e54316425396198a
Author: Behdad Esfahbod <behdad at behdad.org>
Date:   Tue Jul 31 12:49:02 2018 -0700

    [khmer] Apply ccmp after basic features
    
    Part of https://github.com/harfbuzz/harfbuzz/issues/974

diff --git a/src/hb-ot-shape-complex-khmer.cc b/src/hb-ot-shape-complex-khmer.cc
index ba5b64e9..a5f357a5 100644
--- a/src/hb-ot-shape-complex-khmer.cc
+++ b/src/hb-ot-shape-complex-khmer.cc
@@ -105,23 +105,35 @@ collect_features_khmer (hb_ot_shape_planner_t *plan)
 
   /* Do this before any lookups have been applied. */
   map->add_gsub_pause (setup_syllables);
+  map->add_gsub_pause (reorder);
 
   map->add_global_bool_feature (HB_TAG('l','o','c','l'));
-  /* The Indic specs do not require ccmp, but we apply it here since if
-   * there is a use of it, it's typically at the beginning. */
-  map->add_global_bool_feature (HB_TAG('c','c','m','p'));
-
+  map->add_gsub_pause (nullptr);
 
   unsigned int i = 0;
-  map->add_gsub_pause (reorder);
   for (; i < KHMER_BASIC_FEATURES; i++) {
     map->add_feature (khmer_features[i].tag, 1, khmer_features[i].flags | F_MANUAL_ZWJ | F_MANUAL_ZWNJ);
     map->add_gsub_pause (nullptr);
   }
+
+  /* Testing suggests that Uniscribe applies 'ccmp' here, NOT before
+   * the basic features.  Test with KhmerUI.ttf and the following
+   * three sequences:
+   *
+   *   U+1789,U+17BC
+   *   U+1789,U+17D2,U+1789
+   *   U+1789,U+17D2,U+1789,U+17BC
+   *
+   * https://github.com/harfbuzz/harfbuzz/issues/974
+   */
+  map->add_global_bool_feature (HB_TAG('c','c','m','p'));
+  map->add_gsub_pause (nullptr);
+
   for (; i < KHMER_NUM_FEATURES; i++) {
     map->add_feature (khmer_features[i].tag, 1, khmer_features[i].flags | F_MANUAL_ZWJ | F_MANUAL_ZWNJ);
   }
 
+
   map->add_global_bool_feature (HB_TAG('c','a','l','t'));
   map->add_global_bool_feature (HB_TAG('c','l','i','g'));
 


More information about the HarfBuzz mailing list