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 2014/06/05 18:48:03 UTC
svn commit: r1600697 -
/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDFont.java
Author: lehmi
Date: Thu Jun 5 16:48:02 2014
New Revision: 1600697
URL: http://svn.apache.org/r1600697
Log:
PDFBOX-62: don't repeat looking for widths if the font doesn't provide any
Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDFont.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=1600697&r1=1600696&r2=1600697&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 Thu Jun 5 16:48:02 2014
@@ -87,6 +87,8 @@ public abstract class PDFont implements
private boolean hasToUnicode = false;
+ private boolean widthsAreMissing = false;
+
protected static Map<String, CMap> cmapObjects = Collections.synchronizedMap(new HashMap<String, CMap>());
/**
@@ -681,13 +683,17 @@ public abstract class PDFont implements
*/
public List<Integer> getWidths()
{
- if (widths == null)
+ if (widths == null && !widthsAreMissing)
{
COSArray array = (COSArray) font.getDictionaryObject(COSName.WIDTHS);
if (array != null)
{
widths = COSArrayList.convertIntegerCOSArrayToList(array);
}
+ else
+ {
+ widthsAreMissing = true;
+ }
}
return widths;
}
@@ -771,10 +777,13 @@ public abstract class PDFont implements
if (charCode >= firstChar && charCode <= lastChar)
{
// maybe the font doesn't provide any widths
- getWidths();
- if (widths != null)
+ if (!widthsAreMissing)
{
- width = widths.get(charCode - firstChar).floatValue();
+ getWidths();
+ if (widths != null)
+ {
+ width = widths.get(charCode - firstChar).floatValue();
+ }
}
}
else