Index: pdfbox/src/main/java/org/apache/pdfbox/contentstream/PDFStreamEngine.java
===================================================================
--- pdfbox/src/main/java/org/apache/pdfbox/contentstream/PDFStreamEngine.java	(revision 1644000)
+++ pdfbox/src/main/java/org/apache/pdfbox/contentstream/PDFStreamEngine.java	(working copy)
@@ -40,6 +40,7 @@
 import org.apache.pdfbox.pdmodel.PDPage;
 import org.apache.pdfbox.pdmodel.PDResources;
 import org.apache.pdfbox.pdmodel.common.PDRectangle;
+import org.apache.pdfbox.pdmodel.font.FontProvider;
 import org.apache.pdfbox.pdmodel.font.PDFont;
 import org.apache.pdfbox.pdmodel.font.PDFontFactory;
 import org.apache.pdfbox.pdmodel.font.PDType3CharProc;
@@ -82,6 +83,8 @@
     // skip malformed or otherwise unparseable input where possible
     private boolean forceParsing;
 
+    protected FontProvider fontProvider;
+
     /**
      * Creates a new PDFStreamEngine.
      */
@@ -317,7 +320,7 @@
             a.concatenate(Matrix.getTranslatingInstance((float) -transformedBox.getX(),
                     (float) -transformedBox.getY()));
 
-            // Matrix shall be concatenated with A to form a matrix AA that maps from the appearance€™s
+            // Matrix shall be concatenated with A to form a matrix AA that maps from the appearanceï¿½ï¿½s
             // coordinate system to the annotation's rectangle in default user space
             Matrix aa = Matrix.concatenate(matrix, a);
 
@@ -949,4 +952,8 @@
         float y = ctm.getValue(0, 1) + ctm.getValue(1, 1);
         return width * (float)Math.sqrt((x * x + y * y) * 0.5);
     }
+
+    public FontProvider getFontProvider() {
+        return fontProvider;
+    }
 }
Index: pdfbox/src/main/java/org/apache/pdfbox/contentstream/operator/text/SetFontAndSize.java
===================================================================
--- pdfbox/src/main/java/org/apache/pdfbox/contentstream/operator/text/SetFontAndSize.java	(revision 1644000)
+++ pdfbox/src/main/java/org/apache/pdfbox/contentstream/operator/text/SetFontAndSize.java	(working copy)
@@ -47,7 +47,7 @@
             COSName fontName = (COSName)arguments.get(0);
             float fontSize = ((COSNumber)arguments.get(1)).floatValue();
             context.getGraphicsState().getTextState().setFontSize(fontSize);
-            PDFont font = context.getResources().getFont(fontName);
+            PDFont font = context.getResources().getFont(fontName, context.getFontProvider());
             context.getGraphicsState().getTextState().setFont(font);
         }
     }
Index: pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDResources.java
===================================================================
--- pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDResources.java	(revision 1644000)
+++ pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDResources.java	(working copy)
@@ -25,6 +25,7 @@
 import org.apache.pdfbox.cos.COSObject;
 import org.apache.pdfbox.pdmodel.common.COSObjectable;
 import org.apache.pdfbox.pdmodel.documentinterchange.markedcontent.PDPropertyList;
+import org.apache.pdfbox.pdmodel.font.FontProvider;
 import org.apache.pdfbox.pdmodel.font.PDFont;
 import org.apache.pdfbox.pdmodel.font.PDFontFactory;
 import org.apache.pdfbox.pdmodel.graphics.form.PDFormXObject;
@@ -81,7 +82,7 @@
     /**
      * Returns the font resource with the given name, or null if none exists.
      */
-    public PDFont getFont(COSName name) throws IOException
+    public PDFont getFont(COSName name, FontProvider fontProvider) throws IOException
     {
         COSDictionary dict = (COSDictionary)get(COSName.FONT, name);
         if (dict == null)
@@ -88,9 +89,13 @@
         {
             return null;
         }
-        return PDFontFactory.createFont(dict);
+        return PDFontFactory.createFont(dict, fontProvider);
     }
 
