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