fixed a few bugs, cleaned up some code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
diff --git a/demos/src/ttdebug.c b/demos/src/ttdebug.c
index 3a4216d..7126379 100644
--- a/demos/src/ttdebug.c
+++ b/demos/src/ttdebug.c
@@ -807,6 +807,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 )
{
FT_Int A, diff, key;
@@ -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 424d8a4..264947b 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 2d2e6e0..d503820 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;