[ot] Fix VariationStore evaluation algorithm

Ouch!  Missing coords should still be evaluated as coord=0, which
most of the time results in a factor of 0.  We were skipping these,
which was equivalent to a factor of 1.

Fixes https://github.com/harfbuzz/harfbuzz/issues/652
pull/683/head
Behdad Esfahbod 7 years ago
parent a3afdd1e08
commit 54b2b93722
  1. 5
      src/hb-ot-layout-common-private.hh

@ -1275,10 +1275,11 @@ struct VarRegionList
const VarRegionAxis *axes = axesZ + (region_index * axisCount);
float v = 1.;
unsigned int count = MIN (coord_len, (unsigned int) axisCount);
unsigned int count = axisCount;
for (unsigned int i = 0; i < count; i++)
{
float factor = axes[i].evaluate (coords[i]);
int coord = i < coord_len ? coords[i] : 0;
float factor = axes[i].evaluate (coord);
if (factor == 0.)
return 0.;
v *= factor;

Loading…
Cancel
Save