diff options
Diffstat (limited to 'src/truetype')
-rw-r--r-- | src/truetype/ttgload.c | 9 | ||||
-rw-r--r-- | src/truetype/ttinterp.c | 19 | ||||
-rw-r--r-- | src/truetype/ttobjs.c | 22 |
3 files changed, 20 insertions, 30 deletions
diff --git a/src/truetype/ttgload.c b/src/truetype/ttgload.c index 22cbc09..ce8c888 100644 --- a/src/truetype/ttgload.c +++ b/src/truetype/ttgload.c @@ -1983,11 +1983,13 @@ FT_UInt glyph_index, FT_Int32 load_flags ) { + TT_Face face; FT_Error error; TT_LoaderRec loader; - error = TT_Err_Ok; + face = (TT_Face)glyph->face; + error = TT_Err_Ok; #ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS @@ -2001,7 +2003,10 @@ error = load_sbit_image( size, glyph, glyph_index, load_flags ); if ( !error ) { - if ( FT_IS_SCALABLE( glyph->face ) ) + FT_Face root = &face->root; + + + if ( FT_IS_SCALABLE( root ) ) { /* for the bbox we need the header only */ (void)tt_loader_init( &loader, size, glyph, load_flags, TRUE ); diff --git a/src/truetype/ttinterp.c b/src/truetype/ttinterp.c index 3a8680f..3acb24a 100644 --- a/src/truetype/ttinterp.c +++ b/src/truetype/ttinterp.c @@ -52,7 +52,7 @@ /* */ /* In order to detect infinite loops in the code, we set up a counter */ /* within the run loop. A single stroke of interpretation is now */ - /* limited to a maximum number of opcodes defined below. */ + /* limited to a maximal number of opcodes defined below. */ /* */ #define MAX_RUNNABLE_OPCODES 1000000L @@ -1463,7 +1463,7 @@ #else - /* compute (a*b)/2^14 with maximum accuracy and rounding */ + /* compute (a*b)/2^14 with maximal accuracy and rounding */ static FT_Int32 TT_MulFix14( FT_Int32 a, FT_Int b ) @@ -1493,7 +1493,7 @@ #endif - /* compute (ax*bx+ay*by)/2^14 with maximum accuracy and rounding */ + /* compute (ax*bx+ay*by)/2^14 with maximal accuracy and rounding */ static FT_Int32 TT_DotFix14( FT_Int32 ax, FT_Int32 ay, @@ -3110,9 +3110,14 @@ CUR.GS.single_width_cutin = (FT_F26Dot6)args[0]; -#define DO_SSW \ - CUR.GS.single_width_value = TT_MULFIX( args[0], \ - CUR.tt_metrics.scale ); + /* XXX: UNDOCUMENTED! or bug in the Windows engine? */ + /* */ + /* It seems that the value that is read here is */ + /* expressed in 16.16 format rather than in font */ + /* units. */ + /* */ +#define DO_SSW \ + CUR.GS.single_width_value = (FT_F26Dot6)( args[0] >> 10 ); #define DO_FLIPON \ @@ -5767,7 +5772,7 @@ /* */ /* UNDOCUMENTED: According to Greg Hitchcock, there is one (virtual) */ /* contour in the twilight zone, namely contour number */ - /* zero which includes all points of it. */ + /* zero. */ /* */ static void Ins_SHC( INS_ARG ) diff --git a/src/truetype/ttobjs.c b/src/truetype/ttobjs.c index 1f8a768..814c713 100644 --- a/src/truetype/ttobjs.c +++ b/src/truetype/ttobjs.c @@ -244,7 +244,7 @@ tt_check_trickyness_sfnt_ids( TT_Face face ) { #define TRICK_SFNT_IDS_PER_FACE 3 -#define TRICK_SFNT_IDS_NUM_FACES 17 +#define TRICK_SFNT_IDS_NUM_FACES 13 static const tt_sfnt_id_rec sfnt_id[TRICK_SFNT_IDS_NUM_FACES] [TRICK_SFNT_IDS_PER_FACE] = { @@ -317,26 +317,6 @@ { 0x00000000, 0x00000000 }, /* cvt */ { 0x0d3de9cb, 0x00000141 }, /* fpgm */ { 0xd4127766, 0x00002280 } /* prep */ - }, - { /* NEC FA-Gothic, 1996 */ - { 0x00000000, 0x00000000 }, /* cvt */ - { 0x4a692698, 0x000001f0 }, /* fpgm */ - { 0x340d4346, 0x00001fca } /* prep */ - }, - { /* NEC FA-Minchou, 1996 */ - { 0x00000000, 0x00000000 }, /* cvt */ - { 0xcd34c604, 0x00000166 }, /* fpgm */ - { 0x6cf31046, 0x000022b0 } /* prep */ - }, - { /* NEC FA-RoundGothicB, 1996 */ - { 0x00000000, 0x00000000 }, /* cvt */ - { 0x5da75315, 0x0000019d }, /* fpgm */ - { 0x40745a5f, 0x000022e0 } /* prep */ - }, - { /* NEC FA-RoundGothicM, 1996 */ - { 0x00000000, 0x00000000 }, /* cvt */ - { 0xf055fc48, 0x000001c2 }, /* fpgm */ - { 0x3900ded3, 0x00001e18 } /* prep */ } }; |