[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[freetype2] master a8ef33e 2/3: [truetype] Honor FT_LOAD_ADVANCE_ONLY if
From: |
Werner Lemberg |
Subject: |
[freetype2] master a8ef33e 2/3: [truetype] Honor FT_LOAD_ADVANCE_ONLY if `hdmx` is usable. |
Date: |
Sat, 11 Dec 2021 22:56:22 -0500 (EST) |
branch: master
commit a8ef33e3aeb3a1435527dcc207e81133ca8de6c0
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Commit: Alexei Podtelezhnikov <apodtele@gmail.com>
[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 f18c6c2..81c2b1c 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:
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [freetype2] master a8ef33e 2/3: [truetype] Honor FT_LOAD_ADVANCE_ONLY if `hdmx` is usable.,
Werner Lemberg <=