You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by le...@apache.org on 2011/03/26 15:53:30 UTC

svn commit: r1085728 - in /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font: PDFont.java PDTrueTypeFont.java PDType1AfmPfbFont.java

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