mirror of https://github.com/freetype/freetype
slight speed-up of the TrueType glyph loader
This commit is contained in:
parent
84c6f88117
commit
5f5e544611
|
@ -1,5 +1,7 @@
|
|||
2007-06-10 David Turner <david@freetype.org>
|
||||
|
||||
* src/truetype/ttgload.c: slight speed-up to the TrueType glyph loader
|
||||
|
||||
* include/freetype/config/ftoption.h: clarify documentation regarding
|
||||
unpatented hinting
|
||||
|
||||
|
|
|
@ -251,6 +251,7 @@
|
|||
FT_Vector *vec, *vec_limit;
|
||||
FT_Pos x;
|
||||
FT_Short *cont, *cont_limit;
|
||||
FT_Int xy_size = 0;
|
||||
|
||||
|
||||
/* check that we can add the contours to the glyph */
|
||||
|
@ -362,23 +363,27 @@
|
|||
flag = (FT_Byte*)outline->tags;
|
||||
x = 0;
|
||||
|
||||
if ( p + xy_size > limit )
|
||||
goto Invalid_Outline;
|
||||
|
||||
for ( ; vec < vec_limit; vec++, flag++ )
|
||||
{
|
||||
FT_Pos y = 0;
|
||||
FT_Byte f = *flag;
|
||||
|
||||
|
||||
if ( *flag & 2 )
|
||||
if ( f & 2 )
|
||||
{
|
||||
if ( p + 1 > limit )
|
||||
if (p + 1 > limit)
|
||||
goto Invalid_Outline;
|
||||
|
||||
y = (FT_Pos)FT_NEXT_BYTE( p );
|
||||
if ( ( *flag & 16 ) == 0 )
|
||||
if ( ( f & 16 ) == 0 )
|
||||
y = -y;
|
||||
}
|
||||
else if ( ( *flag & 16 ) == 0 )
|
||||
else if ( ( f & 16 ) == 0 )
|
||||
{
|
||||
if ( p + 2 > limit )
|
||||
if (p + 2 > limit)
|
||||
goto Invalid_Outline;
|
||||
|
||||
y = (FT_Pos)FT_NEXT_SHORT( p );
|
||||
|
@ -386,6 +391,7 @@
|
|||
|
||||
x += y;
|
||||
vec->x = x;
|
||||
*flag = f & ~(2|16);
|
||||
}
|
||||
|
||||
/* reading the Y coordinates */
|
||||
|
@ -398,20 +404,21 @@
|
|||
for ( ; vec < vec_limit; vec++, flag++ )
|
||||
{
|
||||
FT_Pos y = 0;
|
||||
FT_Byte f = *flag;
|
||||
|
||||
|
||||
if ( *flag & 4 )
|
||||
if ( f & 4 )
|
||||
{
|
||||
if ( p +1 > limit )
|
||||
if (p + 1 > limit)
|
||||
goto Invalid_Outline;
|
||||
|
||||
y = (FT_Pos)FT_NEXT_BYTE( p );
|
||||
if ( ( *flag & 32 ) == 0 )
|
||||
if ( ( f & 32 ) == 0 )
|
||||
y = -y;
|
||||
}
|
||||
else if ( ( *flag & 32 ) == 0 )
|
||||
else if ( ( f & 32 ) == 0 )
|
||||
{
|
||||
if ( p + 2 > limit )
|
||||
if (p + 2 > limit)
|
||||
goto Invalid_Outline;
|
||||
|
||||
y = (FT_Pos)FT_NEXT_SHORT( p );
|
||||
|
@ -419,12 +426,9 @@
|
|||
|
||||
x += y;
|
||||
vec->y = x;
|
||||
*flag = f & ~(4|32);
|
||||
}
|
||||
|
||||
/* clear the touch tags */
|
||||
for ( n = 0; n < n_points; n++ )
|
||||
outline->tags[n] &= FT_CURVE_TAG_ON;
|
||||
|
||||
outline->n_points = (FT_UShort)n_points;
|
||||
outline->n_contours = (FT_Short) n_contours;
|
||||
|
||||
|
|
Loading…
Reference in New Issue