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 2015/12/21 12:38:40 UTC

svn commit: r1721132 - in /pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox: afm/AFMParser.java cff/CFFParser.java cff/DataInput.java cmap/CMapParser.java ttf/NamingTable.java ttf/TTFDataStream.java util/Charsets.java

Author: lehmi
Date: Mon Dec 21 11:38:40 2015
New Revision: 1721132

URL: http://svn.apache.org/viewvc?rev=1721132&view=rev
Log:
PDFBOX-3131: use predefined Charsets instead of strings

Added:
    pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/util/Charsets.java   (with props)
Modified:
    pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/afm/AFMParser.java
    pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cff/CFFParser.java
    pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cff/DataInput.java
    pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cmap/CMapParser.java
    pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/ttf/NamingTable.java
    pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/ttf/TTFDataStream.java

Modified: pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/afm/AFMParser.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/afm/AFMParser.java?rev=1721132&r1=1721131&r2=1721132&view=diff
==============================================================================
--- pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/afm/AFMParser.java (original)
+++ pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/afm/AFMParser.java Mon Dec 21 11:38:40 2015
@@ -23,6 +23,7 @@ import java.util.List;
 import java.util.StringTokenizer;
 
 import org.apache.fontbox.util.BoundingBox;
+import org.apache.fontbox.util.Charsets;
 
 /**
  * This class is used to parse AFM(Adobe Font Metrics) documents.
@@ -692,7 +693,7 @@ public class AFMParser
                 throw new IOException( "Error parsing AFM file:" + e );
             }
         }
-        return new String( data, "ISO-8859-1" );
+        return new String( data, Charsets.ISO_8859_1 );
     }
 
     /**

Modified: pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cff/CFFParser.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cff/CFFParser.java?rev=1721132&r1=1721131&r2=1721132&view=diff
==============================================================================
--- pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cff/CFFParser.java (original)
+++ pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cff/CFFParser.java Mon Dec 21 11:38:40 2015
@@ -25,6 +25,8 @@ import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
 
+import org.apache.fontbox.util.Charsets;
+
 /**
  * This class represents a parser for a CFF font. 
  * @author Villu Ruusmann
@@ -151,7 +153,7 @@ public class CFFParser
     private static String readTagName(CFFDataInput input) throws IOException
     {
         byte[] b = input.readBytes(4);
-        return new String(b, "ISO-8859-1");
+        return new String(b, Charsets.ISO_8859_1);
     }
 
     private static long readLong(CFFDataInput input) throws IOException
@@ -219,7 +221,7 @@ public class CFFParser
         for (int i = 0; i < count; i++)
         {
             int length = offsets[i + 1] - offsets[i];
-            indexDataValues.add(new String(input.readBytes(length), "ISO-8859-1"));
+            indexDataValues.add(new String(input.readBytes(length), Charsets.ISO_8859_1));
         }
         return indexDataValues;
     }

Modified: pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cff/DataInput.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cff/DataInput.java?rev=1721132&r1=1721131&r2=1721132&view=diff
==============================================================================
--- pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cff/DataInput.java (original)
+++ pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cff/DataInput.java Mon Dec 21 11:38:40 2015
@@ -19,6 +19,8 @@ package org.apache.fontbox.cff;
 import java.io.EOFException;
 import java.io.IOException;
 
+import org.apache.fontbox.util.Charsets;
+
 /**
  * This class contains some functionality to read a byte buffer.
  * 
@@ -73,7 +75,7 @@ public class DataInput
      */
     public String getString() throws IOException
     {
-        return new String(inputBuffer, "ISO-8859-1");
+        return new String(inputBuffer, Charsets.ISO_8859_1);
     }
 
     /**

Modified: pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cmap/CMapParser.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cmap/CMapParser.java?rev=1721132&r1=1721131&r2=1721132&view=diff
==============================================================================
--- pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cmap/CMapParser.java (original)
+++ pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cmap/CMapParser.java Mon Dec 21 11:38:40 2015
@@ -27,6 +27,8 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+import org.apache.fontbox.util.Charsets;
+
 /**
  * Parses a CMap stream.
  *
@@ -699,11 +701,11 @@ public class CMapParser
         String retval;
         if (bytes.length == 1)
         {
-            retval = new String(bytes, "ISO-8859-1");
+            retval = new String(bytes, Charsets.ISO_8859_1);
         }
         else
         {
-            retval = new String(bytes, "UTF-16BE");
+            retval = new String(bytes, Charsets.UTF_16BE);
         }
         return retval;
     }

Modified: pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/ttf/NamingTable.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/ttf/NamingTable.java?rev=1721132&r1=1721131&r2=1721132&view=diff
==============================================================================
--- pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/ttf/NamingTable.java (original)
+++ pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/ttf/NamingTable.java Mon Dec 21 11:38:40 2015
@@ -17,12 +17,14 @@
 package org.apache.fontbox.ttf;
 
 import java.io.IOException;
-
+import java.nio.charset.Charset;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+import org.apache.fontbox.util.Charsets;
+
 /**
  * A table in a true type font.
  * 
@@ -80,25 +82,25 @@ public class NamingTable extends TTFTabl
             data.seek(getOffset() + (2*3)+numberOfNameRecords*2*6+nr.getStringOffset());
             int platform = nr.getPlatformId();
             int encoding = nr.getPlatformEncodingId();
-            String charset = "ISO-8859-1";
+            Charset charset = Charsets.ISO_8859_1;
             if (platform == 3 && (encoding == 1 || encoding == 0))
             {
-                charset = "UTF-16";
+                charset = Charsets.UTF_16;
             }
             else if (platform == 2)
             {
                 if (encoding == 0)
                 {
-                    charset = "US-ASCII";
+                    charset = Charsets.US_ASCII;
                 }
                 else if (encoding == 1)
                 {
                     //not sure is this is correct??
-                    charset = "ISO-10646-1";
+                    charset = Charsets.ISO_10646;
                 }
                 else if (encoding == 2)
                 {
-                    charset = "ISO-8859-1";
+                    charset = Charsets.ISO_8859_1;
                 }
             }
             String string = data.readString(nr.getStringLength(), charset);

Modified: pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/ttf/TTFDataStream.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/ttf/TTFDataStream.java?rev=1721132&r1=1721131&r2=1721132&view=diff
==============================================================================
--- pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/ttf/TTFDataStream.java (original)
+++ pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/ttf/TTFDataStream.java Mon Dec 21 11:38:40 2015
@@ -20,10 +20,13 @@ import java.io.Closeable;
 import java.io.EOFException;
 import java.io.IOException;
 import java.io.InputStream;
+import java.nio.charset.Charset;
 import java.util.Calendar;
 import java.util.GregorianCalendar;
 import java.util.TimeZone;
 
+import org.apache.fontbox.util.Charsets;
+
 /**
  * An interface into a data stream.
  * 
@@ -58,11 +61,11 @@ abstract class TTFDataStream implements
      */
     public String readString(int length) throws IOException
     {
-        return readString(length, "ISO-8859-1");
+        return readString(length, Charsets.ISO_8859_1);
     }
 
     /**
-     * Read a fixed length ascii string.
+     * Read a fixed length string.
      * 
      * @param length The length of the string to read in bytes.
      * @param charset The expected character set of the string.
@@ -76,6 +79,19 @@ abstract class TTFDataStream implements
     }
 
     /**
+     * Read a fixed length string.
+     * 
+     * @param length The length of the string to read in bytes.
+     * @param charset The expected character set of the string.
+     * @return A string of the desired length.
+     * @throws IOException If there is an error reading the data.
+     */
+    public String readString(int length, Charset charset) throws IOException
+    {
+        byte[] buffer = read(length);
+        return new String(buffer, charset);
+    }
+    /**
      * Read an unsigned byte.
      * 
      * @return An unsigned byte.
@@ -212,7 +228,7 @@ abstract class TTFDataStream implements
      */
     public String readTag() throws IOException
     {
-        return new String(read(4), "US-ASCII");
+        return new String(read(4), Charsets.US_ASCII);
     }
 
     /**

Added: pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/util/Charsets.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/util/Charsets.java?rev=1721132&view=auto
==============================================================================
--- pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/util/Charsets.java (added)
+++ pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/util/Charsets.java Mon Dec 21 11:38:40 2015
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.fontbox.util;
+
+import java.nio.charset.Charset;
+
+/**
+ * This class provides an instance of all common charsets used to transform byte arrays into strings. 
+ *  
+ */
+public class Charsets
+{
+    /**
+     * ISO-8859-1 Charset
+     */
+    public static final Charset ISO_8859_1 = Charset.forName("ISO-8859-1");
+    /**
+     * UTF-16 Charset
+     */
+    public static final Charset UTF_16 = Charset.forName("UTF-16");
+    /**
+     * UTF-16BE Charset
+     */
+    public static final Charset UTF_16BE = Charset.forName("UTF-16BE");
+    /**
+     * US-ASCII Charset
+     */
+    public static final Charset US_ASCII = Charset.forName("US-ASCII");
+    /**
+     * ISO-10646 Charset
+     */
+    public static final Charset ISO_10646 = Charset.forName("ISO-10646-UCS-2");
+    
+}
\ No newline at end of file

Propchange: pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/util/Charsets.java
------------------------------------------------------------------------------
    svn:eol-style = native