+    public PDFont getFont(COSName name) throws IOException {
+        return getFont(name, null);
+    }
+
     /**
      * Returns the color space resource with the given name, or null if none exists.
      */
Index: pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/ExternalFonts.java
===================================================================
--- pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/ExternalFonts.java	(revision 1644000)
+++ pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/ExternalFonts.java	(working copy)
@@ -45,7 +45,13 @@
  */
 public final class ExternalFonts
 {
-    private ExternalFonts() {}
+    public ExternalFonts(FontProvider fontProvider) {
+        if (fontProvider == null) {
+            this.fontProvider = DefaultFontProvider.INSTANCE;
+        } else {
+            this.fontProvider = fontProvider;
+        }
+    }
 
     // lazy thread safe singleton
     private static class DefaultFontProvider
@@ -54,7 +60,7 @@
     }
 
     private static final Log log = LogFactory.getLog(ExternalFonts.class);
-    private static FontProvider fontProvider;
+    private final FontProvider fontProvider;
 
     /** fallback fonts, used as as a last resort */
     private static final TrueTypeFont ttfFallbackFont;
@@ -93,22 +99,10 @@
     }
 
     /**
-     * Sets the font service provider.
-     */
-    public static void setProvider(FontProvider fontProvider)
-    {
-        ExternalFonts.fontProvider = fontProvider;
-    }
-
-    /**
      * Returns the font service provider. Defaults to using FileSystemFontProvider.
      */
-    public static FontProvider getProvider()
+    public FontProvider getProvider()
     {
-        if (fontProvider == null)
-        {
-            fontProvider = DefaultFontProvider.INSTANCE;
-        }
         return fontProvider;
     }
 
@@ -228,7 +222,7 @@
      * @param registryOrdering the CID system registry and ordering e.g. "Adobe-Japan1", if any
      * @param fontDescriptor the font descriptor, if any
      */
