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())