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/08/19 00:00:27 UTC
svn commit: r1618755 - in
/pdfbox/branches/no-awt/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font:
ExternalFonts.java PDTrueTypeFont.java
Author: jahewson
Date: Mon Aug 18 22:00:27 2014
New Revision: 1618755
URL: http://svn.apache.org/r1618755
Log:
PDFBOX-2262: Use TTF fallback and improved substitutions
Modified:
pdfbox/branches/no-awt/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/ExternalFonts.java
pdfbox/branches/no-awt/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDTrueTypeFont.java
Modified: pdfbox/branches/no-awt/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/ExternalFonts.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/no-awt/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/ExternalFonts.java?rev=1618755&r1=1618754&r2=1618755&view=diff
==============================================================================
--- pdfbox/branches/no-awt/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/ExternalFonts.java (original)
+++ pdfbox/branches/no-awt/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/ExternalFonts.java Mon Aug 18 22:00:27 2014
@@ -93,7 +93,7 @@ public final class ExternalFonts
private final static Map<String, List<String>> substitutes = new HashMap<String, List<String>>();
static
{
- // well-known substitutes commonly found on end-user systems
+ // substitutes for standard 14 fonts
substitutes.put("Courier",
Arrays.asList("CourierNew", "CourierNewPSMT"));
substitutes.put("Courier-Bold",
@@ -125,6 +125,7 @@ public final class ExternalFonts
// the Adobe Supplement to the ISO 32000 specifies some alternative names for some
// of the standard 14 fonts, so we map these to our fallbacks above
substitutes.put("CourierCourierNew", substitutes.get("Courier"));
+ substitutes.put("CourierNew", substitutes.get("Courier"));
substitutes.put("CourierNew,Italic", substitutes.get("Courier-Oblique"));
substitutes.put("CourierNew,Bold", substitutes.get("Courier-Bold"));
substitutes.put("CourierNew,BoldItalic", substitutes.get("Courier-BoldOblique"));
Modified: pdfbox/branches/no-awt/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDTrueTypeFont.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/no-awt/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDTrueTypeFont.java?rev=1618755&r1=1618754&r2=1618755&view=diff
==============================================================================
--- pdfbox/branches/no-awt/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDTrueTypeFont.java (original)
+++ pdfbox/branches/no-awt/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDTrueTypeFont.java Mon Aug 18 22:00:27 2014
@@ -65,7 +65,7 @@ public class PDTrueTypeFont extends PDFo
private CMAPEncodingEntry cmapMacintoshSymbol = null;
private boolean cmapInitialized = false;
- private TrueTypeFont ttf = null;
+ private final TrueTypeFont ttf;
private final HashMap<Integer, Float> advanceWidths = new HashMap<Integer, Float> ();
/**
@@ -78,6 +78,7 @@ public class PDTrueTypeFont extends PDFo
super(fontDictionary);
PDFontDescriptorDictionary fd = (PDFontDescriptorDictionary) super.getFontDescriptor();
+ TrueTypeFont ttfFont = null;
if (fd != null)
{
PDStream ff2Stream = fd.getFontFile2();
@@ -85,16 +86,24 @@ public class PDTrueTypeFont extends PDFo
{
// embedded
TTFParser ttfParser = new TTFParser(true);
- ttf = ttfParser.parseTTF(ff2Stream.createInputStream());
+ ttfFont = ttfParser.parseTTF(ff2Stream.createInputStream());
}
}
// substitute
- if (ttf == null)
+ if (ttfFont == null)
{
- ttf = ExternalFonts.getTrueTypeFont(getBaseFont());
+ ttfFont = ExternalFonts.getTrueTypeFont(getBaseFont());
+
+ // fallback
+ if (ttfFont == null)
+ {
+ LOG.warn("Using fallback font for " + getBaseFont());
+ ttfFont = ExternalFonts.getFallbackFont();
+ }
}
- // todo: put the fallback here? (i.e. make this class fallback-aware - cleaner)
+
+ ttf = ttfFont;
determineEncoding();
}
@@ -299,7 +308,6 @@ public class PDTrueTypeFont extends PDFo
cmapWinSymbol = null;
cmapMacintoshSymbol = null;
cmapInitialized = false;
- ttf = null;
advanceWidths.clear();
}
}