mirror of https://github.com/freetype/freetype
truetype: Extend TT_Face->num_locations for broken TTFs.
This commit is contained in:
parent
e45e052279
commit
25dba9cfa8
13
ChangeLog
13
ChangeLog
|
@ -1,3 +1,16 @@
|
|||
2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
|
||||
|
||||
truetype: Extend TT_Face->num_locations for broken TTFs.
|
||||
|
||||
* include/freetype/internal/tttypes.h:
|
||||
TT_Face->num_locations are extended from FT_UInt
|
||||
to FT_ULong, to stand with broken huge loca table.
|
||||
Some people insists there are broken TTF including
|
||||
the glyphs over 16-bit limitation, in PRC market.
|
||||
* src/truetype/ttpload.c (tt_face_load_loca):
|
||||
Remove unrequired 16-bit truncation for FT_UInt
|
||||
TT_Face->num_locations.
|
||||
|
||||
2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
|
||||
|
||||
smooth: Fix some data types mismatching with their sources.
|
||||
|
|
|
@ -1401,7 +1401,7 @@ FT_BEGIN_HEADER
|
|||
FT_Byte* vert_metrics;
|
||||
FT_ULong vert_metrics_size;
|
||||
|
||||
FT_UInt num_locations;
|
||||
FT_ULong num_locations; /* in broken TTF, gid > 0xFFFF */
|
||||
FT_Byte* glyph_locations;
|
||||
|
||||
FT_Byte* hdmx_table;
|
||||
|
|
|
@ -95,7 +95,7 @@
|
|||
error = TT_Err_Invalid_Table;
|
||||
goto Exit;
|
||||
}
|
||||
face->num_locations = (FT_UInt)( table_len >> shift );
|
||||
face->num_locations = table_len >> shift;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -107,16 +107,16 @@
|
|||
error = TT_Err_Invalid_Table;
|
||||
goto Exit;
|
||||
}
|
||||
face->num_locations = (FT_UInt)( table_len >> shift );
|
||||
face->num_locations = table_len >> shift;
|
||||
}
|
||||
|
||||
if ( face->num_locations != (FT_UInt)face->root.num_glyphs )
|
||||
if ( face->num_locations != (FT_ULong)face->root.num_glyphs )
|
||||
{
|
||||
FT_TRACE2(( "glyph count mismatch! loca: %d, maxp: %d\n",
|
||||
face->num_locations, face->root.num_glyphs ));
|
||||
|
||||
/* we only handle the case where `maxp' gives a larger value */
|
||||
if ( face->num_locations < (FT_UInt)face->root.num_glyphs )
|
||||
if ( face->num_locations < (FT_ULong)face->root.num_glyphs )
|
||||
{
|
||||
FT_Long new_loca_len = (FT_Long)face->root.num_glyphs << shift;
|
||||
|
||||
|
@ -139,7 +139,7 @@
|
|||
|
||||
if ( new_loca_len <= dist )
|
||||
{
|
||||
face->num_locations = (FT_Long)face->root.num_glyphs;
|
||||
face->num_locations = face->root.num_glyphs;
|
||||
table_len = new_loca_len;
|
||||
|
||||
FT_TRACE2(( "adjusting num_locations to %d\n",
|
||||
|
|
Loading…
Reference in New Issue