-    public static CFFCIDFont getCFFCIDFontFallback(String registryOrdering,
+    public CFFCIDFont getCFFCIDFontFallback(String registryOrdering,
                                                    PDFontDescriptor fontDescriptor)
     {
         // try ROS substitutes
@@ -254,7 +248,7 @@
      * Returns the fallback font, used for rendering when no other fonts are available,
      * we attempt to find a good fallback based on the font descriptor.
      */
-    public static Type1Equivalent getType1FallbackFont(PDFontDescriptor fontDescriptor)
+    public Type1Equivalent getType1FallbackFont(PDFontDescriptor fontDescriptor)
     {
         String fontName = getFallbackFontName(fontDescriptor);
         Type1Equivalent type1Equivalent = getType1EquivalentFont(fontName);
@@ -276,7 +270,7 @@
      * Returns the fallback font, used for rendering when no other fonts are available,
      * we attempt to find a good fallback based on the font descriptor.
      */
-    public static TrueTypeFont getTrueTypeFallbackFont(PDFontDescriptor fontDescriptor)
+    public TrueTypeFont getTrueTypeFallbackFont(PDFontDescriptor fontDescriptor)
     {
         String fontName = getFallbackFontName(fontDescriptor);
         TrueTypeFont ttf = getTrueTypeFont(fontName);
@@ -372,7 +366,7 @@
      *
      * @param postScriptName PostScript font name
      */
-    public static TrueTypeFont getTrueTypeFont(String postScriptName)
+    public TrueTypeFont getTrueTypeFont(String postScriptName)
     {
         // first ask the font provider for the font
         TrueTypeFont ttf = getProvider().getTrueTypeFont(postScriptName);
@@ -398,7 +392,7 @@
      *
      * @param postScriptName PostScript font name
      */
-    public static Type1Font getType1Font(String postScriptName)
+    public Type1Font getType1Font(String postScriptName)
     {
         // first ask the font provider for the font
         Type1Font t1 = getProvider().getType1Font(postScriptName);
@@ -424,7 +418,7 @@
      *
      * @param postScriptName PostScript font name
      */
-    public static CFFType1Font getCFFType1Font(String postScriptName)
+    public CFFType1Font getCFFType1Font(String postScriptName)
     {
         CFFFont cff = getCFFFont(postScriptName);
         if (cff instanceof CFFType1Font)
@@ -439,7 +433,7 @@
      *
      * @param postScriptName PostScript font name
      */
-    public static CFFCIDFont getCFFCIDFont(String postScriptName)
+    public CFFCIDFont getCFFCIDFont(String postScriptName)
     {
         CFFFont cff = getCFFFont(postScriptName);
         if (cff instanceof CFFCIDFont)
@@ -454,7 +448,7 @@
      *
      * @param postScriptName PostScript font name
      */
-    private static CFFFont getCFFFont(String postScriptName)
+    private CFFFont getCFFFont(String postScriptName)
     {
         // first ask the font provider for the font
         CFFFont cff = getProvider().getCFFFont(postScriptName);
@@ -482,7 +476,7 @@
      *
      * @param postScriptName PostScript font name
      */
-    public static Type1Equivalent getType1EquivalentFont(String postScriptName)
+    public Type1Equivalent getType1EquivalentFont(String postScriptName)
     {
         Type1Font t1 = getType1Font(postScriptName);
         if (t1 != null)
Index: pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/FileSystemFontProvider.java
===================================================================
--- pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/FileSystemFontProvider.java	(revision 1644000)
+++ pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/FileSystemFontProvider.java	(working copy)
@@ -42,7 +42,7 @@
  *
  * @author John Hewson
  */
-final class FileSystemFontProvider extends FontProvider
+public class FileSystemFontProvider extends FontProvider
 {
     private static final Log LOG = LogFactory.getLog(FileSystemFontProvider.class);
 
@@ -59,7 +59,7 @@
     /**
      * Constructor.
      */
-    FileSystemFontProvider()
+    public FileSystemFontProvider()
     {
         if (LOG.isTraceEnabled())
         {
Index: pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType0.java
===================================================================
--- pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType0.java	(revision 1644000)
+++ pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType0.java	(working copy)
@@ -109,8 +109,9 @@
         }
         else
         {
+            ExternalFonts externalFonts = new ExternalFonts(parent.fontProvider);
             // substitute
-            CFFCIDFont cidSub = ExternalFonts.getCFFCIDFont(getBaseFont());
+            CFFCIDFont cidSub = externalFonts.getCFFCIDFont(getBaseFont());
             if (cidSub != null)
             {
                 cidFont = cidSub;
@@ -132,7 +133,7 @@
                     }
                 }
 
-                cidSub = ExternalFonts.getCFFCIDFontFallback(registryOrdering, getFontDescriptor());
+                cidSub = externalFonts.getCFFCIDFontFallback(registryOrdering, getFontDescriptor());
                 cidFont = cidSub;
                 t1Font = null;
 
Index: pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType2.java
===================================================================
--- pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType2.java	(revision 1644000)
+++ pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType2.java	(working copy)
@@ -128,7 +128,7 @@
         if (ttfFont == null)
         {
             // substitute
-            TrueTypeFont ttfSubstitute = ExternalFonts.getTrueTypeFont(getBaseFont());
+            TrueTypeFont ttfSubstitute = new ExternalFonts(parent.fontProvider).getTrueTypeFont(getBaseFont());
             if (ttfSubstitute != null)
             {
                 ttfFont = ttfSubstitute;
@@ -136,7 +136,7 @@
             else
             {
                 // fallback
-                ttfFont = ExternalFonts.getTrueTypeFallbackFont(getFontDescriptor());
+                ttfFont = new ExternalFonts(parent.fontProvider).getTrueTypeFallbackFont(getFontDescriptor());
                 LOG.warn("Using fallback font '" + ttfFont + "' for '" + getBaseFont() + "'");
             }
         }
Index: pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDFont.java
===================================================================
--- pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDFont.java	(revision 1644000)
+++ pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDFont.java	(working copy)
@@ -58,6 +58,7 @@
     private float avgFontWidth;
     private float fontWidthOfSpace = -1f;
     private Boolean isSymbolic;
+    protected FontProvider fontProvider;
 
     /**
      * Constructor for embedding.
Index: pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDFontFactory.java
===================================================================
--- pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDFontFactory.java	(revision 1644000)
+++ pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDFontFactory.java	(working copy)
@@ -43,7 +43,7 @@
      * @return a PDFont instance, based on the SubType entry of the dictionary
      * @throws IOException
      */
-    public static PDFont createFont(COSDictionary dictionary) throws IOException
+    public static PDFont createFont(COSDictionary dictionary, FontProvider fontProvider) throws IOException
     {
         COSName type = dictionary.getCOSName(COSName.TYPE, COSName.FONT);
         if (!COSName.FONT.equals(type))
@@ -59,10 +59,10 @@
             {
                 if (((COSDictionary)fd).containsKey(COSName.FONT_FILE3))
                 {
-                    return new PDType1CFont(dictionary);
+                    return new PDType1CFont(dictionary, fontProvider);
                 }
             }
-            return new PDType1Font(dictionary);
+            return new PDType1Font(dictionary, fontProvider);
         }
         else if (COSName.MM_TYPE1.equals(subType))
         {
@@ -71,22 +71,22 @@
             {
                 if (((COSDictionary)fd).containsKey(COSName.FONT_FILE3))
                 {
-                    return new PDType1CFont(dictionary);
+                    return new PDType1CFont(dictionary, fontProvider);
                 }
             }
-            return new PDMMType1Font(dictionary);
+            return new PDMMType1Font(dictionary, fontProvider);
         }
         else if (COSName.TRUE_TYPE.equals(subType))
         {
-            return new PDTrueTypeFont(dictionary);
+            return new PDTrueTypeFont(dictionary, fontProvider);
         }
         else if (COSName.TYPE3.equals(subType))
         {
-            return new PDType3Font(dictionary);
+            return new PDType3Font(dictionary, fontProvider);
         }
         else if (COSName.TYPE0.equals(subType))
         {
-            return new PDType0Font(dictionary);
+            return new PDType0Font(dictionary, fontProvider);
         }
         else if (COSName.CID_FONT_TYPE0.equals(subType))
         {
@@ -101,7 +101,7 @@
             // assuming Type 1 font (see PDFBOX-1988) because it seems that Adobe Reader does this
             // however, we may need more sophisticated logic perhaps looking at the FontFile
             LOG.warn("Invalid font subtype '" + subType + "'");
-            return new PDType1Font(dictionary);
+            return new PDType1Font(dictionary, fontProvider);
         }
     }
 
@@ -148,6 +148,6 @@
         dict.setItem(COSName.TYPE, COSName.FONT);
         dict.setItem (COSName.SUBTYPE, COSName.TRUE_TYPE);
         dict.setString(COSName.BASE_FONT, "Arial");
-        return createFont(dict);
+        return createFont(dict, null);
     }
 }
Index: pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDMMType1Font.java
===================================================================
--- pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDMMType1Font.java	(revision 1644000)
+++ pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDMMType1Font.java	(working copy)
@@ -32,8 +32,8 @@
      *
      * @param fontDictionary font dictionary
      */
-    public PDMMType1Font(COSDictionary fontDictionary) throws IOException
+    public PDMMType1Font(COSDictionary fontDictionary, FontProvider fontProvider) throws IOException
     {
-        super(fontDictionary);
+        super(fontDictionary, fontProvider);
     }
 }
Index: pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDTrueTypeFont.java
===================================================================
--- pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDTrueTypeFont.java	(revision 1644000)
+++ pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDTrueTypeFont.java	(working copy)
@@ -105,9 +105,10 @@
      *
      * @param fontDictionary The font dictionary according to the PDF specification.
      */
-    public PDTrueTypeFont(COSDictionary fontDictionary) throws IOException
+    public PDTrueTypeFont(COSDictionary fontDictionary, FontProvider fontProvider) throws IOException
     {
         super(fontDictionary);
+        this.fontProvider = fontProvider;
 
         TrueTypeFont ttfFont = null;
         boolean fontIsDamaged = false;
@@ -141,12 +142,12 @@
         // substitute
         if (ttfFont == null)
         {
-            ttfFont = ExternalFonts.getTrueTypeFont(getBaseFont());
+            ttfFont = new ExternalFonts(fontProvider).getTrueTypeFont(getBaseFont());
 
             // fallback
             if (ttfFont == null)
             {
-                ttfFont = ExternalFonts.getTrueTypeFallbackFont(getFontDescriptor());
+                ttfFont = new ExternalFonts(fontProvider).getTrueTypeFallbackFont(getFontDescriptor());
                 LOG.warn("Using fallback font '" + ttfFont + "' for '" + getBaseFont() + "'");
             }
         }
Index: pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType0Font.java
===================================================================
--- pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType0Font.java	(revision 1644000)
+++ pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType0Font.java	(working copy)
@@ -50,9 +50,10 @@
      * 
      * @param fontDictionary The font dictionary according to the PDF specification.
      */
-    public PDType0Font(COSDictionary fontDictionary) throws IOException
+    public PDType0Font(COSDictionary fontDictionary, FontProvider fontProvider) throws IOException
     {
         super(fontDictionary);
+        this.fontProvider = fontProvider;
         COSArray descendantFonts = (COSArray)dict.getDictionaryObject(COSName.DESCENDANT_FONTS);
         COSDictionary descendantFontDictionary = (COSDictionary) descendantFonts.getObject(0);
 
Index: pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1CFont.java
===================================================================
--- pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1CFont.java	(revision 1644000)
+++ pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1CFont.java	(working copy)
@@ -69,9 +69,10 @@
      * @param fontDictionary the corresponding dictionary
      * @throws IOException it something went wrong
      */
-    public PDType1CFont(COSDictionary fontDictionary) throws IOException
+    public PDType1CFont(COSDictionary fontDictionary, FontProvider fontProvider) throws IOException
     {
         super(fontDictionary);
+        this.fontProvider = fontProvider;
 
         PDFontDescriptor fd = getFontDescriptor();
         byte[] bytes = null;
@@ -107,7 +108,8 @@
         }
         else
         {
-            Type1Equivalent t1Equiv = ExternalFonts.getType1EquivalentFont(getBaseFont());
+            ExternalFonts externalFonts = new ExternalFonts(fontProvider);
+            Type1Equivalent t1Equiv = externalFonts.getType1EquivalentFont(getBaseFont());
             if (t1Equiv != null)
             {
                 type1Equivalent = t1Equiv;
@@ -114,7 +116,7 @@
             }
             else
             {
-                type1Equivalent = ExternalFonts.getType1FallbackFont(getFontDescriptor());
+                type1Equivalent = externalFonts.getType1FallbackFont(getFontDescriptor());
                 LOG.warn("Using fallback font " + type1Equivalent.getName() + " for " + getBaseFont());
             }
             isEmbedded = false;
Index: pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1Font.java
===================================================================
--- pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1Font.java	(revision 1644000)
+++ pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1Font.java	(working copy)
@@ -103,7 +103,7 @@
 
         // todo: could load the PFB font here if we wanted to support Standard 14 embedding
         type1font = null;
-        type1Equivalent = ExternalFonts.getType1EquivalentFont(getBaseFont());
+        type1Equivalent = new ExternalFonts(fontProvider).getType1EquivalentFont(getBaseFont());
         isEmbedded = false;
         isDamaged = false;
     }
@@ -131,9 +131,10 @@
      * 
      * @param fontDictionary font dictionary
      */
-    public PDType1Font(COSDictionary fontDictionary) throws IOException
+    public PDType1Font(COSDictionary fontDictionary, FontProvider fontProvider) throws IOException
     {
         super(fontDictionary);
+        this.fontProvider = fontProvider;
 
         PDFontDescriptor fd = getFontDescriptor();
         Type1Font t1 = null;
@@ -185,7 +186,7 @@
         // try to find a suitable .pfb font to substitute
         if (t1 == null)
         {
-            t1 = ExternalFonts.getType1Font(getBaseFont());
+            t1 = new ExternalFonts(fontProvider).getType1Font(getBaseFont());
         }
 
         type1font = t1;
@@ -197,7 +198,7 @@
         }
         else
         {
-            Type1Equivalent t1Equiv = ExternalFonts.getType1EquivalentFont(getBaseFont());
+            Type1Equivalent t1Equiv = new ExternalFonts(fontProvider).getType1EquivalentFont(getBaseFont());
             if (t1Equiv != null)
             {
                 type1Equivalent = t1Equiv;
@@ -204,7 +205,7 @@
             }
             else
             {
-                type1Equivalent = ExternalFonts.getType1FallbackFont(getFontDescriptor());
+                type1Equivalent = new ExternalFonts(fontProvider).getType1FallbackFont(getFontDescriptor());
                 LOG.warn("Using fallback font " + type1Equivalent.getName() + " for " + getBaseFont());
             }
         }
Index: pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType3Font.java
===================================================================
--- pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType3Font.java	(revision 1644000)
+++ pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType3Font.java	(working copy)
@@ -50,9 +50,10 @@
      *
      * @param fontDictionary The font dictionary according to the PDF specification.
      */
-    public PDType3Font(COSDictionary fontDictionary) throws IOException
+    public PDType3Font(COSDictionary fontDictionary, FontProvider fontProvider) throws IOException
     {
         super(fontDictionary);
+        this.fontProvider = fontProvider;
         readEncoding();
     }
 
Index: pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/PDFontSetting.java
===================================================================
--- pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/PDFontSetting.java	(revision 1644000)
+++ pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/PDFontSetting.java	(working copy)
@@ -81,7 +81,7 @@
         COSBase font = fontSetting.get( 0 );
         if( font instanceof COSDictionary )
         {
-            retval = PDFontFactory.createFont( (COSDictionary)font );
+            retval = PDFontFactory.createFont( (COSDictionary)font, null);
         }
         return retval;
     }
Index: pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDAppearanceString.java
===================================================================
--- pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDAppearanceString.java	(revision 1644000)
+++ pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDAppearanceString.java	(working copy)
@@ -436,10 +436,10 @@
 
             int setFontIndex = tokens.indexOf(Operator.getOperator("Tf"));
             COSName cosFontName = (COSName) tokens.get(setFontIndex - 2);
-            retval = streamResources.getFont(cosFontName);
+            retval = streamResources.getFont(cosFontName, null);
             if (retval == null)
             {
-                retval = formResources.getFont(cosFontName);
+                retval = formResources.getFont(cosFontName, null);
                 streamResources.put(cosFontName, retval);
             }
         }
Index: preflight/src/main/java/org/apache/pdfbox/preflight/font/Type3FontValidator.java
===================================================================
--- preflight/src/main/java/org/apache/pdfbox/preflight/font/Type3FontValidator.java	(revision 1644000)
+++ preflight/src/main/java/org/apache/pdfbox/preflight/font/Type3FontValidator.java	(working copy)
@@ -409,7 +409,7 @@
 
                     try
                     {
-                        PDFont aFont = PDFontFactory.createFont(xObjFont);
+                        PDFont aFont = PDFontFactory.createFont(xObjFont, null);
                         FontContainer aContainer = this.context.getFontContainer(aFont.getCOSObject());
                         // another font is used in the Type3, check if the font is valid.
                         if (!aContainer.isValid())
Index: preflight/src/main/java/org/apache/pdfbox/preflight/process/reflect/ResourcesValidationProcess.java
===================================================================
--- preflight/src/main/java/org/apache/pdfbox/preflight/process/reflect/ResourcesValidationProcess.java	(revision 1644000)
+++ preflight/src/main/java/org/apache/pdfbox/preflight/process/reflect/ResourcesValidationProcess.java	(working copy)
@@ -125,7 +125,7 @@
                 PDFont newFont = null;
                 try
                 {
-                    newFont = PDFontFactory.createFont((COSDictionary) font);
+                    newFont = PDFontFactory.createFont((COSDictionary) font, null);
                 }
                 catch (IOException e)
                 {
