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;
+ }
+ }
}