From 43a2f656a71aea4d735dcdff201fed120479f707 Mon Sep 17 00:00:00 2001 From: David Turner Date: Wed, 5 Jul 2000 18:23:38 +0000 Subject: [PATCH] fixed a few bugs, cleaned up some code --- demos/src/ttdebug.c | 18 +++++++++++++++--- src/truetype/ttgload.c | 7 +++---- src/truetype/ttinterp.c | 4 ++-- 3 files changed, 20 insertions(+), 9 deletions(-) diff --git a/demos/src/ttdebug.c b/demos/src/ttdebug.c index 3a4216d85..71263796e 100644 --- a/demos/src/ttdebug.c +++ b/demos/src/ttdebug.c @@ -806,6 +806,18 @@ TT_CodeRange_Tag debug_coderange = tt_coderange_glyph; } + static + int old_tag_to_new( int tag ) + { + int result = tag & 1; + if (tag & FT_Curve_Tag_Touch_X) + result |= 2; + if (tag & FT_Curve_Tag_Touch_Y) + result |= 4; + + return result; + } + static FT_Error RunIns( TT_ExecContext exc ) { @@ -1059,7 +1071,7 @@ TT_CodeRange_Tag debug_coderange = tt_coderange_glyph; printf( "%02hx ", A ); if ( diff & 16 ) temp = "(%01hx)"; else temp = " %01hx "; - printf( temp, save.tags[A] & 7 ); + printf( temp, old_tag_to_new(save.tags[A]) ); if ( diff & 1 ) temp = "(%08lx)"; else temp = " %08lx "; printf( temp, save.org[A].x ); @@ -1078,7 +1090,7 @@ TT_CodeRange_Tag debug_coderange = tt_coderange_glyph; printf( "%02hx ", A ); if ( diff & 16 ) temp = "[%01hx]"; else temp = " %01hx "; - printf( temp, pts.tags[A] & 7 ); + printf( temp, old_tag_to_new(pts.tags[A]) ); if ( diff & 1 ) temp = "[%08lx]"; else temp = " %08lx "; printf( temp, pts.org[A].x ); @@ -1239,7 +1251,7 @@ int glyph_size; glyph = (TT_GlyphSlot)face->root.glyph; /* Now load glyph */ - error = FT_Load_Glyph( (FT_Face)face, glyph_index, FT_LOAD_DEFAULT ); + error = FT_Load_Glyph( (FT_Face)face, glyph_index, FT_LOAD_NO_BITMAP ); if (error) Panic( "could not load glyph" ); } diff --git a/src/truetype/ttgload.c b/src/truetype/ttgload.c index 424d8a413..264947be7 100644 --- a/src/truetype/ttgload.c +++ b/src/truetype/ttgload.c @@ -980,7 +980,6 @@ { FT_UShort n_ins; TT_ExecContext exec = loader->exec; - FT_UInt n_points = loader->base.n_points; TT_GlyphZone* pts; FT_Vector* pp1; @@ -1023,7 +1022,7 @@ pts = &exec->pts; pts->n_points = num_points + 2; - pts->n_contours = num_contours; + pts->n_contours = gloader->base.outline.n_contours; /* add phantom points */ pp1 = pts->cur + num_points; @@ -1044,11 +1043,11 @@ FT_UInt k; - for ( k = 0; k < n_points; k++ ) + for ( k = 0; k < num_points; k++ ) pts->tags[k] &= FT_Curve_Tag_On; } - cur_to_org( n_points, pts ); + cur_to_org( num_points+2, pts ); /* now consider hinting */ if ( IS_HINTED( loader->load_flags ) && n_ins > 0 ) diff --git a/src/truetype/ttinterp.c b/src/truetype/ttinterp.c index 2d2e6e043..d50382059 100644 --- a/src/truetype/ttinterp.c +++ b/src/truetype/ttinterp.c @@ -6176,8 +6176,8 @@ else { mask = FT_Curve_Tag_Touch_Y; - V.orgs = (FT_Vector*)( (FT_F26Dot6*)CUR.pts.org + 1 ); - V.curs = (FT_Vector*)( (FT_F26Dot6*)CUR.pts.cur + 1 ); + V.orgs = (FT_Vector*)( (FT_Pos*)CUR.pts.org + 1 ); + V.curs = (FT_Vector*)( (FT_Pos*)CUR.pts.cur + 1 ); } contour = 0;