From: Jeremias Maerki Date: Tue, 5 Aug 2008 07:47:18 +0000 (+0000) Subject: The FontEventListener was not wired into font auto-detection. An error while loading... X-Git-Tag: fop-1_0~470 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=504455cacaeafbbeae9eacb72a9977050e381b0e;p=xmlgraphics-fop.git The FontEventListener was not wired into font auto-detection. An error while loading a font wasn't relayed to the event subsystem. git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@682617 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/src/java/org/apache/fop/render/PrintRendererConfigurator.java b/src/java/org/apache/fop/render/PrintRendererConfigurator.java index 4409c62b8..e8127ae34 100644 --- a/src/java/org/apache/fop/render/PrintRendererConfigurator.java +++ b/src/java/org/apache/fop/render/PrintRendererConfigurator.java @@ -43,6 +43,8 @@ import org.apache.fop.apps.FOUserAgent; import org.apache.fop.apps.FopFactory; import org.apache.fop.fonts.EmbedFontInfo; import org.apache.fop.fonts.FontCache; +import org.apache.fop.fonts.FontEventAdapter; +import org.apache.fop.fonts.FontEventListener; import org.apache.fop.fonts.FontInfo; import org.apache.fop.fonts.FontManager; import org.apache.fop.fonts.FontResolver; @@ -94,8 +96,10 @@ public class PrintRendererConfigurator extends AbstractRendererConfigurator boolean strict = factory.validateUserConfigStrictly(); FontCache fontCache = fontManager.getFontCache(); + FontEventListener listener = new FontEventAdapter( + renderer.getUserAgent().getEventBroadcaster()); List/**/ embedFontInfoList = buildFontListFromConfiguration(cfg, - fontResolver, strict, fontManager); + fontResolver, strict, fontManager, listener); if (fontCache != null && fontCache.hasChanged()) { fontCache.save(); @@ -110,12 +114,14 @@ public class PrintRendererConfigurator extends AbstractRendererConfigurator * @param fontResolver the FontResolver to use * @param strict true if an Exception should be thrown if an error is found. * @param fontManager the font manager + * @param listener a font event listener * @return a List of EmbedFontInfo objects. * @throws FOPException If an error occurs while processing the configuration */ public static List/**/ buildFontListFromConfiguration(Configuration cfg, FontResolver fontResolver, - boolean strict, FontManager fontManager) throws FOPException { + boolean strict, FontManager fontManager, + FontEventListener listener) throws FOPException { FontCache fontCache = fontManager.getFontCache(); String fontBaseURL = fontManager.getFontBaseURL(); List/**/ fontInfoList @@ -144,7 +150,8 @@ public class PrintRendererConfigurator extends AbstractRendererConfigurator fontFileFinder.find(fontBase.getAbsolutePath()), fontInfoList, fontResolver, - fontCache + fontCache, + listener ); } } catch (IOException e) { @@ -158,7 +165,8 @@ public class PrintRendererConfigurator extends AbstractRendererConfigurator fontFileFinder.find(), fontInfoList, fontResolver, - fontCache + fontCache, + listener ); } catch (IOException e) { LogUtil.handleException(log, e, strict); @@ -167,12 +175,12 @@ public class PrintRendererConfigurator extends AbstractRendererConfigurator // load fonts from classpath addFontInfoListFromFileList(ClasspathResource.getInstance() .listResourcesOfMimeType("application/x-font"), - fontInfoList, fontResolver, fontCache); + fontInfoList, fontResolver, fontCache, listener); addFontInfoListFromFileList( ClasspathResource.getInstance() .listResourcesOfMimeType( "application/x-font-truetype"), - fontInfoList, fontResolver, fontCache); + fontInfoList, fontResolver, fontCache, listener); } // directory (multiple font) configuration @@ -197,7 +205,8 @@ public class PrintRendererConfigurator extends AbstractRendererConfigurator fontFileFinder.find(directory), fontInfoList, fontResolver, - fontCache + fontCache, + listener ); } catch (IOException e) { LogUtil.handleException(log, e, strict); @@ -208,7 +217,7 @@ public class PrintRendererConfigurator extends AbstractRendererConfigurator Configuration[] font = fonts.getChildren("font"); for (int i = 0; i < font.length; i++) { EmbedFontInfo embedFontInfo = getFontInfoFromConfiguration( - font[i], fontResolver, strict, fontCache); + font[i], fontResolver, strict, fontCache, listener); if (embedFontInfo != null) { fontInfoList.add(embedFontInfo); } @@ -252,11 +261,12 @@ public class PrintRendererConfigurator extends AbstractRendererConfigurator */ private static void addFontInfoListFromFileList( List fontFileList, List/**/ embedFontInfoList, - FontResolver resolver, FontCache fontCache) { + FontResolver resolver, FontCache fontCache, FontEventListener listener) { for (Iterator iter = fontFileList.iterator(); iter.hasNext();) { URL fontUrl = (URL)iter.next(); // parse font to ascertain font info FontInfoFinder finder = new FontInfoFinder(); + finder.setEventListener(listener); //EmbedFontInfo fontInfo = finder.find(fontUrl, resolver, fontCache); //List embedFontInfoList = finder.find(fontUrl, resolver, fontCache); @@ -332,7 +342,8 @@ public class PrintRendererConfigurator extends AbstractRendererConfigurator * @throws FOPException if something's wrong with the config data */ private static EmbedFontInfo getFontInfoFromConfiguration( - Configuration fontCfg, FontResolver fontResolver, boolean strict, FontCache fontCache) + Configuration fontCfg, FontResolver fontResolver, boolean strict, + FontCache fontCache, FontEventListener listener) throws FOPException { String metricsUrl = fontCfg.getAttribute("metrics-url", null); String embedUrl = fontCfg.getAttribute("embed-url", null); @@ -384,6 +395,7 @@ public class PrintRendererConfigurator extends AbstractRendererConfigurator } if (fontFile != null) { FontInfoFinder finder = new FontInfoFinder(); + finder.setEventListener(listener); EmbedFontInfo[] infos = finder.find(fontUrl, fontResolver, fontCache); return infos[0]; //When subFont is set, only one font is returned } else { diff --git a/src/java/org/apache/fop/svg/PDFDocumentGraphics2DConfigurator.java b/src/java/org/apache/fop/svg/PDFDocumentGraphics2DConfigurator.java index 2d1c9279c..03ad4ee71 100644 --- a/src/java/org/apache/fop/svg/PDFDocumentGraphics2DConfigurator.java +++ b/src/java/org/apache/fop/svg/PDFDocumentGraphics2DConfigurator.java @@ -63,7 +63,8 @@ public class PDFDocumentGraphics2DConfigurator { List/**/ embedFontInfoList = PrintRendererConfigurator.buildFontListFromConfiguration( - cfg, fontResolver, false, fontManager); + cfg, fontResolver, false, fontManager, null); + //TODO Wire in the FontEventListener if (fontManager.useCache()) { fontManager.getFontCache().save(); }