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/12/16 02:18:52 UTC
svn commit: r1645809 - in
/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox:
pdmodel/font/PDType1CFont.java rendering/PageDrawer.java
Author: jahewson
Date: Tue Dec 16 01:18:52 2014
New Revision: 1645809
URL: http://svn.apache.org/r1645809
Log:
PDFBOX-2499: Handle empty FontFile3
Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1CFont.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/rendering/PageDrawer.java
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=1645809&r1=1645808&r2=1645809&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 Tue Dec 16 01:18:52 2014
@@ -81,6 +81,11 @@ public class PDType1CFont extends PDSimp
if (ff3Stream != null)
{
bytes = IOUtils.toByteArray(ff3Stream.createInputStream());
+ if (bytes.length == 0)
+ {
+ LOG.error("Invalid data for embedded Type1C font " + getName());
+ bytes = null;
+ }
}
}
@@ -88,9 +93,12 @@ public class PDType1CFont extends PDSimp
CFFType1Font cffEmbedded = null;
try
{
- // note: this could be an OpenType file, fortunately CFFParser can handle that
- CFFParser cffParser = new CFFParser();
- cffEmbedded = (CFFType1Font)cffParser.parse(bytes).get(0);
+ if (bytes != null)
+ {
+ // note: this could be an OpenType file, fortunately CFFParser can handle that
+ CFFParser cffParser = new CFFParser();
+ cffEmbedded = (CFFType1Font)cffParser.parse(bytes).get(0);
+ }
}
catch (IOException e)
{
@@ -187,17 +195,18 @@ public class PDType1CFont extends PDSimp
{
if (fontMatrix == null)
{
- List<Number> numbers = cffFont.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
+ if (cffFont != null)
{
- return super.getFontMatrix();
+ List<Number> numbers = cffFont.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());
+ return fontMatrix;
+ }
}
+ fontMatrix = super.getFontMatrix();
}
return fontMatrix;
}
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/rendering/PageDrawer.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/rendering/PageDrawer.java?rev=1645809&r1=1645808&r2=1645809&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/rendering/PageDrawer.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/rendering/PageDrawer.java Tue Dec 16 01:18:52 2014
@@ -384,10 +384,14 @@ public final class PageDrawer extends PD
else if (font instanceof PDType1CFont)
{
PDType1CFont type1CFont = (PDType1CFont)font;
- if (type1CFont.getCFFType1Font() != null) // todo: could be null (need to incorporate fallback)
+ if (type1CFont.getCFFType1Font() != null)
{
glyph2D = new Type1Glyph2D(type1CFont);
}
+ else
+ {
+ glyph2D = new Type1Glyph2D(type1CFont); // fallback to T1-equivalent
+ }
}
else if (font instanceof PDType0Font)
{