You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ti...@apache.org on 2016/06/28 20:01:58 UTC
svn commit: r1750576 - in
/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font:
PDFont.java PDSimpleFont.java PDType1Font.java
Author: tilman
Date: Tue Jun 28 20:01:57 2016
New Revision: 1750576
URL: http://svn.apache.org/viewvc?rev=1750576&view=rev
Log:
PDFBOX-3382, PDFBOX-3404: use concurrentHashMap for standard 14 fonts; remove double WinAnsiEncoding assignment and use it as a singleton; remove unused field
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/PDSimpleFont.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1Font.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=1750576&r1=1750575&r2=1750576&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 Tue Jun 28 20:01:57 2016
@@ -24,6 +24,7 @@ import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.fontbox.afm.FontMetrics;
@@ -64,7 +65,7 @@ public abstract class PDFont implements
private List<Float> widths;
private float avgFontWidth;
private float fontWidthOfSpace = -1f;
- private final Map<Integer, Float> codeToWidthMap = new HashMap<Integer, Float>();
+ private final Map<Integer, Float> codeToWidthMap;
/**
* Constructor for embedding.
@@ -76,6 +77,7 @@ public abstract class PDFont implements
toUnicodeCMap = null;
fontDescriptor = null;
afmStandard14 = null;
+ codeToWidthMap = new HashMap<Integer, Float>();
}
/**
@@ -92,6 +94,8 @@ public abstract class PDFont implements
throw new IllegalArgumentException("No AFM for font " + baseFont);
}
fontDescriptor = PDType1FontEmbedder.buildFontDescriptor(afmStandard14);
+ // standard 14 fonts may be accessed concurrently, as they are singletons
+ codeToWidthMap = new ConcurrentHashMap<Integer, Float>();
}
/**
@@ -102,6 +106,7 @@ public abstract class PDFont implements
protected PDFont(COSDictionary fontDictionary) throws IOException
{
dict = fontDictionary;
+ codeToWidthMap = new HashMap<Integer, Float>();
// standard 14 fonts use an AFM
afmStandard14 = Standard14Fonts.getAFM(getName()); // may be null (it usually is)
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDSimpleFont.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDSimpleFont.java?rev=1750576&r1=1750575&r2=1750576&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDSimpleFont.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDSimpleFont.java Tue Jun 28 20:01:57 2016
@@ -47,8 +47,7 @@ public abstract class PDSimpleFont exten
protected GlyphList glyphList;
private Boolean isSymbolic;
private final Set<Integer> noUnicode = new HashSet<Integer>(); // for logging
- private Map<String, Integer> invertedEncoding; // for writing
-
+
/**
* Constructor for embedding.
*/
@@ -64,8 +63,6 @@ public abstract class PDSimpleFont exten
{
super(baseFont);
- this.encoding = WinAnsiEncoding.INSTANCE;
-
// assign the glyph list based on the font
if ("ZapfDingbats".equals(baseFont))
{
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1Font.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1Font.java?rev=1750576&r1=1750575&r2=1750576&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1Font.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1Font.java Tue Jun 28 20:01:57 2016
@@ -25,6 +25,7 @@ import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.fontbox.EncodedFont;
@@ -41,11 +42,11 @@ import org.apache.pdfbox.pdmodel.common.
import org.apache.pdfbox.pdmodel.font.encoding.Encoding;
import org.apache.pdfbox.pdmodel.font.encoding.StandardEncoding;
import org.apache.pdfbox.pdmodel.font.encoding.Type1Encoding;
-import org.apache.pdfbox.pdmodel.font.encoding.WinAnsiEncoding;
import org.apache.pdfbox.util.Matrix;
import static org.apache.pdfbox.pdmodel.font.UniUtil.getUniNameOfCodePoint;
+import org.apache.pdfbox.pdmodel.font.encoding.WinAnsiEncoding;
/**
* A PostScript Type 1 Font.
@@ -107,7 +108,7 @@ public class PDType1Font extends PDSimpl
/**
* to improve encoding speed.
*/
- private final Map <Integer,byte[]> codeToBytesMap = new HashMap<Integer,byte[]>();
+ private final Map <Integer,byte[]> codeToBytesMap;
/**
* Creates a Type 1 standard 14 font for embedding.
@@ -120,8 +121,10 @@ public class PDType1Font extends PDSimpl
dict.setItem(COSName.SUBTYPE, COSName.TYPE1);
dict.setName(COSName.BASE_FONT, baseFont);
- encoding = new WinAnsiEncoding();
+ encoding = WinAnsiEncoding.INSTANCE;
dict.setItem(COSName.ENCODING, COSName.WIN_ANSI_ENCODING);
+ // standard 14 fonts may be accessed concurrently, as they are singletons
+ codeToBytesMap = new ConcurrentHashMap<Integer,byte[]>();
// todo: could load the PFB font here if we wanted to support Standard 14 embedding
type1font = null;
@@ -165,6 +168,7 @@ public class PDType1Font extends PDSimpl
isEmbedded = true;
isDamaged = false;
fontMatrixTransform = new AffineTransform();
+ codeToBytesMap = new HashMap<Integer,byte[]>();
}
/**
@@ -185,6 +189,7 @@ public class PDType1Font extends PDSimpl
isEmbedded = true;
isDamaged = false;
fontMatrixTransform = new AffineTransform();
+ codeToBytesMap = new HashMap<Integer,byte[]>();
}
/**
@@ -197,6 +202,7 @@ public class PDType1Font extends PDSimpl
public PDType1Font(COSDictionary fontDictionary) throws IOException
{
super(fontDictionary);
+ codeToBytesMap = new HashMap<Integer,byte[]>();
PDFontDescriptor fd = getFontDescriptor();
Type1Font t1 = null;