And you broke it. Four of the harfbuzz/test/shaping/data/text-rendering-tests fail with this.
I actually appreciate if you don't touch that code. It's been put in place *very* carefully. On Wed, Oct 31, 2018 at 10:02 PM Alexei Podtelezhnikov <[email protected]> wrote: > branch: master > commit 300da33d61512fe98dc6f34e68fbc330120600ba > Author: Alexei Podtelezhnikov <[email protected]> > Commit: Alexei Podtelezhnikov <[email protected]> > > * src/truetype/ttgxvar.c (ft_var_get_item_delta): Optimized. > --- > ChangeLog | 4 ++++ > src/truetype/ttgxvar.c | 44 ++++++++++++++++++++------------------------ > 2 files changed, 24 insertions(+), 24 deletions(-) > > diff --git a/ChangeLog b/ChangeLog > index 94879e5..6379771 100644 > --- a/ChangeLog > +++ b/ChangeLog > @@ -1,3 +1,7 @@ > +2018-10-31 Alexei Podtelezhnikov <[email protected]> > + > + * src/truetype/ttgxvar.c (ft_var_get_item_delta): Optimized. > + > 2018-10-29 Werner Lemberg <[email protected]> > > [base] Fix numeric overflow. > diff --git a/src/truetype/ttgxvar.c b/src/truetype/ttgxvar.c > index 9f41d0e..336fad1 100644 > --- a/src/truetype/ttgxvar.c > +++ b/src/truetype/ttgxvar.c > @@ -893,47 +893,43 @@ > /* inner loop steps through axes in this region */ > for ( j = 0; j < itemStore->axisCount; j++, axis++ ) > { > - FT_Fixed axisScalar; > - > - > /* compute the scalar contribution of this axis; */ > /* ignore invalid ranges */ > if ( axis->startCoord > axis->peakCoord || > axis->peakCoord > axis->endCoord ) > - axisScalar = FT_FIXED_ONE; > + continue; > > else if ( axis->startCoord < 0 && > axis->endCoord > 0 && > axis->peakCoord != 0 ) > - axisScalar = FT_FIXED_ONE; > + continue; > > /* peak of 0 means ignore this axis */ > else if ( axis->peakCoord == 0 ) > - axisScalar = FT_FIXED_ONE; > + continue; > > /* ignore this region if coords are out of range */ > - else if ( face->blend->normalizedcoords[j] < axis->startCoord || > - face->blend->normalizedcoords[j] > axis->endCoord ) > - axisScalar = 0; > - > - /* calculate a proportional factor */ > - else > + else if ( face->blend->normalizedcoords[j] <= axis->startCoord || > + face->blend->normalizedcoords[j] >= axis->endCoord ) > { > - if ( face->blend->normalizedcoords[j] == axis->peakCoord ) > - axisScalar = FT_FIXED_ONE; > - else if ( face->blend->normalizedcoords[j] < axis->peakCoord ) > - axisScalar = > - FT_DivFix( face->blend->normalizedcoords[j] - > axis->startCoord, > - axis->peakCoord - axis->startCoord ); > - else > - axisScalar = > - FT_DivFix( axis->endCoord - > face->blend->normalizedcoords[j], > - axis->endCoord - axis->peakCoord ); > + scalar = 0; > + break; > } > > - /* take product of all the axis scalars */ > - scalar = FT_MulFix( scalar, axisScalar ); > + else if ( face->blend->normalizedcoords[j] == axis->peakCoord ) > + continue; > > + /* cumulative product of all the axis scalars */ > + else if ( face->blend->normalizedcoords[j] < axis->peakCoord ) > + scalar = > + FT_MulDiv( scalar, > + face->blend->normalizedcoords[j] - > axis->startCoord, > + axis->peakCoord - axis->startCoord ); > + else > + scalar = > + FT_MulDiv( scalar, > + axis->endCoord - face->blend->normalizedcoords[j], > + axis->endCoord - axis->peakCoord ); > } /* per-axis loop */ > > /* get the scaled delta for this region */ > > -- behdad http://behdad.org/
_______________________________________________ Freetype-devel mailing list [email protected] https://lists.nongnu.org/mailman/listinfo/freetype-devel
