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 2019/04/22 10:38:40 UTC

svn commit: r1857946 - in /pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox: pdmodel/font/PDType1CFont.java rendering/Type1Glyph2D.java

Author: tilman
Date: Mon Apr 22 10:38:40 2019
New Revision: 1857946

URL: http://svn.apache.org/viewvc?rev=1857946&view=rev
Log:
PDFBOX-3819: try also uniNNNN names

Modified:
    pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1CFont.java
    pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/rendering/Type1Glyph2D.java

Modified: pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1CFont.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1CFont.java?rev=1857946&r1=1857945&r2=1857946&view=diff
==============================================================================
--- pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1CFont.java (original)
+++ pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1CFont.java Mon Apr 22 10:38:40 2019
@@ -283,6 +283,7 @@ public class PDType1CFont extends PDSimp
     public float getWidthFromFont(int code) throws IOException
     {
         String name = codeToName(code);
+        name = getNameInFont(name);
         float width = genericFont.getWidth(name);
 
         Point2D p = new Point2D.Float(width, 0);

Modified: pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/rendering/Type1Glyph2D.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/rendering/Type1Glyph2D.java?rev=1857946&r1=1857945&r2=1857946&view=diff
==============================================================================
--- pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/rendering/Type1Glyph2D.java (original)
+++ pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/rendering/Type1Glyph2D.java Mon Apr 22 10:38:40 2019
@@ -19,6 +19,7 @@ package org.apache.pdfbox.rendering;
 import java.awt.geom.GeneralPath;
 import java.io.IOException;
 import java.util.HashMap;
+import java.util.Locale;
 import java.util.Map;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -65,6 +66,17 @@ final class Type1Glyph2D implements Glyp
                         cache.put(code, path);
                         return path;
                     }
+
+                    // try unicode name
+                    String unicodes = font.getGlyphList().toUnicode(name);
+                    if (unicodes != null && unicodes.length() == 1)
+                    {
+                        String uniName = getUniNameOfCodePoint(unicodes.codePointAt(0));
+                        if (font.hasGlyph(uniName))
+                        {
+                            name = uniName;
+                        }
+                    }
                 }
     
                 // todo: can this happen? should it be encapsulated?
@@ -92,4 +104,21 @@ final class Type1Glyph2D implements Glyp
     {
         cache.clear();
     }
+
+    // copied from UniUtil
+    private static String getUniNameOfCodePoint(int codePoint)
+    {
+        String hex = Integer.toString(codePoint, 16).toUpperCase(Locale.US);
+        switch (hex.length())
+        {
+            case 1:
+                return "uni000" + hex;
+            case 2:
+                return "uni00" + hex;
+            case 3:
+                return "uni0" + hex;
+            default:
+                return "uni" + hex;
+        }
+    }
 }