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

Reply via email to