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 2018/03/04 18:48:36 UTC

svn commit: r1825831 - in /pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font: PDCIDFont.java PDFontLike.java PDSimpleFont.java PDType0Font.java

Author: tilman
Date: Sun Mar  4 18:48:36 2018
New Revision: 1825831

URL: http://svn.apache.org/viewvc?rev=1825831&view=rev
Log:
PDFBOX-3457: add methods to find out whether there is an explicit font width, by John Hewson

Modified:
    pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFont.java
    pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDFontLike.java
    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/PDType0Font.java

Modified: pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFont.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFont.java?rev=1825831&r1=1825830&r2=1825831&view=diff
==============================================================================
--- pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFont.java (original)
+++ pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFont.java Sun Mar  4 18:48:36 2018
@@ -259,6 +259,12 @@ public abstract class PDCIDFont implemen
     }
 
     @Override
+    public boolean hasExplicitWidth(int code) throws IOException
+    {
+        return widths.get(codeToCID(code)) != null;
+    }
+
+    @Override
     public Vector getPositionVector(int code)
     {
         int cid = codeToCID(code);

Modified: pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDFontLike.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDFontLike.java?rev=1825831&r1=1825830&r2=1825831&view=diff
==============================================================================
--- pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDFontLike.java (original)
+++ pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDFontLike.java Sun Mar  4 18:48:36 2018
@@ -89,6 +89,15 @@ public interface PDFontLike
     float getWidth(int code) throws IOException;
 
     /**
+     * Returns true if the Font dictionary specifies an explicit width for the given glyph.
+     * This includes Width, W but not default widths entries.
+     * 
+     * @param code character code
+     * @throws IOException if the font could not be read
+     */
+    boolean hasExplicitWidth(int code) throws IOException;
+
+    /**
      * Returns the width of a glyph in the embedded font file.
      *
      * @param code character code

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=1825831&r1=1825830&r2=1825831&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  4 18:48:36 2018
@@ -423,4 +423,18 @@ public abstract class PDSimpleFont exten
     {
         return false;
     }
+
+    @Override
+    public boolean hasExplicitWidth(int code) throws IOException
+    {
+        if (dict.containsKey(COSName.WIDTHS))
+        {
+            int firstChar = dict.getInt(COSName.FIRST_CHAR, -1);
+            if (code >= firstChar && code - firstChar < getWidths().size())
+            {
+                return true;
+            }
+        }
+        return false;
+    }
 }

Modified: pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType0Font.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType0Font.java?rev=1825831&r1=1825830&r2=1825831&view=diff
==============================================================================
--- pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType0Font.java (original)
+++ pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType0Font.java Sun Mar  4 18:48:36 2018
@@ -399,6 +399,12 @@ public class PDType0Font extends PDFont
     }
 
     @Override
+    public boolean hasExplicitWidth(int code) throws IOException
+    {
+        return descendantFont.hasExplicitWidth(code);
+    }
+
+    @Override
     public float getAverageFontWidth()
     {
         return descendantFont.getAverageFontWidth();