shithub: freetype+ttf2subf

Download patch

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.

git/fs: mount .git/fs: mount/attach disallowed
--- 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