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 2010/06/15 21:14:13 UTC

svn commit: r955007 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1CFont.java

Author: lehmi
Date: Tue Jun 15 19:14:13 2010
New Revision: 955007

URL: http://svn.apache.org/viewvc?rev=955007&view=rev
Log:
PDFBOX-725: added support for 2-byte encodings

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

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1CFont.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1CFont.java?rev=955007&r1=955006&r2=955007&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1CFont.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1CFont.java Tue Jun 15 19:14:13 2010
@@ -140,13 +140,15 @@ public class PDType1CFont extends PDSimp
 
     private String getCharacter( byte[] bytes, int offset, int length )
     {
-        if( length != 1)
+        if (length > 2)
         {
             return null;
         }
-
-        Integer code = Integer.valueOf(bytes[offset] & 0xff);
-
+        int code = bytes[offset] & 0xff;
+        if (length == 2)
+        {
+            code = code * 256 + bytes[offset+1] & 0xff;
+        }
         return (String)this.codeToCharacter.get(code);
     }
 
@@ -198,12 +200,16 @@ public class PDType1CFont extends PDSimp
 
     private String getName( byte[] bytes, int offset, int length )
     {
-        if( length != 1 )
+        if (length > 2)
         {
             return null;
         }
-
-        Integer code = Integer.valueOf(bytes[offset] & 0xff);
+        
+        int code = bytes[offset] & 0xff;
+        if (length == 2)
+        {
+            code = code * 256 + bytes[offset+1] & 0xff;
+        }
 
         return (String)this.codeToName.get(code);
     }
@@ -574,12 +580,14 @@ public class PDType1CFont extends PDSimp
      */
     private static class PDFEncoding extends CFFEncoding
     {
-        // TODO unused??
-        private CFFEncoding parentEncoding = null;
 
         private PDFEncoding( CFFEncoding parent )
         {
-            parentEncoding = parent;
+            Iterator<Entry> parentEntries = parent.getEntries().iterator();
+            while(parentEntries.hasNext())
+            {
+                addEntry(parentEntries.next());
+            }
         }
 
         public boolean isFontSpecific()
@@ -587,10 +595,6 @@ public class PDType1CFont extends PDSimp
             return true;
         }
 
-        public void register( int code, int sid )
-        {
-            super.register(code, sid);
-        }
     }
 
     /**
@@ -599,12 +603,13 @@ public class PDType1CFont extends PDSimp
      */
     private static class PDFCharset extends CFFCharset
     {
-        // TODO unused??
-        private CFFCharset parentCharset = null;
-
         private PDFCharset( CFFCharset parent )
         {
-            parentCharset = parent;
+            Iterator<Entry> parentEntries = parent.getEntries().iterator();
+            while(parentEntries.hasNext())
+            {
+                addEntry(parentEntries.next());
+            }
         }
 
         public boolean isFontSpecific()
@@ -612,10 +617,6 @@ public class PDType1CFont extends PDSimp
             return true;
         }
 
-        public void register( int sid, String name )
-        {
-            super.register(sid, name);
-        }
     }
 
 }