[truetype] Clean up size validation.
Rely on non-zero ppem to validate the size object.
* src/truetype/ttobjs.h (TT_Size_Merics): Remove the `valid` flag.
* src/truetype/ttobjs.c (tt_size_init,done,reset,reset_height): Updated.
* src/truetype/ttgload.c (TT_Load_Glyph): Check for non-zero ppem.
diff --git a/src/truetype/ttgload.c b/src/truetype/ttgload.c
index 9f9404f..dd330ae 100644
--- a/src/truetype/ttgload.c
+++ b/src/truetype/ttgload.c
@@ -2478,7 +2478,7 @@
#endif /* TT_CONFIG_OPTION_EMBEDDED_BITMAPS */
/* if FT_LOAD_NO_SCALE is not set, `ttmetrics' must be valid */
- if ( !( load_flags & FT_LOAD_NO_SCALE ) && !size->ttmetrics.valid )
+ if ( !( load_flags & FT_LOAD_NO_SCALE ) && !size->ttmetrics.ppem )
{
error = FT_THROW( Invalid_Size_Handle );
goto Exit;
diff --git a/src/truetype/ttobjs.c b/src/truetype/ttobjs.c
index a3822f6..8051f36 100644
--- a/src/truetype/ttobjs.c
+++ b/src/truetype/ttobjs.c
@@ -1135,8 +1135,7 @@
size->bytecode_ready = -1;
#endif
- size->ttmetrics.valid = FALSE;
- size->strike_index = 0xFFFFFFFFUL;
+ size->strike_index = 0xFFFFFFFFUL;
return error;
}
@@ -1163,8 +1162,6 @@
#ifdef TT_USE_BYTECODE_INTERPRETER
tt_size_done_bytecode( size );
#endif
-
- size->ttmetrics.valid = FALSE;
}
@@ -1192,8 +1189,6 @@
TT_Face face = (TT_Face)size->root.face;
FT_Size_Metrics* size_metrics = &size->hinted_metrics;
- size->ttmetrics.valid = FALSE;
-
/* copy the result from base layer */
*size_metrics = size->root.metrics;
@@ -1218,8 +1213,6 @@
size_metrics->y_scale ) );
}
- size->ttmetrics.valid = TRUE;
-
return FT_Err_Ok;
}
@@ -1245,6 +1238,9 @@
FT_Size_Metrics* size_metrics = &size->hinted_metrics;
+ /* invalidate the size object first */
+ size->ttmetrics.ppem = 0;
+
error = tt_size_reset_height( (FT_Size)size );
if ( error )
return error;
diff --git a/src/truetype/ttobjs.h b/src/truetype/ttobjs.h
index bd0bdcb..7d0c530 100644
--- a/src/truetype/ttobjs.h
+++ b/src/truetype/ttobjs.h
@@ -191,8 +191,6 @@
FT_Fixed scale;
FT_UShort ppem; /* maximum ppem size */
- FT_Bool valid;
-
FT_Bool rotated; /* `is the glyph rotated?'-flag */
FT_Bool stretched; /* `is the glyph stretched?'-flag */