Eg.

../../../../util/hb-shape
../../../../../test/shaping/data/text-rendering-tests/fonts/TestHVAROne.otf
--shaper=ot --verify --font-size=1000 --ned --remove-default-ignorables
--font-funcs=ft --variations=wght=1000 --unicodes U+0041,U+0042,U+0043
Actual:   [A|B@520,0|C@1094,0]
Expected: [A|B@584,0|C@1196,0]
1 tests failed.
FAIL tests/HVAR-1.tests (exit status: 1)


On Thu, Nov 1, 2018 at 6:24 PM Behdad Esfahbod <[email protected]> wrote:

> 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/
>


-- 
behdad
http://behdad.org/
_______________________________________________
Freetype-devel mailing list
[email protected]
https://lists.nongnu.org/mailman/listinfo/freetype-devel

Reply via email to