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