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:01 UTC

svn commit: r1887292 - in /pdfbox/trunk/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:00 2021
New Revision: 1887292

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

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

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDSimpleFont.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDSimpleFont.java?rev=1887292&r1=1887291&r2=1887292&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDSimpleFont.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDSimpleFont.java Sun Mar  7 11:22:00 2021
@@ -327,9 +327,15 @@ 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";
             }
+            else if ("sfthyphen".equals(nameInAFM))
+            {
+                // PDFBOX-5115: sfthyphen is missing in AFM files,
+                // but PDF specification tells "it shall be typographically the same as hyphen"
+                nameInAFM = "hyphen";
+            }
 
             // the Adobe AFMs don't include .notdef, but Acrobat uses 250, test with PDFBOX-2334
             if (".notdef".equals(nameInAFM))

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1CFont.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1CFont.java?rev=1887292&r1=1887291&r2=1887292&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1CFont.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1CFont.java Sun Mar  7 11:22:00 2021
@@ -153,7 +153,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
@@ -161,7 +169,15 @@ public class PDType1CFont extends PDSimp
     {
         String name = getEncoding().getName(code);
         name = getNameInFont(name);
-        return "nbspace".equals(name) ? hasGlyph("space") : hasGlyph(name);
+        if ("sfthyphen".equals(name))
+        {
+            return hasGlyph("hyphen");
+        }
+        if ("nbspace".equals(name))
+        {
+            return hasGlyph("space");
+        }
+        return hasGlyph(name);
     }
 
     @Override
@@ -169,7 +185,15 @@ public class PDType1CFont extends PDSimp
     {
         String name = getEncoding().getName(code);
         name = getNameInFont(name);
-        return "nbspace".equals(name) ? getPath("space") : getPath(name);
+        if ("sfthyphen".equals(name))
+        {
+            return getPath("hyphen");
+        }
+        if ("nbspace".equals(name))
+        {
+            return getPath("space");
+        }
+        return getPath(name);
     }
 
     @Override
@@ -181,6 +205,10 @@ public class PDType1CFont extends PDSimp
         {
             name = "space";
         }
+        else if ("sfthyphen".equals(name))
+        {
+            name = "hyphen";
+        }
         GeneralPath path = getPath(name);
         if (path == null)
         {

Modified: pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/font/PDFontTest.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/font/PDFontTest.java?rev=1887292&r1=1887291&r2=1887292&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/font/PDFontTest.java (original)
+++ pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/font/PDFontTest.java Sun Mar  7 11:22:00 2021
@@ -399,6 +399,10 @@ class PDFontTest
             PDFont font1 = PDType1Font.HELVETICA;
             PDFont font2 = PDType0Font.load(doc, PDFontTest.class.getResourceAsStream(
                     "/org/apache/pdfbox/resources/ttf/LiberationSans-Regular.ttf"));
+
+            assertEquals(font1.getStringWidth("-"), font1.getStringWidth("\u00AD"));
+            assertEquals(font2.getStringWidth("-"), font2.getStringWidth("\u00AD"));
+
             try (PDPageContentStream cs = new PDPageContentStream(doc, page))
             {
                 cs.beginText();