From 14399c73c45642511a40015a82870f033a71c8d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Behdad=20Esfahbod=20=28=D8=A8=D9=87=D8=AF=D8=A7=D8=AF=20?= =?UTF-8?q?=D8=A7=D8=B3=D9=81=D9=87=D8=A8=D8=AF=29?= Date: Tue, 20 May 2025 16:17:00 -0600 Subject: [PATCH] [gxvar] Inline two USHORT reads. Speeds up GoogleSansFlex variable glyph drawing by ~13%. Before: 2.95ms After: 2.57ms * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Do it. --- src/truetype/ttgxvar.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/truetype/ttgxvar.c b/src/truetype/ttgxvar.c index 1ffec2387..5c330136a 100644 --- a/src/truetype/ttgxvar.c +++ b/src/truetype/ttgxvar.c @@ -4157,8 +4157,16 @@ FT_TRACE6(( " tuple %d:\n", i )); - tupleDataSize = FT_GET_USHORT(); - tupleIndex = FT_GET_USHORT(); + /* Enter frame for four bytes. */ + if ( stream->limit - stream->cursor < 4 ) + { + FT_TRACE2(( "TT_Vary_Apply_Glyph_Deltas:" + " invalid glyph variation array header\n" )); + error = FT_THROW( Invalid_Table ); + goto Exit; + } + tupleDataSize = FT_NEXT_USHORT( stream->cursor ); + tupleIndex = FT_NEXT_USHORT( stream->cursor ); if ( tupleIndex & GX_TI_EMBEDDED_TUPLE_COORD ) {