Imported Upstream version 0.9.35
[platform/upstream/harfbuzz.git] / util / shape-consumer.hh
index bf1a22d..422c8cd 100644 (file)
@@ -34,8 +34,10 @@ template <typename output_t>
 struct shape_consumer_t
 {
   shape_consumer_t (option_parser_t *parser)
-                 : shaper (parser),
-                   output (parser) {}
+                 : failed (false),
+                   shaper (parser),
+                   output (parser),
+                   font (NULL) {}
 
   void init (const font_options_t *font_opts)
   {
@@ -51,14 +53,17 @@ struct shape_consumer_t
   {
     output.new_line ();
 
-    shaper.populate_buffer (buffer, text, text_len, text_before, text_after);
-    output.consume_text (buffer, text, text_len, shaper.utf8_clusters);
-
-    if (!shaper.shape (font, buffer)) {
-      failed = true;
-      hb_buffer_set_length (buffer, 0);
-      output.shape_failed (buffer, text, text_len, shaper.utf8_clusters);
-      return;
+    for (unsigned int n = shaper.num_iterations; n; n--)
+    {
+      shaper.populate_buffer (buffer, text, text_len, text_before, text_after);
+      if (n == 1)
+       output.consume_text (buffer, text, text_len, shaper.utf8_clusters);
+      if (!shaper.shape (font, buffer)) {
+       failed = true;
+       hb_buffer_set_length (buffer, 0);
+       output.shape_failed (buffer, text, text_len, shaper.utf8_clusters);
+       return;
+      }
     }
 
     output.consume_glyphs (buffer, text, text_len, shaper.utf8_clusters);