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 2021/03/07 11:22:05 UTC

svn commit: r1887293 - in /pdfbox/branches/2.0/pdfbox/src: main/java/org/apache/pdfbox/pdmodel/font/PDSimpleFont.java main/java/org/apache/pdfbox/pdmodel/font/PDType1CFont.java test/java/org/apache/pdfbox/pdmodel/font/PDFontTest.java

Author: tilman
Date: Sun Mar  7 11:22:05 2021
New Revision: 1887293

URL: http://svn.apache.org/viewvc?rev=1887293&view=rev
Log:
PDFBOX-5115: more support of soft hyphen

Modified:
    pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDSimpleFont.java
    pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1CFont.java
    pdfbox/branches/2.0/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/font/PDFontTest.java

Modified: pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDSimpleFont.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDSimpleFont.java?rev=1887293&r1=1887292&r2=1887293&view=diff
==============================================================================
--- pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDSimpleFont.java (original)
+++ pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDSimpleFont.java Sun Mar  7 11:22:05 2021
@@ -326,14 +326,14 @@ public abstract class PDSimpleFont exten
             if ("nbspace".equals(nameInAFM))
             {
                 // PDFBOX-4944: nbspace is missing in AFM files,
-                // but PDF specification tells "it is typographically the same as SPACE"
+                // but PDF specification tells "it shall be typographically the same as SPACE"
                 nameInAFM = "space";
             }
-
-            // the Adobe AFMs don't include .notdef, but Acrobat uses 250, test with PDFBOX-2334
-            if (".notdef".equals(nameInAFM))
+            else if ("sfthyphen".equals(nameInAFM))
             {
-                return 250f;
+                // PDFBOX-5115: sfthyphen is missing in AFM files,
+                // but PDF specification tells "it shall be typographically the same as hyphen"
+                nameInAFM = "hyphen";
             }
 
             return getStandard14AFM().getCharacterWidth(nameInAFM);

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=1887293&r1=1887292&r2=1887293&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 Sun Mar  7 11:22:05 2021
@@ -163,7 +163,15 @@ public class PDType1CFont extends PDSimp
         {
             return new GeneralPath();
         }
-        return "nbspace".equals(name) ? genericFont.getPath("space") : genericFont.getPath(name);
+        if ("sfthyphen".equals(name))
+        {
+            return genericFont.getPath("hyphen");
+        }
+        if ("nbspace".equals(name))
+        {
+            return genericFont.getPath("space");
+        }
+        return genericFont.getPath(name);
     }
 
     @Override

Modified: pdfbox/branches/2.0/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/font/PDFontTest.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/font/PDFontTest.java?rev=1887293&r1=1887292&r2=1887293&view=diff
==============================================================================
--- pdfbox/branches/2.0/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/font/PDFontTest.java (original)
+++ pdfbox/branches/2.0/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/font/PDFontTest.java Sun Mar  7 11:22:05 2021
@@ -425,6 +425,9 @@ public class PDFontTest
         PDFont font2 = PDType0Font.load(doc, PDFontTest.class.getResourceAsStream(
                 "/org/apache/pdfbox/resources/ttf/LiberationSans-Regular.ttf"));
 
+        Assert.assertEquals(font1.getStringWidth("-"), font1.getStringWidth("\u00AD"), 0);
+        Assert.assertEquals(font2.getStringWidth("-"), font2.getStringWidth("\u00AD"), 0);
+
         PDPageContentStream cs = new PDPageContentStream(doc, page);
         cs.beginText();
         cs.newLineAtOffset(100, 500);