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();