* src/sfnt/ttsbit.c (tt_face_load_sbit): Allow more version values.

Some fonts seem to have the `version' field in the wrong byte order.

Problem reported by 張俊芝 <418092625@qq.com>.
This commit is contained in:
Werner Lemberg 2016-12-24 09:05:16 +01:00
parent fde0b78cce
commit d1db57c284
2 changed files with 13 additions and 1 deletions

View File

@ -1,3 +1,11 @@
2016-12-24 Werner Lemberg <wl@gnu.org>
* src/sfnt/ttsbit.c (tt_face_load_sbit): Allow more version values.
Some fonts seem to have the `version' field in the wrong byte order.
Problem reported by 張俊芝 <418092625@qq.com>.
2016-12-24 Werner Lemberg <wl@gnu.org>
* src/truetype/ttpload.c (tt_face_load_loca): Sanitize table length.

View File

@ -107,8 +107,12 @@
version = FT_NEXT_LONG( p );
num_strikes = FT_NEXT_ULONG( p );
/* there's at least one font (FZShuSong-Z01, version 3) */
/* that uses the wrong byte order for the `version' field */
if ( ( (FT_ULong)version & 0xFFFF0000UL ) != 0x00020000UL &&
( (FT_ULong)version & 0xFFFF0000UL ) != 0x00030000UL )
( (FT_ULong)version & 0x0000FFFFUL ) != 0x00000200UL &&
( (FT_ULong)version & 0xFFFF0000UL ) != 0x00030000UL &&
( (FT_ULong)version & 0x0000FFFFUL ) != 0x00000300UL )
{
error = FT_THROW( Unknown_File_Format );
goto Exit;