ref: 0da2a1155ed576646d44ac5f7602e625800abe42
parent: fd03dcc1220453ac9e3e70c664c3f65cc72aefee
author: Alexei Podtelezhnikov <apodtele@gmail.com>
date: Mon Dec 13 06:44:24 EST 2021
[truetype] Upstream the hdmx binary search. * src/truetype/ttobjs.h (TT_SizeRec): Add `widthp` for the hdmx widths. * src/truetype/ttobjs.c (tt_size_reset): Initialize `widthp` even though it might never be used by the interpreter. * src/truetype/ttgload.c (tt_loader_init): Avoid repeated searches in the hdmx table.
--- a/src/truetype/ttgload.c
+++ b/src/truetype/ttgload.c
@@ -2736,9 +2736,7 @@
#endif
!face->postscript.isFixedPitch )
{
- loader->widthp = tt_face_get_device_metrics( face,
- size->metrics->x_ppem,
- 0 );
+ loader->widthp = size->widthp;
}
else
loader->widthp = NULL;
--- a/src/truetype/ttobjs.c
+++ b/src/truetype/ttobjs.c
@@ -1435,6 +1435,8 @@
size->ttmetrics.y_ratio = 0x10000L;
}
+ size->widthp = tt_face_get_device_metrics( face, size_metrics->x_ppem, 0 );
+
size->metrics = size_metrics;
#ifdef TT_USE_BYTECODE_INTERPRETER
--- a/src/truetype/ttobjs.h
+++ b/src/truetype/ttobjs.h
@@ -282,6 +282,8 @@
TT_Size_Metrics ttmetrics;
+ FT_Byte* widthp; /* glyph widths from the hdmx table */
+
FT_ULong strike_index; /* 0xFFFFFFFF to indicate invalid */
#ifdef TT_USE_BYTECODE_INTERPRETER