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/09/22 02:55:23 UTC
svn commit: r1626652 - in
/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font:
PDFont.java PDType1Font.java
Author: jahewson
Date: Mon Sep 22 00:55:22 2014
New Revision: 1626652
URL: http://svn.apache.org/r1626652
Log:
PDFBOX-2298: Use FontMatrix from embedded Type 1 fonts
Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDFont.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1Font.java
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDFont.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDFont.java?rev=1626652&r1=1626651&r2=1626652&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDFont.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDFont.java Mon Sep 22 00:55:22 2014
@@ -45,7 +45,7 @@ import org.apache.pdfbox.util.Vector;
public abstract class PDFont implements COSObjectable, PDFontLike
{
private static final Log LOG = LogFactory.getLog(PDFont.class);
- private static final Matrix DEFAULT_FONT_MATRIX = new Matrix(0.001f, 0, 0, 0.001f, 0, 0);
+ protected static final Matrix DEFAULT_FONT_MATRIX = new Matrix(0.001f, 0, 0, 0.001f, 0, 0);
protected final COSDictionary dict;
private final CMap toUnicodeCMap;
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1Font.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1Font.java?rev=1626652&r1=1626651&r2=1626652&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1Font.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1Font.java Mon Sep 22 00:55:22 2014
@@ -22,6 +22,7 @@ import java.io.InputStream;
import java.net.URL;
import java.util.Arrays;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
import org.apache.commons.logging.Log;
@@ -40,6 +41,7 @@ import org.apache.pdfbox.encoding.Type1E
import org.apache.pdfbox.encoding.WinAnsiEncoding;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.common.PDStream;
+import org.apache.pdfbox.util.Matrix;
/**
* A PostScript Type 1 Font.
@@ -139,6 +141,7 @@ public class PDType1Font extends PDSimpl
private final Type1Font type1font; // embedded font
private final Type1Equivalent type1Equivalent; // embedded or system font for rendering
private final boolean isEmbedded;
+ private Matrix fontMatrix;
/**
* Creates a Type 1 standard 14 font for embedding.
@@ -451,4 +454,34 @@ public class PDType1Font extends PDSimpl
return type1Equivalent.getPath(name);
}
}
+
+ @Override
+ public Matrix getFontMatrix()
+ {
+ if (fontMatrix == null)
+ {
+ // PDF specified that Type 1 fonts use a 1000upem matrix, but some fonts specify
+ // their own custom matrix anyway, for example PDFBOX-2298
+ if (type1font != null)
+ {
+ List<Number> numbers = type1font.getFontMatrix();
+ if (numbers != null && numbers.size() == 6)
+ {
+ fontMatrix = new Matrix(
+ numbers.get(0).floatValue(), numbers.get(1).floatValue(),
+ numbers.get(2).floatValue(), numbers.get(3).floatValue(),
+ numbers.get(4).floatValue(), numbers.get(5).floatValue());
+ }
+ else
+ {
+ return super.getFontMatrix();
+ }
+ }
+ else
+ {
+ fontMatrix = DEFAULT_FONT_MATRIX;
+ }
+ }
+ return fontMatrix;
+ }
}