You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ca...@apache.org on 2009/02/23 23:08:18 UTC
svn commit: r747160 -
/incubator/pdfbox/trunk/src/main/java/org/apache/pdfbox/encoding/Encoding.java
Author: carrier
Date: Mon Feb 23 22:08:12 2009
New Revision: 747160
URL: http://svn.apache.org/viewvc?rev=747160&view=rev
Log:
Patch to add support for external glyphlist files (PDFBOX-431). By Justin LeFebvre (justinl at basistech dot com)
Modified:
incubator/pdfbox/trunk/src/main/java/org/apache/pdfbox/encoding/Encoding.java
Modified: incubator/pdfbox/trunk/src/main/java/org/apache/pdfbox/encoding/Encoding.java
URL: http://svn.apache.org/viewvc/incubator/pdfbox/trunk/src/main/java/org/apache/pdfbox/encoding/Encoding.java?rev=747160&r1=747159&r2=747160&view=diff
==============================================================================
--- incubator/pdfbox/trunk/src/main/java/org/apache/pdfbox/encoding/Encoding.java (original)
+++ incubator/pdfbox/trunk/src/main/java/org/apache/pdfbox/encoding/Encoding.java Mon Feb 23 22:08:12 2009
@@ -17,20 +17,18 @@
package org.apache.pdfbox.encoding;
import java.io.BufferedReader;
+import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
-import java.io.IOException;
-
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.StringTokenizer;
+import java.io.File;
import org.apache.pdfbox.cos.COSName;
-
-import org.apache.pdfbox.util.ResourceLoader;
-
import org.apache.pdfbox.pdmodel.common.COSObjectable;
+import org.apache.pdfbox.util.ResourceLoader;
/**
* This is an interface to a text encoder.
@@ -40,8 +38,6 @@
*/
public abstract class Encoding implements COSObjectable
{
-
-
/**
* This is a mapping from a character code to a character name.
*/
@@ -56,10 +52,44 @@
static
{
+ //Loads the official Adobe Glyph List
+ loadGlyphList("Resources/glyphlist.txt");
+
+ // Load an external glyph list file that user can give as JVM property
+ String location = System.getProperty("glyphlist_ext");
+ if(location != null){
+ File external = new File(location);
+ if(external.exists()){
+ loadGlyphList(location);
+ }
+ }
+
+ NAME_TO_CHARACTER.put( COSName.getPDFName( ".notdef" ), "" );
+ NAME_TO_CHARACTER.put( COSName.getPDFName( "fi" ), "fi" );
+ NAME_TO_CHARACTER.put( COSName.getPDFName( "fl" ), "fl" );
+ NAME_TO_CHARACTER.put( COSName.getPDFName( "ffi" ), "ffi" );
+ NAME_TO_CHARACTER.put( COSName.getPDFName( "ff" ), "ff" );
+ NAME_TO_CHARACTER.put( COSName.getPDFName( "pi" ), "pi" );
+
+ Iterator keys = NAME_TO_CHARACTER.keySet().iterator();
+ while( keys.hasNext() )
+ {
+ Object key = keys.next();
+ Object value = NAME_TO_CHARACTER.get( key );
+ CHARACTER_TO_NAME.put( value, key );
+ }
+ }
+
+ /**
+ * Loads a glyph list from a given location and populates the NAME_TO_CHARACTER hashmap
+ * for character lookups
+ * @param location - The string location of the glyphlist file
+ */
+ private static void loadGlyphList(String location){
BufferedReader glyphStream = null;
try
{
- InputStream resource = ResourceLoader.loadResource( "Resources/glyphlist.txt" );
+ InputStream resource = ResourceLoader.loadResource( location );
glyphStream = new BufferedReader( new InputStreamReader( resource ) );
String line = null;
while( (line = glyphStream.readLine()) != null )
@@ -82,7 +112,6 @@
int characterCode = Integer.parseInt( tokenizer.nextToken(), 16 );
value += (char)characterCode;
}
-
NAME_TO_CHARACTER.put( COSName.getPDFName( characterName ), value );
}
catch( NumberFormatException nfe )
@@ -112,23 +141,8 @@
}
}
-
-
- NAME_TO_CHARACTER.put( COSName.getPDFName( ".notdef" ), "" );
- NAME_TO_CHARACTER.put( COSName.getPDFName( "fi" ), "fi" );
- NAME_TO_CHARACTER.put( COSName.getPDFName( "fl" ), "fl" );
- NAME_TO_CHARACTER.put( COSName.getPDFName( "ffi" ), "ffi" );
- NAME_TO_CHARACTER.put( COSName.getPDFName( "ff" ), "ff" );
- NAME_TO_CHARACTER.put( COSName.getPDFName( "pi" ), "pi" );
-
- Iterator keys = NAME_TO_CHARACTER.keySet().iterator();
- while( keys.hasNext() )
- {
- Object key = keys.next();
- Object value = NAME_TO_CHARACTER.get( key );
- CHARACTER_TO_NAME.put( value, key );
- }
}
+
/**