* src/pfr/pfrobjs.c (pfr_face_get_kerning): Skip adjustment bytes

correctly.  Reported as Savannah bug #17843.
This commit is contained in:
Werner Lemberg 2006-09-27 06:29:21 +00:00
parent 110246c641
commit e20df4a167
2 changed files with 20 additions and 8 deletions

View File

@ -1,3 +1,8 @@
2006-09-26 David Bustin
* src/pfr/pfrobjs.c (pfr_face_get_kerning): Skip adjustment bytes
correctly. Reported as Savannah bug #17843.
2006-09-26 David Turner <david@freetype.org>
* src/autofit/afhints.h (AF_HINTS_DO_HORIZONTAL,

View File

@ -476,13 +476,14 @@
goto Exit;
{
FT_UInt count = item->pair_count;
FT_UInt size = item->pair_size;
FT_UInt power = (FT_UInt)ft_highpow2( (FT_UInt32)count );
FT_UInt probe = power * size;
FT_UInt extra = count - power;
FT_Byte* base = stream->cursor;
FT_Bool twobytes = FT_BOOL( item->flags & 1 );
FT_UInt count = item->pair_count;
FT_UInt size = item->pair_size;
FT_UInt power = (FT_UInt)ft_highpow2( (FT_UInt32)count );
FT_UInt probe = power * size;
FT_UInt extra = count - power;
FT_Byte* base = stream->cursor;
FT_Bool twobytes = FT_BOOL( item->flags & 1 );
FT_Bool twobyte_adj = FT_BOOL( item->flags & 2 );
FT_Byte* p;
FT_UInt32 cpair;
@ -500,7 +501,13 @@
goto Found;
if ( cpair < pair )
{
if ( twobyte_adj )
p += 2;
else
p++;
base = p;
}
}
while ( probe > size )
@ -533,7 +540,7 @@
Found:
if ( item->flags & 2 )
if ( twobyte_adj )
value = FT_PEEK_SHORT( p );
else
value = p[0];