You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ja...@apache.org on 2014/08/24 22:11:06 UTC

svn commit: r1620184 - in /pdfbox/branches/no-awt: fontbox/src/main/java/org/apache/fontbox/ttf/TrueTypeFont.java pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1Font.java

Author: jahewson
Date: Sun Aug 24 20:11:05 2014
New Revision: 1620184

URL: http://svn.apache.org/r1620184
Log:
PDFBOX-2262: Fix widths for TrueType instances of Type1Equivalent fonts

Modified:
    pdfbox/branches/no-awt/fontbox/src/main/java/org/apache/fontbox/ttf/TrueTypeFont.java
    pdfbox/branches/no-awt/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1Font.java

Modified: pdfbox/branches/no-awt/fontbox/src/main/java/org/apache/fontbox/ttf/TrueTypeFont.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/no-awt/fontbox/src/main/java/org/apache/fontbox/ttf/TrueTypeFont.java?rev=1620184&r1=1620183&r2=1620184&view=diff
==============================================================================
--- pdfbox/branches/no-awt/fontbox/src/main/java/org/apache/fontbox/ttf/TrueTypeFont.java (original)
+++ pdfbox/branches/no-awt/fontbox/src/main/java/org/apache/fontbox/ttf/TrueTypeFont.java Sun Aug 24 20:11:05 2014
@@ -27,7 +27,6 @@ import java.io.InputStream;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.fontbox.encoding.Encoding;
-import org.apache.fontbox.encoding.StandardEncoding;
 
 /**
  * A TrueType font file.
@@ -449,7 +448,13 @@ public class TrueTypeFont implements Typ
         readPostScriptNames();
 
         Integer gid = postScriptNames.get(name);
-        return getAdvanceWidth(gid);
+        int width = getAdvanceWidth(gid);
+        int unitsPerEM = getUnitsPerEm();
+        if (unitsPerEM != 1000)
+        {
+            width *= 1000f / unitsPerEM;
+        }
+        return width;
     }
 
     @Override
@@ -465,9 +470,7 @@ public class TrueTypeFont implements Typ
     @Override
     public Encoding getEncoding()
     {
-        // todo: what to use? There isn't a built-in encoding really, could use the MacRoman cmap?
-        log.warn("Using StandardEncoding for Type 1-equivalent TTF");
-        return new StandardEncoding();
+        return null;
     }
 
     @Override

Modified: pdfbox/branches/no-awt/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1Font.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/no-awt/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1Font.java?rev=1620184&r1=1620183&r2=1620184&view=diff
==============================================================================
--- pdfbox/branches/no-awt/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1Font.java (original)
+++ pdfbox/branches/no-awt/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1Font.java Sun Aug 24 20:11:05 2014
@@ -33,6 +33,7 @@ import org.apache.pdfbox.cos.COSDictiona
 import org.apache.pdfbox.cos.COSName;
 import org.apache.pdfbox.cos.COSStream;
 import org.apache.pdfbox.encoding.Encoding;
+import org.apache.pdfbox.encoding.StandardEncoding;
 import org.apache.pdfbox.encoding.Type1Encoding;
 import org.apache.pdfbox.encoding.WinAnsiEncoding;
 import org.apache.pdfbox.pdmodel.PDDocument;
@@ -327,7 +328,15 @@ public class PDType1Font extends PDSimpl
         else
         {
             // extract from Type1 font/substitute
-            return Type1Encoding.fromFontBox(type1Equivalent.getEncoding());
+            if (type1Equivalent.getEncoding() != null)
+            {
+                return Type1Encoding.fromFontBox(type1Equivalent.getEncoding());
+            }
+            else
+            {
+                // default (only happens with TTFs)
+                return StandardEncoding.INSTANCE;
+            }
         }
     }