You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ti...@apache.org on 2015/09/09 17:59:56 UTC
svn commit: r1702043 - in
/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font:
PDCIDFontType0.java PDCIDFontType2.java PDTrueTypeFont.java
PDType1Font.java UniUtil.java
Author: tilman
Date: Wed Sep 9 15:59:56 2015
New Revision: 1702043
URL: http://svn.apache.org/r1702043
Log:
PDFBOX-2945: optimize uniXXXX calculation, as proposed by Philip Helger
Added:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/UniUtil.java (with props)
Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType0.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType2.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDTrueTypeFont.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1Font.java
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType0.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType0.java?rev=1702043&r1=1702042&r2=1702043&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType0.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType0.java Wed Sep 9 15:59:56 2015
@@ -35,6 +35,7 @@ import org.apache.fontbox.util.BoundingB
import org.apache.pdfbox.cos.COSDictionary;
import org.apache.pdfbox.io.IOUtils;
import org.apache.pdfbox.pdmodel.common.PDStream;
+import static org.apache.pdfbox.pdmodel.font.UniUtil.getUniNameOfCodePoint;
import org.apache.pdfbox.util.Matrix;
/**
@@ -272,7 +273,7 @@ public class PDCIDFontType0 extends PDCI
{
return ".notdef";
}
- return String.format("uni%04X", unicodes.codePointAt(0));
+ return getUniNameOfCodePoint(unicodes.codePointAt(0));
}
@Override
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType2.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType2.java?rev=1702043&r1=1702042&r2=1702043&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType2.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType2.java Wed Sep 9 15:59:56 2015
@@ -62,6 +62,8 @@ public class PDCIDFontType2 extends PDCI
* Constructor.
*
* @param fontDictionary The font dictionary according to the PDF specification.
+ * @param parent The parent font.
+ * @throws IOException
*/
public PDCIDFontType2(COSDictionary fontDictionary, PDType0Font parent) throws IOException
{
@@ -237,7 +239,9 @@ public class PDCIDFontType2 extends PDCI
*
* @param code character code
* @return GID
+ * @throws IOException
*/
+ @Override
public int codeToGID(int code) throws IOException
{
if (!isEmbedded)
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDTrueTypeFont.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDTrueTypeFont.java?rev=1702043&r1=1702042&r2=1702043&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDTrueTypeFont.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDTrueTypeFont.java Wed Sep 9 15:59:56 2015
@@ -37,6 +37,7 @@ import org.apache.pdfbox.cos.COSDictiona
import org.apache.pdfbox.cos.COSName;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.common.PDStream;
+import static org.apache.pdfbox.pdmodel.font.UniUtil.getUniNameOfCodePoint;
import org.apache.pdfbox.pdmodel.font.encoding.BuiltInEncoding;
import org.apache.pdfbox.pdmodel.font.encoding.Encoding;
import org.apache.pdfbox.pdmodel.font.encoding.GlyphList;
@@ -355,7 +356,7 @@ public class PDTrueTypeFont extends PDSi
if (!ttf.hasGlyph(name))
{
// try unicode name
- String uniName = String.format("uni%04X", unicode);
+ String uniName = getUniNameOfCodePoint(unicode);
if (!ttf.hasGlyph(uniName))
{
throw new IllegalArgumentException(
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1Font.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1Font.java?rev=1702043&r1=1702042&r2=1702043&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1Font.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1Font.java Wed Sep 9 15:59:56 2015
@@ -37,6 +37,7 @@ import org.apache.pdfbox.cos.COSName;
import org.apache.pdfbox.cos.COSStream;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.common.PDStream;
+import static org.apache.pdfbox.pdmodel.font.UniUtil.getUniNameOfCodePoint;
import org.apache.pdfbox.pdmodel.font.encoding.Encoding;
import org.apache.pdfbox.pdmodel.font.encoding.StandardEncoding;
import org.apache.pdfbox.pdmodel.font.encoding.Type1Encoding;
@@ -464,7 +465,7 @@ public class PDType1Font extends PDSimpl
String unicodes = getGlyphList().toUnicode(name);
if (unicodes != null && unicodes.length() == 1)
{
- String uniName = String.format("uni%04X", unicodes.codePointAt(0));
+ String uniName = getUniNameOfCodePoint(unicodes.codePointAt(0));
if (genericFont.hasGlyph(uniName))
{
return uniName;
Added: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/UniUtil.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/UniUtil.java?rev=1702043&view=auto
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/UniUtil.java (added)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/UniUtil.java Wed Sep 9 15:59:56 2015
@@ -0,0 +1,47 @@
+/*
+ * Copyright 2015 The Apache Software Foundation.
+ *
+ * Licensed 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.pdfbox.pdmodel.font;
+
+import java.util.Locale;
+
+/**
+ * Utility class for Unicode fallback.
+ *
+ * @author Philip Helger
+ */
+class UniUtil
+{
+ private UniUtil()
+ {
+ }
+
+ // faster than String.format("uni%04X", codePoint)
+ static String getUniNameOfCodePoint(int codePoint)
+ {
+ String hex = Integer.toString(codePoint, 16).toUpperCase(Locale.US);
+ switch (hex.length())
+ {
+ case 1:
+ return "uni0" + hex;
+ case 2:
+ return "uni00" + hex;
+ case 3:
+ return "uni000" + hex;
+ default:
+ return "uni" + hex;
+ }
+ }
+}
Propchange: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/UniUtil.java
------------------------------------------------------------------------------
svn:eol-style = native