diff --git a/src/hb-aat-layout-kerx-table.hh b/src/hb-aat-layout-kerx-table.hh index c1b968468bd63427cca5613e2a9e766a1a0b5e58..6bbeda764a0d959dd5a33fa14da265ca21902c4d 100644 --- a/src/hb-aat-layout-kerx-table.hh +++ b/src/hb-aat-layout-kerx-table.hh @@ -295,10 +295,12 @@ struct KerxSubTableFormat1 i++; break; } + unsigned int tuple_count = table->header.tuple_count (); + tuple_count = tuple_count ? tuple_count : 1; for (; i; i--) { unsigned int idx = stack[depth - i]; - int v = actions[i - 1]; + int v = actions[(i - 1) * tuple_count]; /* "The end of the list is marked by an odd value..." * Ignore it. */ @@ -376,9 +378,6 @@ struct KerxSubTableFormat1 if (!c->plan->requested_kerning) return false; - if (header.tuple_count ()) - return_trace (false); /* TODO kerxTupleKern */ - driver_context_t dc (this, c); StateTableDriver driver (machine, c->buffer, c->font->face);