[truetype] Tweak size management.
* include/freetype/internal/services/svmetric.h (FT_Size_Reset_Func):
Update typedef, do not return error.
* src/truetype/ttobjs.c (tt_size_reset_height): Move the PPem error
handling from here...
(tt_size_reset): ... to here to improve readability.
src/truetype/ttobjs.h (tt_size_reset_height): Update prototype.
diff --git a/include/freetype/internal/services/svmetric.h b/include/freetype/internal/services/svmetric.h
index 8b3563b..5a0dc4d 100644
--- a/include/freetype/internal/services/svmetric.h
+++ b/include/freetype/internal/services/svmetric.h
@@ -77,7 +77,7 @@
typedef void
(*FT_Metrics_Adjust_Func)( FT_Face face );
- typedef FT_Error
+ typedef void
(*FT_Size_Reset_Func)( FT_Size size );
diff --git a/src/truetype/ttobjs.c b/src/truetype/ttobjs.c
index 8051f36..ac54e01 100644
--- a/src/truetype/ttobjs.c
+++ b/src/truetype/ttobjs.c
@@ -1182,19 +1182,13 @@
* function must take `FT_Size` as a result. The passed `FT_Size` is
* expected to point to a `TT_Size`.
*/
- FT_LOCAL_DEF( FT_Error )
+ FT_LOCAL_DEF( void )
tt_size_reset_height( FT_Size ft_size )
{
TT_Size size = (TT_Size)ft_size;
- TT_Face face = (TT_Face)size->root.face;
+ TT_Face face = (TT_Face)ft_size->face;
FT_Size_Metrics* size_metrics = &size->hinted_metrics;
- /* copy the result from base layer */
- *size_metrics = size->root.metrics;
-
- if ( size_metrics->x_ppem < 1 || size_metrics->y_ppem < 1 )
- return FT_THROW( Invalid_PPem );
-
/* This bit flag, if set, indicates that the ppems must be */
/* rounded to integers. Nearly all TrueType fonts have this bit */
/* set, as hinting won't work really well otherwise. */
@@ -1212,8 +1206,6 @@
FT_MulFix( face->root.height,
size_metrics->y_scale ) );
}
-
- return FT_Err_Ok;
}
@@ -1233,7 +1225,6 @@
FT_LOCAL_DEF( FT_Error )
tt_size_reset( TT_Size size )
{
- FT_Error error;
TT_Face face = (TT_Face)size->root.face;
FT_Size_Metrics* size_metrics = &size->hinted_metrics;
@@ -1241,9 +1232,13 @@
/* invalidate the size object first */
size->ttmetrics.ppem = 0;
- error = tt_size_reset_height( (FT_Size)size );
- if ( error )
- return error;
+ if ( size->root.metrics.x_ppem == 0 || size->root.metrics.y_ppem == 0 )
+ return FT_THROW( Invalid_PPem );
+
+ /* copy the result from base layer */
+ *size_metrics = size->root.metrics;
+
+ tt_size_reset_height( (FT_Size)size );
if ( face->header.Flags & 8 )
{
diff --git a/src/truetype/ttobjs.h b/src/truetype/ttobjs.h
index 7d0c530..0d8c8eb 100644
--- a/src/truetype/ttobjs.h
+++ b/src/truetype/ttobjs.h
@@ -299,7 +299,7 @@
#endif /* TT_USE_BYTECODE_INTERPRETER */
- FT_LOCAL( FT_Error )
+ FT_LOCAL( void )
tt_size_reset_height( FT_Size size );
FT_LOCAL( FT_Error )