diff -Naur freetype-2.1.3~/src/sfnt/ttload.c freetype-2.1.3/src/sfnt/ttload.c --- freetype-2.1.3~/src/sfnt/ttload.c 2002-09-29 00:40:57.000000000 +0800 +++ freetype-2.1.3/src/sfnt/ttload.c 2002-12-30 03:55:48.000000000 +0800 @@ -213,10 +213,12 @@ has_head = 1; - if ( table.Length != 0x36 || - FT_STREAM_SEEK( table.Offset + 12 ) || - FT_READ_ULONG( magic ) || - magic != 0x5F0F3CF5UL ) + /* The correct table.Length is 0x36, but some tools may */ + /* erroneously pad it to a multiple of 4 bytes (0x38) */ + if ( table.Length != 0x36 && table.Length != 0x38 || + FT_STREAM_SEEK( table.Offset + 12 ) || + FT_READ_ULONG( magic ) || + magic != 0x5F0F3CF5UL ) goto Bad_Format; if ( FT_STREAM_SEEK( offset + 28 + 16*nn ) )