Fix cluster calculation for non-LTR text
authorBehdad Esfahbod <behdad@behdad.org>
Thu, 21 Jul 2011 04:28:57 +0000 (00:28 -0400)
committerBehdad Esfahbod <behdad@behdad.org>
Thu, 21 Jul 2011 04:28:57 +0000 (00:28 -0400)
TODO
src/hb-buffer.cc

diff --git a/TODO b/TODO
index e15e295..04852c6 100644 (file)
--- a/TODO
+++ b/TODO
@@ -1,12 +1,6 @@
 General fixes:
 =============
 
-- Instead of forming clusters immediately, only do it if we are reversing
-  the text.  We'd need a separate bit to indicate cluster start then.
-
-- Right now, BTW, for non-native direction runs, we get the cluster wrong...
-  Should do min(input-glyphs.cluster)
-
 - Fix TT 'kern' on/off and GPOS interaction (move kerning before GPOS)
 
 - Do proper rounding when scaling from font space?
index 0c16303..b65ddbb 100644 (file)
@@ -386,6 +386,11 @@ _hb_buffer_replace_glyphs_be16 (hb_buffer_t *buffer,
   }
 
   hb_glyph_info_t orig_info = buffer->info[buffer->i];
+  for (unsigned int i = 1; i < num_in; i++)
+  {
+    hb_glyph_info_t *info = &buffer->info[buffer->i + i];
+    orig_info.cluster = MIN (orig_info.cluster, info->cluster);
+  }
 
   for (unsigned int i = 0; i < num_out; i++)
   {