freetype-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[freetype2] master 36a905e: * src/truetype/ttpload.c (tt_face_load_hdmx)


From: Werner Lemberg
Subject: [freetype2] master 36a905e: * src/truetype/ttpload.c (tt_face_load_hdmx): Added comments.
Date: Fri, 26 Nov 2021 09:17:04 -0500 (EST)

branch: master
commit 36a905e17425af668d2db882fd33ee598b404ed6
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Commit: Alexei Podtelezhnikov <apodtele@gmail.com>

    * src/truetype/ttpload.c (tt_face_load_hdmx): Added comments.
---
 src/truetype/ttpload.c | 13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)

diff --git a/src/truetype/ttpload.c b/src/truetype/ttpload.c
index c1ce0d6..71db75a 100644
--- a/src/truetype/ttpload.c
+++ b/src/truetype/ttpload.c
@@ -555,7 +555,7 @@
     if ( record_size >= 0xFFFF0000UL )
       record_size &= 0xFFFFU;
 
-    FT_TRACE2(( "Hdmx ", num_records, record_size ));
+    FT_TRACE2(( "Hdmx " ));
 
     /* The limit for `num_records' is a heuristic value. */
     if ( num_records > 255 || num_records == 0 )
@@ -564,18 +564,21 @@
       goto Fail;
     }
 
-    /* Out-of-spec tables are rejected. */
-    if ( (FT_Long)record_size != ( ( face->root.num_glyphs + 5 ) & ~3 ) )
+    /* Out-of-spec tables are rejected.  The record size must be */
+    /* equal to the number of glyphs + 2 + 32-bit padding.       */
+    if ( (FT_Long)record_size != ( ( face->root.num_glyphs + 2 + 3 ) & ~3 ) )
     {
       FT_TRACE2(( "with record size off by %ld bytes rejected\n",
-                   (FT_Long)record_size -
-                     ( ( face->root.num_glyphs + 5 ) & ~3 ) ));
+                  (FT_Long)record_size -
+                    ( ( face->root.num_glyphs + 2 + 3 ) & ~3 ) ));
       goto Fail;
     }
 
     if ( FT_QNEW_ARRAY( face->hdmx_record_sizes, num_records ) )
       goto Fail;
 
+    /* XXX: We do not check if the records are sorted by ppem */
+    /* and cannot use binary search later.                    */
     for ( nn = 0; nn < num_records; nn++ )
     {
       if ( p + record_size > limit )



reply via email to

[Prev in Thread] Current Thread [Next in Thread]