Author: lehmi Date: Sat Mar 26 14:53:29 2011 New Revision: 1085728 URL: http://svn.apache.org/viewvc?rev=1085728&view=rev Log: PDFBOX-976: ensure that the list of widths consists of floats only
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDFont.java pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDTrueTypeFont.java pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1AfmPfbFont.java Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDFont.java URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDFont.java?rev=1085728&r1=1085727&r2=1085728&view=diff ============================================================================== --- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDFont.java (original) +++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDFont.java Sat Mar 26 14:53:29 2011 @@ -691,7 +691,7 @@ public abstract class PDFont implements * * @return The widths of the characters. */ - public List getWidths() + public List<Float> getWidths() { if (widths == null) { @@ -709,7 +709,7 @@ public abstract class PDFont implements * * @param widths The widths of the character codes. */ - public void setWidths( List widths ) + public void setWidths( List<Float> widths ) { this.widths = widths; font.setItem( COSName.WIDTHS, COSArrayList.converterToCOSArray( this.widths ) ); Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDTrueTypeFont.java URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDTrueTypeFont.java?rev=1085728&r1=1085727&r2=1085728&view=diff ============================================================================== --- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDTrueTypeFont.java (original) +++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDTrueTypeFont.java Sat Mar 26 14:53:29 2011 @@ -282,6 +282,7 @@ public class PDTrueTypeFont extends PDSi HeaderTable header = ttf.getHeader(); PDRectangle rect = new PDRectangle(); + float scaling = 1000f/header.getUnitsPerEm(); rect.setLowerLeftX( header.getXMin() * 1000f/header.getUnitsPerEm() ); rect.setLowerLeftY( header.getYMin() * 1000f/header.getUnitsPerEm() ); rect.setUpperRightX( header.getXMax() * 1000f/header.getUnitsPerEm() ); @@ -338,8 +339,8 @@ public class PDTrueTypeFont extends PDSi int maxWidths = glyphToCCode.length; HorizontalMetricsTable hMet = ttf.getHorizontalMetrics(); int[] widthValues = hMet.getAdvanceWidth(); - List widths = new ArrayList(maxWidths); - Integer zero = new Integer( 250 ); + List<Float> widths = new ArrayList<Float>(maxWidths); + float zero = 250; for( int i=0; i<maxWidths; i++ ) { widths.add( zero ); @@ -349,8 +350,7 @@ public class PDTrueTypeFont extends PDSi if(glyphToCCode[i]-firstChar < widths.size() && glyphToCCode[i]-firstChar >= 0 && widths.get( glyphToCCode[i]-firstChar) == zero ) { - widths.set( glyphToCCode[i]-firstChar, - new Integer( (int)(widthValues[i]* 1000f)/header.getUnitsPerEm() ) ); + widths.set( glyphToCCode[i]-firstChar, widthValues[i]*scaling ); } } setWidths( widths ); Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1AfmPfbFont.java URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1AfmPfbFont.java?rev=1085728&r1=1085727&r2=1085728&view=diff ============================================================================== --- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1AfmPfbFont.java (original) +++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1AfmPfbFont.java Sat Mar 26 14:53:29 2011 @@ -149,8 +149,8 @@ public class PDType1AfmPfbFont extends P List<CharMetric> listmetric = metric.getCharMetrics(); Encoding encoding = getFontEncoding(); int maxWidths = 256; - List<Number> widths = new ArrayList(maxWidths); - Integer zero = new Integer(250); + List<Float> widths = new ArrayList<Float>(maxWidths); + float zero = 250; Iterator<CharMetric> iter = listmetric.iterator(); for( int i=0; i<maxWidths; i++ ) {