Don't use replace_glyphs_be for MultipleSubst
authorBehdad Esfahbod <behdad@behdad.org>
Sat, 9 Jun 2012 01:44:06 +0000 (21:44 -0400)
committerBehdad Esfahbod <behdad@behdad.org>
Sat, 9 Jun 2012 01:44:06 +0000 (21:44 -0400)
src/hb-ot-layout-gsub-table.hh
src/hb-ot-layout-gsubgpos-private.hh

index 41b88b7..47c000d 100644 (file)
@@ -213,7 +213,10 @@ struct Sequence
     if (unlikely (!substitute.len)) return TRACE_RETURN (false);
 
     unsigned int klass = c->property & HB_OT_LAYOUT_GLYPH_CLASS_LIGATURE ? HB_OT_LAYOUT_GLYPH_CLASS_BASE_GLYPH : 0;
-    c->replace_glyphs_be16 (1, substitute.len, (const char *) substitute.array, klass);
+    unsigned int count = substitute.len;
+    for (unsigned int i = 0; i < count; i++)
+      c->output_glyph (substitute.array[i], klass);
+    c->buffer->skip_glyph ();
 
     return TRACE_RETURN (true);
   }
index a33bce6..bc8d9bc 100644 (file)
@@ -221,7 +221,12 @@ struct hb_apply_context_t
   }
 
 
-
+  inline void output_glyph (hb_codepoint_t glyph_index,
+                           unsigned int klass = 0) const
+  {
+    buffer->cur().props_cache() = klass; /*XXX if has gdef? */
+    buffer->output_glyph (glyph_index);
+  }
   inline void replace_glyph (hb_codepoint_t glyph_index,
                             unsigned int klass = 0) const
   {