]> source.dussan.org Git - xmlgraphics-fop.git/commitdiff
The FontEventListener was not wired into font auto-detection. An error while loading...
authorJeremias Maerki <jeremias@apache.org>
Tue, 5 Aug 2008 07:47:18 +0000 (07:47 +0000)
committerJeremias Maerki <jeremias@apache.org>
Tue, 5 Aug 2008 07:47:18 +0000 (07:47 +0000)
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@682617 13f79535-47bb-0310-9956-ffa450edef68

src/java/org/apache/fop/render/PrintRendererConfigurator.java
src/java/org/apache/fop/svg/PDFDocumentGraphics2DConfigurator.java

index 4409c62b8be07f46e02b74adfa16b285e9ad6dc5..e8127ae34c508dd9873ff3be6360ed4cce213ab1 100644 (file)
@@ -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/*<EmbedFontInfo>*/ 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/*<EmbedFontInfo>*/ 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/*<EmbedFontInfo>*/ 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/*<EmbedFontInfo>*/ 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<EmbedFontInfo> 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 {
index 2d1c9279cd028d5151ef4a3ed44aac3f2c2006bb..03ad4ee718505036641302b4df7a58fcff77259c 100644 (file)
@@ -63,7 +63,8 @@ public class PDFDocumentGraphics2DConfigurator {
 
             List/*<EmbedFontInfo>*/ embedFontInfoList
                 = PrintRendererConfigurator.buildFontListFromConfiguration(
-                    cfg, fontResolver, false, fontManager);
+                    cfg, fontResolver, false, fontManager, null);
+            //TODO Wire in the FontEventListener
             if (fontManager.useCache()) {
                 fontManager.getFontCache().save();
             }