From c7a84917208528040aaf9ad0a9a0b26aabeabc9c Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Thu, 6 Jun 2013 20:17:32 -0400 Subject: [PATCH] Skip over multiple variation selectors in a row --- src/hb-ot-shape-normalize.cc | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/hb-ot-shape-normalize.cc b/src/hb-ot-shape-normalize.cc index 7f83d9d25..51ef77b9a 100644 --- a/src/hb-ot-shape-normalize.cc +++ b/src/hb-ot-shape-normalize.cc @@ -219,6 +219,12 @@ handle_variation_selector_cluster (const hb_ot_shape_normalize_context_t *c, uns /* The next two lines are some ugly lines... But work. */ c->font->get_glyph (buffer->cur().codepoint, buffer->cur(+1).codepoint, &buffer->cur().glyph_index()); buffer->replace_glyphs (2, 1, &buffer->cur().codepoint); + /* Skip any further variation selectors. */ + while (buffer->idx < end && unlikely (buffer->unicode->is_variation_selector (buffer->cur().codepoint))) + { + set_glyph (buffer->cur(), c->font); + buffer->next_glyph (); + } } else { set_glyph (buffer->cur(), c->font); buffer->next_glyph ();