summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexei Podtelezhnikov <apodtele@gmail.com>2021-12-13 11:44:24 -0500
committerAlexei Podtelezhnikov <apodtele@gmail.com>2021-12-13 11:44:24 -0500
commit0da2a1155ed576646d44ac5f7602e625800abe42 (patch)
tree12e040fc35902b66ab00888613d547807db87a39
parentfd03dcc1220453ac9e3e70c664c3f65cc72aefee (diff)
downloadfreetype2-0da2a1155ed576646d44ac5f7602e625800abe42.tar.gz
[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.
-rw-r--r--src/truetype/ttgload.c4
-rw-r--r--src/truetype/ttobjs.c2
-rw-r--r--src/truetype/ttobjs.h2
3 files changed, 5 insertions, 3 deletions
diff --git a/src/truetype/ttgload.c b/src/truetype/ttgload.c
index 0d8f271c6..796811b39 100644
--- 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;
diff --git a/src/truetype/ttobjs.c b/src/truetype/ttobjs.c
index 93fc54844..5c07b7a2f 100644
--- 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
diff --git a/src/truetype/ttobjs.h b/src/truetype/ttobjs.h
index fd7237872..1c4b5851f 100644
--- a/src/truetype/ttobjs.h
+++ b/src/truetype/ttobjs.h
@@ -282,6 +282,8 @@ FT_BEGIN_HEADER
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