When forming clusters, participate all mark types
authorBehdad Esfahbod <behdad@behdad.org>
Thu, 21 Jul 2011 04:14:01 +0000 (00:14 -0400)
committerBehdad Esfahbod <behdad@behdad.org>
Thu, 21 Jul 2011 04:14:01 +0000 (00:14 -0400)
src/hb-ot-shape.cc

index 7a84d9b..a9a8a7a 100644 (file)
@@ -202,8 +202,10 @@ hb_form_clusters (hb_ot_shape_context_t *c)
 {
   unsigned int count = c->buffer->len;
   for (unsigned int i = 1; i < count; i++)
-    /* TODO: Match other mark types too? */
-    if (c->buffer->info[i].general_category() == HB_UNICODE_GENERAL_CATEGORY_NON_SPACING_MARK)
+    if (FLAG (c->buffer->info[i].general_category()) &
+       (FLAG (HB_UNICODE_GENERAL_CATEGORY_SPACING_MARK) |
+        FLAG (HB_UNICODE_GENERAL_CATEGORY_ENCLOSING_MARK) |
+        FLAG (HB_UNICODE_GENERAL_CATEGORY_NON_SPACING_MARK)))
       c->buffer->info[i].cluster = c->buffer->info[i - 1].cluster;
 }