freetype-commit
[Top][All Lists]
Advanced

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

[freetype2] master da38be8: [truetype] Fix HVAR and VVAR handling (#5067


From: Werner LEMBERG
Subject: [freetype2] master da38be8: [truetype] Fix HVAR and VVAR handling (#50678).
Date: Thu, 30 Mar 2017 07:25:46 -0400 (EDT)

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

    [truetype] Fix HVAR and VVAR handling (#50678).
    
    * src/truetype/ttgxvar.c (tt_hvadvance_adjust): Handle
    glyph indices larger than `mapCount' as described in the
    specification.
---
 ChangeLog              |  8 ++++++++
 src/truetype/ttgxvar.c | 15 +++++++--------
 2 files changed, 15 insertions(+), 8 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 65c492e..c741371 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,13 @@
 2017-03-30  Werner Lemberg  <address@hidden>
 
+       [truetype] Fix HVAR and VVAR handling (#50678).
+
+       * src/truetype/ttgxvar.c (tt_hvadvance_adjust): Handle
+       glyph indices larger than `mapCount' as described in the
+       specification.
+
+2017-03-30  Werner Lemberg  <address@hidden>
+
        [truetype] Allow linear scaling for unhinted rendering (#50470).
 
        * src/truetype/ttdriver.c (tt_size_request): Revert change from
diff --git a/src/truetype/ttgxvar.c b/src/truetype/ttgxvar.c
index a87913d..6d4529b 100644
--- a/src/truetype/ttgxvar.c
+++ b/src/truetype/ttgxvar.c
@@ -1007,16 +1007,15 @@
 
     if ( table->widthMap.innerIndex )
     {
-      if ( gindex >= table->widthMap.mapCount )
-      {
-        FT_TRACE2(( "gindex %d out of range\n", gindex ));
-        error = FT_THROW( Invalid_Argument );
-        goto Exit;
-      }
+      FT_UInt  idx = gindex;
+
+
+      if ( idx >= table->widthMap.mapCount )
+        idx = table->widthMap.mapCount - 1;
 
       /* trust that HVAR parser has checked indices */
-      outerIndex = table->widthMap.outerIndex[gindex];
-      innerIndex = table->widthMap.innerIndex[gindex];
+      outerIndex = table->widthMap.outerIndex[idx];
+      innerIndex = table->widthMap.innerIndex[idx];
     }
     else
     {



reply via email to

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