Fix ligature component of a mark happening after a ligature within a ligature!
authorBehdad Esfahbod <behdad@behdad.org>
Thu, 17 Dec 2015 15:23:09 +0000 (15:23 +0000)
committerBehdad Esfahbod <behdad@behdad.org>
Thu, 17 Dec 2015 15:23:09 +0000 (15:23 +0000)
Say, if we are ligating "A B_C m D", then previously 'm' was being
attached to 'B' in the combined A_B_C_D ligature.  Now we attach it
to 'C'.  No test for this though :(.

src/hb-ot-layout-gsubgpos-private.hh

index 11ad7e5..d6db005 100644 (file)
@@ -847,7 +847,7 @@ static inline bool ligate_input (hb_apply_context_t *c,
       if (!is_mark_ligature) {
         unsigned int this_comp = _hb_glyph_info_get_lig_comp (&buffer->cur());
        if (this_comp == 0)
-         this_comp = 1;
+         this_comp = last_num_components;
        unsigned int new_lig_comp = components_so_far - last_num_components +
                                    MIN (this_comp, last_num_components);
          _hb_glyph_info_set_lig_props_for_mark (&buffer->cur(), lig_id, new_lig_comp);