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