diff options
author | marha <marha@users.sourceforge.net> | 2009-12-21 15:22:51 +0000 |
---|---|---|
committer | marha <marha@users.sourceforge.net> | 2009-12-21 15:22:51 +0000 |
commit | 1ee02cd0419021c3d4950af2619da39c6e9c47f0 (patch) | |
tree | f5b61f7d9e151c7a64cff51399560ffb77800349 /freetype/src/base/ftsynth.c | |
parent | d8432fdd4f13e9f9d1d44f5482faeb56562661a9 (diff) | |
download | vcxsrv-1ee02cd0419021c3d4950af2619da39c6e9c47f0.tar.gz vcxsrv-1ee02cd0419021c3d4950af2619da39c6e9c47f0.tar.bz2 vcxsrv-1ee02cd0419021c3d4950af2619da39c6e9c47f0.zip |
Updated to freetype-2.3.11
Diffstat (limited to 'freetype/src/base/ftsynth.c')
-rw-r--r-- | freetype/src/base/ftsynth.c | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/freetype/src/base/ftsynth.c b/freetype/src/base/ftsynth.c index 443d27260..326d8e73e 100644 --- a/freetype/src/base/ftsynth.c +++ b/freetype/src/base/ftsynth.c @@ -18,12 +18,22 @@ #include <ft2build.h> #include FT_SYNTHESIS_H +#include FT_INTERNAL_DEBUG_H #include FT_INTERNAL_OBJECTS_H #include FT_OUTLINE_H #include FT_BITMAP_H /*************************************************************************/ + /* */ + /* The macro FT_COMPONENT is used in trace mode. It is an implicit */ + /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log */ + /* messages during execution. */ + /* */ +#undef FT_COMPONENT +#define FT_COMPONENT trace_synth + + /*************************************************************************/ /*************************************************************************/ /**** ****/ /**** EXPERIMENTAL OBLIQUING SUPPORT ****/ @@ -106,6 +116,18 @@ xstr = 1 << 6; ystr &= ~63; + /* + * XXX: overflow check for 16-bit system, for compatibility + * with FT_GlyphSlot_Embolden() since freetype-2.1.10. + * unfortunately, this function return no informations + * about the cause of error. + */ + if ( ( ystr >> 6 ) > FT_INT_MAX || ( ystr >> 6 ) < FT_INT_MIN ) + { + FT_TRACE1(( "FT_GlyphSlot_Embolden:" )); + FT_TRACE1(( "too strong embolding parameter ystr=%d\n", ystr )); + return; + } error = FT_GlyphSlot_Own_Bitmap( slot ); if ( error ) return; @@ -129,8 +151,9 @@ slot->metrics.vertBearingY += ystr; slot->metrics.vertAdvance += ystr; + /* XXX: 16-bit overflow case must be excluded before here */ if ( slot->format == FT_GLYPH_FORMAT_BITMAP ) - slot->bitmap_top += ystr >> 6; + slot->bitmap_top += (FT_Int)( ystr >> 6 ); } |