freetype-commit
[Top][All Lists]
Advanced

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

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


From: Werner LEMBERG
Subject: [freetype2] master a300c1c: * src/truetype/ttpload.c (tt_face_load_hdmx): Ignore `version'.
Date: Sat, 24 Dec 2016 08:27:32 +0000 (UTC)

branch: master
commit a300c1c3af3b7e99a71127e33be1e3d622ec9f9a
Author: Werner Lemberg <address@hidden>
Commit: Werner Lemberg <address@hidden>

    * src/truetype/ttpload.c (tt_face_load_hdmx): Ignore `version'.
    
    Problem reported by 張俊芝 <address@hidden>.
---
 ChangeLog              |    6 ++++++
 src/truetype/ttpload.c |   10 ++++++----
 2 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 775201a..d8f446b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,11 @@
 2016-12-24  Werner Lemberg  <address@hidden>
 
+       * src/truetype/ttpload.c (tt_face_load_hdmx): Ignore `version'.
+
+       Problem reported by 張俊芝 <address@hidden>.
+
+2016-12-24  Werner Lemberg  <address@hidden>
+
        * src/sfnt/ttsbit.c (tt_face_load_sbit): Allow more version values.
 
        Some fonts seem to have the `version' field in the wrong byte order.
diff --git a/src/truetype/ttpload.c b/src/truetype/ttpload.c
index 95ab470..d756d38 100644
--- a/src/truetype/ttpload.c
+++ b/src/truetype/ttpload.c
@@ -524,7 +524,7 @@
   {
     FT_Error   error;
     FT_Memory  memory = stream->memory;
-    FT_UInt    version, nn, num_records;
+    FT_UInt    nn, num_records;
     FT_ULong   table_size, record_size;
     FT_Byte*   p;
     FT_Byte*   limit;
@@ -541,7 +541,10 @@
     p     = face->hdmx_table;
     limit = p + table_size;
 
-    version     = FT_NEXT_USHORT( p );
+    /* Given that `hdmx' tables are losing its importance (for example, */
+    /* variation fonts introduced in OpenType 1.8 must not have this    */
+    /* table) we no longer test for a correct `version' field.          */
+    p          += 2;
     num_records = FT_NEXT_USHORT( p );
     record_size = FT_NEXT_ULONG( p );
 
@@ -560,8 +563,7 @@
       record_size &= 0xFFFFU;
 
     /* The limit for `num_records' is a heuristic value. */
-    if ( version != 0                   ||
-         num_records > 255              ||
+    if ( num_records > 255              ||
          ( num_records > 0            &&
            ( record_size > 0x10001L ||
              record_size < 4        ) ) )



reply via email to

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