[truetype, type1] Revise the use of FT_MulDiv.
* src/truetype/ttgxvar.c: Updated. * src/truetype/ttobjs.c: Updated. * src/type1/t1load.c: Updated.
This commit is contained in:
parent
74e6a1f26f
commit
4ae9cbb025
@ -1,3 +1,11 @@
|
||||
2012-12-01 Alexei Podtelezhnikov <apodtele@gmail.com>
|
||||
|
||||
[truetype, type1] Revise the use of FT_MulDiv.
|
||||
|
||||
* src/truetype/ttgxvar.c: Updated.
|
||||
* src/truetype/ttobjs.c: Updated.
|
||||
* src/type1/t1load.c: Updated.
|
||||
|
||||
2012-11-30 Werner Lemberg <wl@gnu.org>
|
||||
|
||||
[configure] Preserve customized `ftoption.h'.
|
||||
|
@ -4,7 +4,7 @@
|
||||
/* */
|
||||
/* TrueType GX Font Variation loader */
|
||||
/* */
|
||||
/* Copyright 2004-2011 by */
|
||||
/* Copyright 2004-2012 by */
|
||||
/* David Turner, Robert Wilhelm, Werner Lemberg, and George Williams. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
@ -501,11 +501,9 @@
|
||||
FT_Fixed* im_end_coords )
|
||||
{
|
||||
FT_UInt i;
|
||||
FT_Fixed apply;
|
||||
FT_Fixed temp;
|
||||
FT_Fixed apply = 0x10000L;
|
||||
|
||||
|
||||
apply = 0x10000L;
|
||||
for ( i = 0; i < blend->num_axis; ++i )
|
||||
{
|
||||
if ( tuple_coords[i] == 0 )
|
||||
@ -525,11 +523,10 @@
|
||||
|
||||
else if ( !( tupleIndex & GX_TI_INTERMEDIATE_TUPLE ) )
|
||||
/* not an intermediate tuple */
|
||||
apply = FT_MulDiv( apply,
|
||||
apply = FT_MulFix( apply,
|
||||
blend->normalizedcoords[i] > 0
|
||||
? blend->normalizedcoords[i]
|
||||
: -blend->normalizedcoords[i],
|
||||
0x10000L );
|
||||
: -blend->normalizedcoords[i] );
|
||||
|
||||
else if ( blend->normalizedcoords[i] <= im_start_coords[i] ||
|
||||
blend->normalizedcoords[i] >= im_end_coords[i] )
|
||||
@ -539,20 +536,14 @@
|
||||
}
|
||||
|
||||
else if ( blend->normalizedcoords[i] < tuple_coords[i] )
|
||||
{
|
||||
temp = FT_MulDiv( blend->normalizedcoords[i] - im_start_coords[i],
|
||||
0x10000L,
|
||||
tuple_coords[i] - im_start_coords[i]);
|
||||
apply = FT_MulDiv( apply, temp, 0x10000L );
|
||||
}
|
||||
apply = FT_MulDiv( apply,
|
||||
blend->normalizedcoords[i] - im_start_coords[i],
|
||||
tuple_coords[i] - im_start_coords[i] );
|
||||
|
||||
else
|
||||
{
|
||||
temp = FT_MulDiv( im_end_coords[i] - blend->normalizedcoords[i],
|
||||
0x10000L,
|
||||
im_end_coords[i] - tuple_coords[i] );
|
||||
apply = FT_MulDiv( apply, temp, 0x10000L );
|
||||
}
|
||||
apply = FT_MulDiv( apply,
|
||||
im_end_coords[i] - blend->normalizedcoords[i],
|
||||
im_end_coords[i] - tuple_coords[i] );
|
||||
}
|
||||
|
||||
return apply;
|
||||
@ -1034,19 +1025,11 @@
|
||||
}
|
||||
|
||||
if ( coords[i] < a->def )
|
||||
{
|
||||
normalized[i] = -FT_MulDiv( coords[i] - a->def,
|
||||
0x10000L,
|
||||
a->minimum - a->def );
|
||||
}
|
||||
normalized[i] = -FT_DivFix( coords[i] - a->def, a->minimum - a->def );
|
||||
else if ( a->maximum == a->def )
|
||||
normalized[i] = 0;
|
||||
else
|
||||
{
|
||||
normalized[i] = FT_MulDiv( coords[i] - a->def,
|
||||
0x10000L,
|
||||
a->maximum - a->def );
|
||||
}
|
||||
normalized[i] = FT_DivFix( coords[i] - a->def, a->maximum - a->def );
|
||||
}
|
||||
|
||||
if ( !blend->avar_checked )
|
||||
@ -1061,15 +1044,11 @@
|
||||
if ( normalized[i] < av->correspondence[j].fromCoord )
|
||||
{
|
||||
normalized[i] =
|
||||
FT_MulDiv(
|
||||
FT_MulDiv(
|
||||
normalized[i] - av->correspondence[j - 1].fromCoord,
|
||||
0x10000L,
|
||||
av->correspondence[j].fromCoord -
|
||||
av->correspondence[j - 1].fromCoord ),
|
||||
av->correspondence[j].toCoord -
|
||||
av->correspondence[j - 1].toCoord,
|
||||
0x10000L ) +
|
||||
FT_MulDiv( normalized[i] - av->correspondence[j - 1].fromCoord,
|
||||
av->correspondence[j].toCoord -
|
||||
av->correspondence[j - 1].toCoord,
|
||||
av->correspondence[j].fromCoord -
|
||||
av->correspondence[j - 1].fromCoord ) +
|
||||
av->correspondence[j - 1].toCoord;
|
||||
break;
|
||||
}
|
||||
|
@ -4,7 +4,7 @@
|
||||
/* */
|
||||
/* Objects manager (body). */
|
||||
/* */
|
||||
/* Copyright 1996-2011 */
|
||||
/* Copyright 1996-2012 */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
@ -1190,17 +1190,13 @@
|
||||
size->ttmetrics.scale = metrics->x_scale;
|
||||
size->ttmetrics.ppem = metrics->x_ppem;
|
||||
size->ttmetrics.x_ratio = 0x10000L;
|
||||
size->ttmetrics.y_ratio = FT_MulDiv( metrics->y_ppem,
|
||||
0x10000L,
|
||||
metrics->x_ppem );
|
||||
size->ttmetrics.y_ratio = FT_DivFix( metrics->y_ppem, metrics->x_ppem );
|
||||
}
|
||||
else
|
||||
{
|
||||
size->ttmetrics.scale = metrics->y_scale;
|
||||
size->ttmetrics.ppem = metrics->y_ppem;
|
||||
size->ttmetrics.x_ratio = FT_MulDiv( metrics->x_ppem,
|
||||
0x10000L,
|
||||
metrics->y_ppem );
|
||||
size->ttmetrics.x_ratio = FT_DivFix( metrics->x_ppem, metrics->y_ppem );
|
||||
size->ttmetrics.y_ratio = 0x10000L;
|
||||
}
|
||||
|
||||
|
@ -239,18 +239,11 @@
|
||||
for ( j = 1; j < axismap->num_points; ++j )
|
||||
{
|
||||
if ( ncv <= axismap->blend_points[j] )
|
||||
{
|
||||
FT_Fixed t = FT_MulDiv( ncv - axismap->blend_points[j - 1],
|
||||
0x10000L,
|
||||
axismap->blend_points[j] -
|
||||
axismap->blend_points[j - 1] );
|
||||
|
||||
return INT_TO_FIXED( axismap->design_points[j - 1] ) +
|
||||
FT_MulDiv( t,
|
||||
axismap->design_points[j] -
|
||||
axismap->design_points[j - 1],
|
||||
1L );
|
||||
}
|
||||
( axismap->design_points[j] - axismap->design_points[j - 1] ) *
|
||||
FT_DivFix( ncv - axismap->blend_points[j - 1],
|
||||
axismap->blend_points[j] -
|
||||
axismap->blend_points[j - 1] );
|
||||
}
|
||||
|
||||
return INT_TO_FIXED( axismap->design_points[axismap->num_points - 1] );
|
||||
|
Loading…
Reference in New Issue
Block a user