* src/truetype/ttgxvar.c (ft_var_get_item_delta): Optimized.
This commit is contained in:
parent
c13635ee4b
commit
300da33d61
|
@ -1,3 +1,7 @@
|
||||||
|
2018-10-31 Alexei Podtelezhnikov <apodtele@gmail.com>
|
||||||
|
|
||||||
|
* src/truetype/ttgxvar.c (ft_var_get_item_delta): Optimized.
|
||||||
|
|
||||||
2018-10-29 Werner Lemberg <wl@gnu.org>
|
2018-10-29 Werner Lemberg <wl@gnu.org>
|
||||||
|
|
||||||
[base] Fix numeric overflow.
|
[base] Fix numeric overflow.
|
||||||
|
|
|
@ -893,47 +893,43 @@
|
||||||
/* inner loop steps through axes in this region */
|
/* inner loop steps through axes in this region */
|
||||||
for ( j = 0; j < itemStore->axisCount; j++, axis++ )
|
for ( j = 0; j < itemStore->axisCount; j++, axis++ )
|
||||||
{
|
{
|
||||||
FT_Fixed axisScalar;
|
|
||||||
|
|
||||||
|
|
||||||
/* compute the scalar contribution of this axis; */
|
/* compute the scalar contribution of this axis; */
|
||||||
/* ignore invalid ranges */
|
/* ignore invalid ranges */
|
||||||
if ( axis->startCoord > axis->peakCoord ||
|
if ( axis->startCoord > axis->peakCoord ||
|
||||||
axis->peakCoord > axis->endCoord )
|
axis->peakCoord > axis->endCoord )
|
||||||
axisScalar = FT_FIXED_ONE;
|
continue;
|
||||||
|
|
||||||
else if ( axis->startCoord < 0 &&
|
else if ( axis->startCoord < 0 &&
|
||||||
axis->endCoord > 0 &&
|
axis->endCoord > 0 &&
|
||||||
axis->peakCoord != 0 )
|
axis->peakCoord != 0 )
|
||||||
axisScalar = FT_FIXED_ONE;
|
continue;
|
||||||
|
|
||||||
/* peak of 0 means ignore this axis */
|
/* peak of 0 means ignore this axis */
|
||||||
else if ( axis->peakCoord == 0 )
|
else if ( axis->peakCoord == 0 )
|
||||||
axisScalar = FT_FIXED_ONE;
|
continue;
|
||||||
|
|
||||||
/* ignore this region if coords are out of range */
|
/* ignore this region if coords are out of range */
|
||||||
else if ( face->blend->normalizedcoords[j] < axis->startCoord ||
|
else if ( face->blend->normalizedcoords[j] <= axis->startCoord ||
|
||||||
face->blend->normalizedcoords[j] > axis->endCoord )
|
face->blend->normalizedcoords[j] >= axis->endCoord )
|
||||||
axisScalar = 0;
|
|
||||||
|
|
||||||
/* calculate a proportional factor */
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
if ( face->blend->normalizedcoords[j] == axis->peakCoord )
|
scalar = 0;
|
||||||
axisScalar = FT_FIXED_ONE;
|
break;
|
||||||
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 );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* take product of all the axis scalars */
|
else if ( face->blend->normalizedcoords[j] == axis->peakCoord )
|
||||||
scalar = FT_MulFix( scalar, axisScalar );
|
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 */
|
} /* per-axis loop */
|
||||||
|
|
||||||
/* get the scaled delta for this region */
|
/* get the scaled delta for this region */
|
||||||
|
|
Loading…
Reference in New Issue