From a8ef33e3aeb3a1435527dcc207e81133ca8de6c0 Mon Sep 17 00:00:00 2001 From: Alexei Podtelezhnikov Date: Sat, 11 Dec 2021 22:42:46 -0500 Subject: [PATCH] [truetype] Honor FT_LOAD_ADVANCE_ONLY if `hdmx` is usable. This simply shortcuts the glyph loading if FT_LOAD_ADVANCE_ONLY is specified by FT_Get_Advances and the `hdmx` data are located. Particularly, the classic v35 interpreter or "verified" ClearType fonts might see 100x speed up in retrieving the hdmx cache. * src/truetype/ttgload.c (TT_Load_Glyph): Insert the shortcut. --- src/truetype/ttgload.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/truetype/ttgload.c b/src/truetype/ttgload.c index f18c6c2d2..81c2b1c81 100644 --- a/src/truetype/ttgload.c +++ b/src/truetype/ttgload.c @@ -2945,6 +2945,15 @@ if ( error ) goto Exit; + /* done if we are only interested in the `hdmx` advance */ + if ( load_flags & FT_LOAD_ADVANCE_ONLY && + !( load_flags & FT_LOAD_VERTICAL_LAYOUT ) && + loader.widthp ) + { + glyph->metrics.horiAdvance = loader.widthp[glyph_index] * 64; + goto Done; + } + glyph->format = FT_GLYPH_FORMAT_OUTLINE; glyph->num_subglyphs = 0; glyph->outline.flags = 0; @@ -3023,6 +3032,7 @@ glyph->outline.n_points, glyph->outline.flags )); + Done: tt_loader_done( &loader ); Exit: