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/07/29 21:31:24 UTC

svn commit: r1614469 - /pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1CFont.java

Author: lehmi
Date: Tue Jul 29 19:31:23 2014
New Revision: 1614469

URL: http://svn.apache.org/r1614469
Log:
PDFBOX-2247: fixed encoding issue when extracting text by taking a char offset (FirtsChar-1) into account

Modified:
    pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1CFont.java

Modified: pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1CFont.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1CFont.java?rev=1614469&r1=1614468&r2=1614469&view=diff
==============================================================================
--- pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1CFont.java (original)
+++ pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1CFont.java Tue Jul 29 19:31:23 2014
@@ -92,6 +92,8 @@ public class PDType1CFont extends PDSimp
 
     private static final byte[] SPACE_BYTES = {(byte)32};
 
+    private final int charOffset;
+    
     /**
      * Constructor.
      * @param fontDictionary the corresponding dictionary
@@ -99,6 +101,7 @@ public class PDType1CFont extends PDSimp
     public PDType1CFont( COSDictionary fontDictionary ) throws IOException
     {
         super( fontDictionary );
+        charOffset = getFirstChar() > -1 ? getFirstChar() - 1 : 0; 
         load();
     }
 
@@ -121,7 +124,11 @@ public class PDType1CFont extends PDSimp
     {
         int code = getCodeFromArray(bytes, offset, length);
         String character = null;
-        if (codeToSID.containsKey(code))
+        if (charOffset > 0)
+        {
+            code += charOffset;
+        }
+        else if (codeToSID.containsKey(code))
         {
             code = codeToSID.get(code);
         }