[util] Fix cluster sweeping during --verify
authorBehdad Esfahbod <behdad@behdad.org>
Thu, 31 Aug 2017 00:25:10 +0000 (17:25 -0700)
committerBehdad Esfahbod <behdad@behdad.org>
Thu, 31 Aug 2017 00:26:07 +0000 (17:26 -0700)
If *I* get this wrong in 2017, I have no idea how others get their head around
cluster math...

Fixes tests/arabic-fallback-shaping.tests

util/options.hh

index 42bb8c4..b24ab0c 100644 (file)
@@ -366,13 +366,18 @@ struct shape_options_t : option_group_t
       }
       else
       {
-       unsigned int cluster = info[end].cluster;
        if (forward)
-         while (text_end < num_chars && text[text_end].cluster != cluster)
+       {
+         unsigned int cluster = info[end].cluster;
+         while (text_end < num_chars && text[text_end].cluster < cluster)
            text_end++;
+       }
        else
-         while (text_start && text[text_start - 1].cluster != cluster)
+       {
+         unsigned int cluster = info[end - 1].cluster;
+         while (text_start && text[text_start - 1].cluster >= cluster)
            text_start--;
+       }
       }
       assert (text_start < text_end);