]> source.dussan.org Git - xmlgraphics-fop.git/commitdiff
Added support for font substitutions on PDF/PSTranscoder by configuring the FontManager.
authorJeremias Maerki <jeremias@apache.org>
Wed, 29 Sep 2010 10:01:21 +0000 (10:01 +0000)
committerJeremias Maerki <jeremias@apache.org>
Wed, 29 Sep 2010 10:01:21 +0000 (10:01 +0000)
Restored configuration support for the (E)PSTranscoder.

git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@1002550 13f79535-47bb-0310-9956-ffa450edef68

src/java/org/apache/fop/svg/AbstractFOPTranscoder.java
src/java/org/apache/fop/svg/PDFDocumentGraphics2DConfigurator.java
src/java/org/apache/fop/svg/PDFTranscoder.java

index fc007b90a6760cfdf52f69167735df0aa3cdba61..aa8c5238c9df33399fcc34fe3071aa76e52f7055 100644 (file)
@@ -29,6 +29,7 @@ import org.w3c.dom.DOMImplementation;
 
 import org.xml.sax.EntityResolver;
 
+import org.apache.avalon.framework.configuration.Configurable;
 import org.apache.avalon.framework.configuration.Configuration;
 import org.apache.avalon.framework.configuration.ConfigurationException;
 import org.apache.avalon.framework.configuration.DefaultConfiguration;
@@ -55,7 +56,7 @@ import org.apache.xmlgraphics.image.loader.impl.AbstractImageSessionContext;
 /**
  * This is the common base class of all of FOP's transcoders.
  */
-public abstract class AbstractFOPTranscoder extends SVGAbstractTranscoder {
+public abstract class AbstractFOPTranscoder extends SVGAbstractTranscoder implements Configurable {
 
     /**
      * The key is used to specify the resolution for on-the-fly images generated
index b77518ab00b80ad161dc4977ab49970cdcfa7446..24974b01a30c62e71fb5ee02e92ea3c82666b819 100644 (file)
@@ -25,12 +25,15 @@ import org.apache.avalon.framework.configuration.Configuration;
 import org.apache.avalon.framework.configuration.ConfigurationException;
 
 import org.apache.fop.apps.FOPException;
+import org.apache.fop.fonts.CustomFontCollection;
+import org.apache.fop.fonts.FontCollection;
 import org.apache.fop.fonts.FontEventListener;
 import org.apache.fop.fonts.FontInfo;
 import org.apache.fop.fonts.FontInfoConfigurator;
 import org.apache.fop.fonts.FontManager;
+import org.apache.fop.fonts.FontManagerConfigurator;
 import org.apache.fop.fonts.FontResolver;
-import org.apache.fop.fonts.FontSetup;
+import org.apache.fop.fonts.base14.Base14FontCollection;
 import org.apache.fop.pdf.PDFDocument;
 import org.apache.fop.render.pdf.PDFRendererConfigurator;
 
@@ -70,29 +73,30 @@ public class PDFDocumentGraphics2DConfigurator {
      */
     public static FontInfo createFontInfo(Configuration cfg) throws FOPException {
         FontInfo fontInfo = new FontInfo();
+        final boolean strict = false;
+        FontResolver fontResolver = FontManager.createMinimalFontResolver();
+        //TODO The following could be optimized by retaining the FontManager somewhere
+        FontManager fontManager = new FontManager();
         if (cfg != null) {
-            FontResolver fontResolver = FontManager.createMinimalFontResolver();
-            //TODO The following could be optimized by retaining the FontManager somewhere
-            FontManager fontManager = new FontManager();
+            FontManagerConfigurator fmConfigurator = new FontManagerConfigurator(cfg);
+            fmConfigurator.configure(fontManager, strict);
+        }
 
-            //TODO Make use of fontBaseURL, font substitution and referencing configuration
-            //Requires a change to the expected configuration layout
+        List fontCollections = new java.util.ArrayList();
+        fontCollections.add(new Base14FontCollection(fontManager.isBase14KerningEnabled()));
 
+        if (cfg != null) {
             //TODO Wire in the FontEventListener
-            final FontEventListener listener = null;
-            final boolean strict = false;
+            FontEventListener listener = null; //new FontEventAdapter(eventBroadcaster);
             FontInfoConfigurator fontInfoConfigurator
                 = new FontInfoConfigurator(cfg, fontManager, fontResolver, listener, strict);
             List/*<EmbedFontInfo>*/ fontInfoList = new java.util.ArrayList/*<EmbedFontInfo>*/();
             fontInfoConfigurator.configure(fontInfoList);
-
-            if (fontManager.useCache()) {
-                fontManager.getFontCache().save();
-            }
-            FontSetup.setup(fontInfo, fontInfoList, fontResolver);
-        } else {
-            FontSetup.setup(fontInfo);
+            fontCollections.add(new CustomFontCollection(fontResolver, fontInfoList));
         }
+        fontManager.setup(fontInfo,
+                (FontCollection[])fontCollections.toArray(
+                        new FontCollection[fontCollections.size()]));
         return fontInfo;
     }
 
index fc27cb48a1cf23fd8196943a553c69a7b6983bd8..bf08b2fcf555d91831d6704f26d2d6054a4f506a 100644 (file)
@@ -27,7 +27,6 @@ import java.io.OutputStream;
 import org.w3c.dom.Document;
 import org.w3c.dom.svg.SVGLength;
 
-import org.apache.avalon.framework.configuration.Configurable;
 import org.apache.avalon.framework.configuration.Configuration;
 import org.apache.batik.bridge.BridgeContext;
 import org.apache.batik.bridge.UnitProcessor;
@@ -73,8 +72,7 @@ import org.apache.fop.fonts.FontInfo;
  * @author <a href="mailto:keiron@aftexsw.com">Keiron Liddle</a>
  * @version $Id$
  */
-public class PDFTranscoder extends AbstractFOPTranscoder
-        implements Configurable {
+public class PDFTranscoder extends AbstractFOPTranscoder {
 
     /** Graphics2D instance that is used to paint to */
     protected PDFDocumentGraphics2D graphics = null;