You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ti...@apache.org on 2017/05/26 09:02:12 UTC

svn commit: r1796261 - /pdfbox/branches/2.0/fontbox/src/main/java/org/apache/fontbox/ttf/HorizontalMetricsTable.java

Author: tilman
Date: Fri May 26 09:02:12 2017
New Revision: 1796261

URL: http://svn.apache.org/viewvc?rev=1796261&view=rev
Log:
PDFBOX-3806: always create nonHorizontalLeftSideBearing table in correct size, even if no bytes are left to read

Modified:
    pdfbox/branches/2.0/fontbox/src/main/java/org/apache/fontbox/ttf/HorizontalMetricsTable.java

Modified: pdfbox/branches/2.0/fontbox/src/main/java/org/apache/fontbox/ttf/HorizontalMetricsTable.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/fontbox/src/main/java/org/apache/fontbox/ttf/HorizontalMetricsTable.java?rev=1796261&r1=1796260&r2=1796261&view=diff
==============================================================================
--- pdfbox/branches/2.0/fontbox/src/main/java/org/apache/fontbox/ttf/HorizontalMetricsTable.java (original)
+++ pdfbox/branches/2.0/fontbox/src/main/java/org/apache/fontbox/ttf/HorizontalMetricsTable.java Fri May 26 09:02:12 2017
@@ -63,17 +63,20 @@ public class HorizontalMetricsTable exte
             bytesRead += 4;
         }
 
-        if (bytesRead < getLength())
+        int numberNonHorizontal = numGlyphs - numHMetrics;
+
+        // handle bad fonts with too many hmetrics
+        if (numberNonHorizontal < 0)
         {
-            int numberNonHorizontal = numGlyphs - numHMetrics;
+            numberNonHorizontal = numGlyphs;
+        }
 
-            // handle bad fonts with too many hmetrics
-            if (numberNonHorizontal < 0)
-            {
-                numberNonHorizontal = numGlyphs;
-            }
+        // make sure that table is never null and correct size, even with bad fonts that have no
+        // "leftSideBearing" table although they should
+        nonHorizontalLeftSideBearing = new short[numberNonHorizontal];
 
-            nonHorizontalLeftSideBearing = new short[ numberNonHorizontal ];
+        if (bytesRead < getLength())
+        {
             for( int i=0; i<numberNonHorizontal; i++ )
             {
                 if (bytesRead < getLength())