[pango/harfbuzz-ng-external] [HB] Fix cluster setting with recent HB change



commit 26475e516f2384efaefe3dd97bd99f2176291354
Author: Behdad Esfahbod <behdad behdad org>
Date:   Thu Jul 21 12:00:36 2011 -0400

    [HB] Fix cluster setting with recent HB change

 modules/basic/basic-fc.c |    9 ++++++++-
 1 files changed, 8 insertions(+), 1 deletions(-)
---
diff --git a/modules/basic/basic-fc.c b/modules/basic/basic-fc.c
index 4283247..e1e7aa1 100644
--- a/modules/basic/basic-fc.c
+++ b/modules/basic/basic-fc.c
@@ -293,7 +293,14 @@ basic_engine_shape (PangoEngineShape *engine G_GNUC_UNUSED,
   for (i = 0; i < num_glyphs; i++)
     {
       glyphs->glyphs[i].glyph = hb_glyph->codepoint;
-      glyphs->log_clusters[i] = hb_glyph->cluster;
+      if (i && glyphs->log_clusters[i-1] != hb_glyph->cluster) {
+	GUnicodeType t = g_unichar_type (g_utf8_get_char (text + hb_glyph->cluster));
+	if ((1<<t) & ((1<<G_UNICODE_COMBINING_MARK)|(1<<G_UNICODE_ENCLOSING_MARK)|(1<<G_UNICODE_NON_SPACING_MARK)))
+	  glyphs->log_clusters[i] = last_cluster;
+	else
+	  glyphs->log_clusters[i] = hb_glyph->cluster;
+      } else
+	glyphs->log_clusters[i] = hb_glyph->cluster;
       glyphs->glyphs[i].attr.is_cluster_start = glyphs->log_clusters[i] != last_cluster;
       last_cluster = glyphs->log_clusters[i];
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]