From: Jeremias Maerki Date: Wed, 29 Sep 2010 10:01:21 +0000 (+0000) Subject: Added support for font substitutions on PDF/PSTranscoder by configuring the FontManager. X-Git-Tag: fop-1_1rc1old~437 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=8a2c2476e302cb9317af23b38c2e83840f3a3e79;p=xmlgraphics-fop.git Added support for font substitutions on PDF/PSTranscoder by configuring the FontManager. 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 --- diff --git a/src/java/org/apache/fop/svg/AbstractFOPTranscoder.java b/src/java/org/apache/fop/svg/AbstractFOPTranscoder.java index fc007b90a..aa8c5238c 100644 --- a/src/java/org/apache/fop/svg/AbstractFOPTranscoder.java +++ b/src/java/org/apache/fop/svg/AbstractFOPTranscoder.java @@ -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 diff --git a/src/java/org/apache/fop/svg/PDFDocumentGraphics2DConfigurator.java b/src/java/org/apache/fop/svg/PDFDocumentGraphics2DConfigurator.java index b77518ab0..24974b01a 100644 --- a/src/java/org/apache/fop/svg/PDFDocumentGraphics2DConfigurator.java +++ b/src/java/org/apache/fop/svg/PDFDocumentGraphics2DConfigurator.java @@ -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/**/ fontInfoList = new java.util.ArrayList/**/(); 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; } diff --git a/src/java/org/apache/fop/svg/PDFTranscoder.java b/src/java/org/apache/fop/svg/PDFTranscoder.java index fc27cb48a..bf08b2fcf 100644 --- a/src/java/org/apache/fop/svg/PDFTranscoder.java +++ b/src/java/org/apache/fop/svg/PDFTranscoder.java @@ -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 Keiron Liddle * @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;