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++ )
         {


Reply via email to