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 2009/03/26 22:45:41 UTC
svn commit: r758873 - in
/incubator/pdfbox/trunk/src/main/java/org/apache/pdfbox: cos/ pdmodel/font/
Author: lehmi
Date: Thu Mar 26 21:45:40 2009
New Revision: 758873
URL: http://svn.apache.org/viewvc?rev=758873&view=rev
Log:
PDFBOX-441: Thanks Sean Bridges and Chris Nash for the hints/suggestions
replaced HashMap with WeakHashMap
reduced number of accesses to the synchronized-map by using predefined COSName constants instead of getting one by calling getPDFName within the font-package
Modified:
incubator/pdfbox/trunk/src/main/java/org/apache/pdfbox/cos/COSName.java
incubator/pdfbox/trunk/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFont.java
incubator/pdfbox/trunk/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType0Font.java
incubator/pdfbox/trunk/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType2Font.java
incubator/pdfbox/trunk/src/main/java/org/apache/pdfbox/pdmodel/font/PDFontDescriptorDictionary.java
incubator/pdfbox/trunk/src/main/java/org/apache/pdfbox/pdmodel/font/PDFontFactory.java
incubator/pdfbox/trunk/src/main/java/org/apache/pdfbox/pdmodel/font/PDMMType1Font.java
incubator/pdfbox/trunk/src/main/java/org/apache/pdfbox/pdmodel/font/PDSimpleFont.java
incubator/pdfbox/trunk/src/main/java/org/apache/pdfbox/pdmodel/font/PDType0Font.java
incubator/pdfbox/trunk/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1Font.java
incubator/pdfbox/trunk/src/main/java/org/apache/pdfbox/pdmodel/font/PDType3Font.java
Modified: incubator/pdfbox/trunk/src/main/java/org/apache/pdfbox/cos/COSName.java
URL: http://svn.apache.org/viewvc/incubator/pdfbox/trunk/src/main/java/org/apache/pdfbox/cos/COSName.java?rev=758873&r1=758872&r2=758873&view=diff
==============================================================================
--- incubator/pdfbox/trunk/src/main/java/org/apache/pdfbox/cos/COSName.java (original)
+++ incubator/pdfbox/trunk/src/main/java/org/apache/pdfbox/cos/COSName.java Thu Mar 26 21:45:40 2009
@@ -20,7 +20,7 @@
import java.io.OutputStream;
import java.util.Collections;
-import java.util.HashMap;
+import java.util.WeakHashMap;
import java.util.Map;
import org.apache.pdfbox.exceptions.COSVisitorException;
@@ -39,7 +39,7 @@
* Note: This is synchronized because a HashMap must be synchronized if accessed by
* multiple threads.
*/
- private static Map nameMap = Collections.synchronizedMap( new HashMap(8192) );
+ private static Map nameMap = Collections.synchronizedMap( new WeakHashMap(8192) );
/**
@@ -125,6 +125,22 @@
/**
* A common COSName value.
*/
+ public static final COSName CHAR_PROCS = new COSName( "CharProcs" );
+ /**
+ * A common COSName value.
+ */
+ public static final COSName CHAR_SET = new COSName( "CharSet" );
+ /**
+ * A common COSName value.
+ */
+ public static final COSName CID_FONT_TYPE0 = new COSName( "CIDFontType0" );
+ /**
+ * A common COSName value.
+ */
+ public static final COSName CID_FONT_TYPE2 = new COSName( "CIDFontType2" );
+ /**
+ * A common COSName value.
+ */
public static final COSName COLORSPACE = new COSName( "ColorSpace" );
/**
* A common COSName value.
@@ -181,6 +197,10 @@
/**
* A common COSName value.
*/
+ public static final COSName DW = new COSName( "DW" );
+ /**
+ * A common COSName value.
+ */
public static final COSName ENCODING = new COSName( "Encoding" );
/**
* A common COSName value.
@@ -225,6 +245,14 @@
/**
* A common COSName value.
*/
+ public static final COSName FONT_BBOX = new COSName( "FontBBox" );
+ /**
+ * A common COSName value.
+ */
+ public static final COSName FONT_FAMILY = new COSName("FontFamily");
+ /**
+ * A common COSName value.
+ */
public static final COSName FONT_FILE = new COSName("FontFile");
/**
* A common COSName value.
@@ -245,6 +273,14 @@
/**
* A common COSName value.
*/
+ public static final COSName FONT_NAME = new COSName("FontName" );
+ /**
+ * A common COSName value.
+ */
+ public static final COSName FONT_STRETCH = new COSName("FontStretch" );
+ /**
+ * A common COSName value.
+ */
public static final COSName FORMTYPE = new COSName( "FormType" );
/**
* A common COSName value.
@@ -329,6 +365,10 @@
/**
* A common COSName value.
*/
+ public static final COSName MM_TYPE1 = new COSName( "MMType1" );
+ /**
+ * A common COSName value.
+ */
public static final COSName N = new COSName( "N" );
/**
* A common COSName value.
@@ -421,14 +461,26 @@
/**
* A common COSName value.
*/
+ public static final COSName TYPE1 = new COSName( "Type1" );
+ /**
+ * A common COSName value.
+ */
+ public static final COSName TYPE3 = new COSName( "Type3" );
+ /**
+ * A common COSName value.
+ */
public static final COSName V = new COSName( "V" );
/**
* A common COSName value.
*/
public static final COSName VERSION = new COSName( "Version" );
/**
- * A common COSName value.
- */
+ * A common COSName value.
+ */
+ public static final COSName W = new COSName( "W" );
+ /**
+ * A common COSName value.
+ */
public static final COSName WIDTHS = new COSName( "Widths" );
/**
* A common COSName value.
Modified: incubator/pdfbox/trunk/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFont.java
URL: http://svn.apache.org/viewvc/incubator/pdfbox/trunk/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFont.java?rev=758873&r1=758872&r2=758873&view=diff
==============================================================================
--- incubator/pdfbox/trunk/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFont.java (original)
+++ incubator/pdfbox/trunk/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFont.java Thu Mar 26 21:45:40 2009
@@ -114,7 +114,7 @@
public long getDefaultWidth()
{
long dw = 1000;
- COSNumber number = (COSNumber)font.getDictionaryObject( COSName.getPDFName( "DW" ) );
+ COSNumber number = (COSNumber)font.getDictionaryObject( COSName.DW);
if( number != null )
{
dw = number.intValue();
@@ -129,7 +129,7 @@
*/
public void setDefaultWidth( long dw )
{
- font.setItem( COSName.getPDFName( "DW" ), new COSInteger( dw ) );
+ font.setItem( COSName.DW, new COSInteger( dw ) );
}
/**
@@ -152,7 +152,7 @@
Float widthFloat = (Float)widthCache.get( new Integer( code ) );
if( widthFloat == null )
{
- COSArray widths = (COSArray)font.getDictionaryObject( COSName.getPDFName( "W" ) );
+ COSArray widths = (COSArray)font.getDictionaryObject( COSName.W );
if( widths != null )
{
@@ -249,7 +249,7 @@
float totalWidths = 0.0f;
float characterCount = 0.0f;
float defaultWidth = getDefaultWidth();
- COSArray widths = (COSArray)font.getDictionaryObject( COSName.getPDFName( "W" ) );
+ COSArray widths = (COSArray)font.getDictionaryObject( COSName.W );
if( widths != null )
{
Modified: incubator/pdfbox/trunk/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType0Font.java
URL: http://svn.apache.org/viewvc/incubator/pdfbox/trunk/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType0Font.java?rev=758873&r1=758872&r2=758873&view=diff
==============================================================================
--- incubator/pdfbox/trunk/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType0Font.java (original)
+++ incubator/pdfbox/trunk/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType0Font.java Thu Mar 26 21:45:40 2009
@@ -33,7 +33,7 @@
public PDCIDFontType0Font()
{
super();
- font.setItem( COSName.SUBTYPE, COSName.getPDFName( "CIDFontType0" ) );
+ font.setItem( COSName.SUBTYPE, COSName.CID_FONT_TYPE0 );
}
/**
Modified: incubator/pdfbox/trunk/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType2Font.java
URL: http://svn.apache.org/viewvc/incubator/pdfbox/trunk/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType2Font.java?rev=758873&r1=758872&r2=758873&view=diff
==============================================================================
--- incubator/pdfbox/trunk/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType2Font.java (original)
+++ incubator/pdfbox/trunk/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType2Font.java Thu Mar 26 21:45:40 2009
@@ -33,7 +33,7 @@
public PDCIDFontType2Font()
{
super();
- font.setItem( COSName.SUBTYPE, COSName.getPDFName( "CIDFontType2" ) );
+ font.setItem( COSName.SUBTYPE, COSName.CID_FONT_TYPE2 );
}
/**
Modified: incubator/pdfbox/trunk/src/main/java/org/apache/pdfbox/pdmodel/font/PDFontDescriptorDictionary.java
URL: http://svn.apache.org/viewvc/incubator/pdfbox/trunk/src/main/java/org/apache/pdfbox/pdmodel/font/PDFontDescriptorDictionary.java?rev=758873&r1=758872&r2=758873&view=diff
==============================================================================
--- incubator/pdfbox/trunk/src/main/java/org/apache/pdfbox/pdmodel/font/PDFontDescriptorDictionary.java (original)
+++ incubator/pdfbox/trunk/src/main/java/org/apache/pdfbox/pdmodel/font/PDFontDescriptorDictionary.java Thu Mar 26 21:45:40 2009
@@ -85,7 +85,7 @@
public String getFontName()
{
String retval = null;
- COSName name = (COSName)dic.getDictionaryObject( COSName.getPDFName( "FontName" ) );
+ COSName name = (COSName)dic.getDictionaryObject( COSName.FONT_NAME );
if( name != null )
{
retval = name.getName();
@@ -105,7 +105,7 @@
{
name = COSName.getPDFName( fontName );
}
- dic.setItem( COSName.getPDFName( "FontName" ), name );
+ dic.setItem( COSName.FONT_NAME, name );
}
/**
@@ -116,7 +116,7 @@
public String getFontFamily()
{
String retval = null;
- COSString name = (COSString)dic.getDictionaryObject( COSName.getPDFName( "FontFamily" ) );
+ COSString name = (COSString)dic.getDictionaryObject( COSName.FONT_FAMILY );
if( name != null )
{
retval = name.getString();
@@ -136,7 +136,7 @@
{
name = new COSString( fontFamily );
}
- dic.setItem( COSName.getPDFName( "FontFamily" ), name );
+ dic.setItem( COSName.FONT_FAMILY, name );
}
/**
@@ -173,7 +173,7 @@
public String getFontStretch()
{
String retval = null;
- COSName name = (COSName)dic.getDictionaryObject( COSName.getPDFName( "FontStretch" ) );
+ COSName name = (COSName)dic.getDictionaryObject( COSName.FONT_STRETCH );
if( name != null )
{
retval = name.getName();
@@ -193,7 +193,7 @@
{
name = COSName.getPDFName( fontStretch );
}
- dic.setItem( COSName.getPDFName( "FontStretch" ), name );
+ dic.setItem( COSName.FONT_STRETCH, name );
}
/**
@@ -223,7 +223,7 @@
*/
public PDRectangle getFontBoundingBox()
{
- COSArray rect = (COSArray)dic.getDictionaryObject( COSName.getPDFName( "FontBBox" ) );
+ COSArray rect = (COSArray)dic.getDictionaryObject( COSName.FONT_BBOX );
PDRectangle retval = null;
if( rect != null )
{
@@ -244,7 +244,7 @@
{
array = rect.getCOSArray();
}
- dic.setItem( COSName.getPDFName( "FontBBox" ), array );
+ dic.setItem( COSName.FONT_BBOX, array );
}
/**
@@ -483,7 +483,7 @@
public String getCharSet()
{
String retval = null;
- COSString name = (COSString)dic.getDictionaryObject( COSName.getPDFName( "CharSet" ) );
+ COSString name = (COSString)dic.getDictionaryObject( COSName.CHAR_SET );
if( name != null )
{
retval = name.getString();
@@ -503,7 +503,7 @@
{
name = new COSString( charSet );
}
- dic.setItem( COSName.getPDFName( "CharSet" ), name );
+ dic.setItem( COSName.CHAR_SET, name );
}
/**
Modified: incubator/pdfbox/trunk/src/main/java/org/apache/pdfbox/pdmodel/font/PDFontFactory.java
URL: http://svn.apache.org/viewvc/incubator/pdfbox/trunk/src/main/java/org/apache/pdfbox/pdmodel/font/PDFontFactory.java?rev=758873&r1=758872&r2=758873&view=diff
==============================================================================
--- incubator/pdfbox/trunk/src/main/java/org/apache/pdfbox/pdmodel/font/PDFontFactory.java (original)
+++ incubator/pdfbox/trunk/src/main/java/org/apache/pdfbox/pdmodel/font/PDFontFactory.java Thu Mar 26 21:45:40 2009
@@ -88,31 +88,31 @@
}
COSName subType = (COSName)dic.getDictionaryObject( COSName.SUBTYPE );
- if( subType.equals( COSName.getPDFName( "Type1" ) ) )
+ if( subType.equals( COSName.TYPE1) )
{
retval = new PDType1Font( dic );
}
- else if( subType.equals( COSName.getPDFName( "MMType1" ) ) )
+ else if( subType.equals( COSName.MM_TYPE1 ) )
{
retval = new PDMMType1Font( dic );
}
- else if( subType.equals( COSName.getPDFName( "TrueType" ) ) )
+ else if( subType.equals( COSName.TRUE_TYPE ) )
{
retval = new PDTrueTypeFont( dic );
}
- else if( subType.equals( COSName.getPDFName( "Type3" ) ) )
+ else if( subType.equals( COSName.TYPE3 ) )
{
retval = new PDType3Font( dic );
}
- else if( subType.equals( COSName.getPDFName( "Type0" ) ) )
+ else if( subType.equals( COSName.TYPE0 ) )
{
retval = new PDType0Font( dic );
}
- else if( subType.equals( COSName.getPDFName( "CIDFontType0" ) ) )
+ else if( subType.equals( COSName.CID_FONT_TYPE0 ) )
{
retval = new PDCIDFontType0Font( dic );
}
- else if( subType.equals( COSName.getPDFName( "CIDFontType2" ) ) )
+ else if( subType.equals( COSName.CID_FONT_TYPE2 ) )
{
retval = new PDCIDFontType2Font( dic );
}
Modified: incubator/pdfbox/trunk/src/main/java/org/apache/pdfbox/pdmodel/font/PDMMType1Font.java
URL: http://svn.apache.org/viewvc/incubator/pdfbox/trunk/src/main/java/org/apache/pdfbox/pdmodel/font/PDMMType1Font.java?rev=758873&r1=758872&r2=758873&view=diff
==============================================================================
--- incubator/pdfbox/trunk/src/main/java/org/apache/pdfbox/pdmodel/font/PDMMType1Font.java (original)
+++ incubator/pdfbox/trunk/src/main/java/org/apache/pdfbox/pdmodel/font/PDMMType1Font.java Thu Mar 26 21:45:40 2009
@@ -33,7 +33,7 @@
public PDMMType1Font()
{
super();
- font.setItem( COSName.SUBTYPE, COSName.getPDFName( "MMType1" ) );
+ font.setItem( COSName.SUBTYPE, COSName.MM_TYPE1 );
}
/**
Modified: incubator/pdfbox/trunk/src/main/java/org/apache/pdfbox/pdmodel/font/PDSimpleFont.java
URL: http://svn.apache.org/viewvc/incubator/pdfbox/trunk/src/main/java/org/apache/pdfbox/pdmodel/font/PDSimpleFont.java?rev=758873&r1=758872&r2=758873&view=diff
==============================================================================
--- incubator/pdfbox/trunk/src/main/java/org/apache/pdfbox/pdmodel/font/PDSimpleFont.java (original)
+++ incubator/pdfbox/trunk/src/main/java/org/apache/pdfbox/pdmodel/font/PDSimpleFont.java Thu Mar 26 21:45:40 2009
@@ -238,7 +238,7 @@
public PDFontDescriptor getFontDescriptor() throws IOException
{
PDFontDescriptor retval = null;
- COSDictionary fd = (COSDictionary)font.getDictionaryObject( COSName.getPDFName( "FontDescriptor" ) );
+ COSDictionary fd = (COSDictionary)font.getDictionaryObject( COSName.FONT_DESC );
if( fd == null )
{
FontMetric afm = getAFM();
@@ -267,7 +267,7 @@
{
dic = fontDescriptor.getCOSDictionary();
}
- font.setItem( COSName.getPDFName( "FontDescriptor" ), dic );
+ font.setItem( COSName.FONT_DESC, dic );
}
/**
Modified: incubator/pdfbox/trunk/src/main/java/org/apache/pdfbox/pdmodel/font/PDType0Font.java
URL: http://svn.apache.org/viewvc/incubator/pdfbox/trunk/src/main/java/org/apache/pdfbox/pdmodel/font/PDType0Font.java?rev=758873&r1=758872&r2=758873&view=diff
==============================================================================
--- incubator/pdfbox/trunk/src/main/java/org/apache/pdfbox/pdmodel/font/PDType0Font.java (original)
+++ incubator/pdfbox/trunk/src/main/java/org/apache/pdfbox/pdmodel/font/PDType0Font.java Thu Mar 26 21:45:40 2009
@@ -42,7 +42,7 @@
public PDType0Font()
{
super();
- font.setItem( COSName.SUBTYPE, COSName.getPDFName( "Type0" ) );
+ font.setItem( COSName.SUBTYPE, COSName.TYPE0 );
}
/**
@@ -93,7 +93,7 @@
if (descendentFont == null)
{
COSArray descendantFontArray =
- (COSArray)font.getDictionaryObject( COSName.getPDFName( "DescendantFonts" ) );
+ (COSArray)font.getDictionaryObject( COSName.DESCENDANT_FONTS );
COSDictionary descendantFontDictionary = (COSDictionary)descendantFontArray.getObject( 0 );
descendentFont = PDFontFactory.createFont( descendantFontDictionary );
@@ -117,7 +117,7 @@
if (descendentFont == null)
{
COSArray descendantFontArray =
- (COSArray)font.getDictionaryObject( COSName.getPDFName( "DescendantFonts" ) );
+ (COSArray)font.getDictionaryObject( COSName.DESCENDANT_FONTS );
COSDictionary descendantFontDictionary = (COSDictionary)descendantFontArray.getObject( 0 );
descendentFont = PDFontFactory.createFont( descendantFontDictionary );
@@ -137,7 +137,7 @@
if (descendentFont == null)
{
COSArray descendantFontArray =
- (COSArray)font.getDictionaryObject( COSName.getPDFName( "DescendantFonts" ) );
+ (COSArray)font.getDictionaryObject( COSName.DESCENDANT_FONTS );
COSDictionary descendantFontDictionary = (COSDictionary)descendantFontArray.getObject( 0 );
descendentFont = PDFontFactory.createFont( descendantFontDictionary );
Modified: incubator/pdfbox/trunk/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1Font.java
URL: http://svn.apache.org/viewvc/incubator/pdfbox/trunk/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1Font.java?rev=758873&r1=758872&r2=758873&view=diff
==============================================================================
--- incubator/pdfbox/trunk/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1Font.java (original)
+++ incubator/pdfbox/trunk/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1Font.java Thu Mar 26 21:45:40 2009
@@ -132,7 +132,7 @@
public PDType1Font()
{
super();
- font.setItem( COSName.SUBTYPE, COSName.getPDFName( "Type1" ) );
+ font.setItem( COSName.SUBTYPE, COSName.TYPE1 );
}
/**
Modified: incubator/pdfbox/trunk/src/main/java/org/apache/pdfbox/pdmodel/font/PDType3Font.java
URL: http://svn.apache.org/viewvc/incubator/pdfbox/trunk/src/main/java/org/apache/pdfbox/pdmodel/font/PDType3Font.java?rev=758873&r1=758872&r2=758873&view=diff
==============================================================================
--- incubator/pdfbox/trunk/src/main/java/org/apache/pdfbox/pdmodel/font/PDType3Font.java (original)
+++ incubator/pdfbox/trunk/src/main/java/org/apache/pdfbox/pdmodel/font/PDType3Font.java Thu Mar 26 21:45:40 2009
@@ -47,7 +47,7 @@
public PDType3Font()
{
super();
- font.setItem( COSName.SUBTYPE, COSName.getPDFName( "Type3" ) );
+ font.setItem( COSName.SUBTYPE, COSName.TYPE3 );
}
/**
@@ -72,7 +72,7 @@
Image retval = (Image)images.get( c );
if( retval == null )
{
- COSDictionary charProcs = (COSDictionary)font.getDictionaryObject( COSName.getPDFName( "CharProcs" ) );
+ COSDictionary charProcs = (COSDictionary)font.getDictionaryObject( COSName.CHAR_PROCS );
COSStream stream = (COSStream)charProcs.getDictionaryObject( COSName.getPDFName( "" + character ) );
if( stream != null )
{