Return-Path: X-Original-To: apmail-xmlgraphics-fop-commits-archive@www.apache.org Delivered-To: apmail-xmlgraphics-fop-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 0F6BD79D0 for ; Thu, 25 Aug 2011 15:48:52 +0000 (UTC) Received: (qmail 76344 invoked by uid 500); 25 Aug 2011 15:48:51 -0000 Delivered-To: apmail-xmlgraphics-fop-commits-archive@xmlgraphics.apache.org Received: (qmail 76264 invoked by uid 500); 25 Aug 2011 15:48:51 -0000 Mailing-List: contact fop-commits-help@xmlgraphics.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: fop-dev@xmlgraphics.apache.org Delivered-To: mailing list fop-commits@xmlgraphics.apache.org Received: (qmail 76251 invoked by uid 99); 25 Aug 2011 15:48:50 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 25 Aug 2011 15:48:50 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 25 Aug 2011 15:48:48 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id DF4A62388900; Thu, 25 Aug 2011 15:48:27 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1161612 - in /xmlgraphics/fop/trunk: ./ src/java/org/apache/fop/render/bitmap/ src/java/org/apache/fop/render/java2d/ src/java/org/apache/fop/render/pcl/ Date: Thu, 25 Aug 2011 15:48:27 -0000 To: fop-commits@xmlgraphics.apache.org From: phancock@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20110825154827.DF4A62388900@eris.apache.org> Author: phancock Date: Thu Aug 25 15:48:26 2011 New Revision: 1161612 URL: http://svn.apache.org/viewvc?rev=1161612&view=rev Log: Improved fix for bugzilla#48062 Bug relates to PCL painter thread safetly. Previous fix in rev 895012 worked by synchronizing methods of a static instance of Java2DFontMetrics. This fix uses a unique instance for per thread. Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/render/bitmap/BitmapRendererConfigurator.java xmlgraphics/fop/trunk/src/java/org/apache/fop/render/java2d/Base14FontCollection.java xmlgraphics/fop/trunk/src/java/org/apache/fop/render/java2d/InstalledFontCollection.java xmlgraphics/fop/trunk/src/java/org/apache/fop/render/java2d/Java2DFontMetrics.java xmlgraphics/fop/trunk/src/java/org/apache/fop/render/java2d/Java2DRenderer.java xmlgraphics/fop/trunk/src/java/org/apache/fop/render/java2d/Java2DUtil.java xmlgraphics/fop/trunk/src/java/org/apache/fop/render/java2d/SystemFontMetricsMapper.java xmlgraphics/fop/trunk/src/java/org/apache/fop/render/pcl/PCLRendererConfigurator.java xmlgraphics/fop/trunk/status.xml Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/render/bitmap/BitmapRendererConfigurator.java URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/bitmap/BitmapRendererConfigurator.java?rev=1161612&r1=1161611&r2=1161612&view=diff ============================================================================== --- xmlgraphics/fop/trunk/src/java/org/apache/fop/render/bitmap/BitmapRendererConfigurator.java (original) +++ xmlgraphics/fop/trunk/src/java/org/apache/fop/render/bitmap/BitmapRendererConfigurator.java Thu Aug 25 15:48:26 2011 @@ -115,13 +115,13 @@ public class BitmapRendererConfigurator /** {@inheritDoc} */ public void setupFontInfo(IFDocumentHandler documentHandler, FontInfo fontInfo) throws FOPException { - FontManager fontManager = userAgent.getFactory().getFontManager(); + final FontManager fontManager = userAgent.getFactory().getFontManager(); - Graphics2D graphics2D = Java2DFontMetrics.createFontMetricsGraphics2D(); + final Java2DFontMetrics java2DFontMetrics = new Java2DFontMetrics(); - List fontCollections = new java.util.ArrayList(); - fontCollections.add(new Base14FontCollection(graphics2D)); - fontCollections.add(new InstalledFontCollection(graphics2D)); + final List fontCollections = new java.util.ArrayList(); + fontCollections.add(new Base14FontCollection(java2DFontMetrics)); + fontCollections.add(new InstalledFontCollection(java2DFontMetrics)); Configuration cfg = super.getRendererConfig(documentHandler.getMimeType()); if (cfg != null) { Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/render/java2d/Base14FontCollection.java URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/java2d/Base14FontCollection.java?rev=1161612&r1=1161611&r2=1161612&view=diff ============================================================================== --- xmlgraphics/fop/trunk/src/java/org/apache/fop/render/java2d/Base14FontCollection.java (original) +++ xmlgraphics/fop/trunk/src/java/org/apache/fop/render/java2d/Base14FontCollection.java Thu Aug 25 15:48:26 2011 @@ -30,14 +30,15 @@ import org.apache.fop.fonts.FontInfo; */ public class Base14FontCollection implements FontCollection { - private Graphics2D graphics2d = null; + /** required when creating new instances of SystemFontMetricsMapper */ + private final Java2DFontMetrics java2DFontMetrics; /** * Main constructor - * @param graphics2d a graphics 2D + * @param java2DFontMetrics required when creating new instances of SystemFontMetricsMapper */ - public Base14FontCollection(Graphics2D graphics2d) { - this.graphics2d = graphics2d; + public Base14FontCollection(Java2DFontMetrics java2DFontMetrics) { + this.java2DFontMetrics = java2DFontMetrics; } /** @@ -56,47 +57,47 @@ public class Base14FontCollection implem final int bolditalic = java.awt.Font.BOLD + java.awt.Font.ITALIC; FontMetricsMapper metric; - metric = new SystemFontMetricsMapper("SansSerif", normal, graphics2d); + metric = new SystemFontMetricsMapper("SansSerif", normal, java2DFontMetrics); // --> goes to F1 fontInfo.addMetrics("F1", metric); - metric = new SystemFontMetricsMapper("SansSerif", italic, graphics2d); + metric = new SystemFontMetricsMapper("SansSerif", italic, java2DFontMetrics); // --> goes to F2 fontInfo.addMetrics("F2", metric); - metric = new SystemFontMetricsMapper("SansSerif", bold, graphics2d); + metric = new SystemFontMetricsMapper("SansSerif", bold, java2DFontMetrics); // --> goes to F3 fontInfo.addMetrics("F3", metric); - metric = new SystemFontMetricsMapper("SansSerif", bolditalic, graphics2d); + metric = new SystemFontMetricsMapper("SansSerif", bolditalic, java2DFontMetrics); // --> goes to F4 fontInfo.addMetrics("F4", metric); - metric = new SystemFontMetricsMapper("Serif", normal, graphics2d); + metric = new SystemFontMetricsMapper("Serif", normal, java2DFontMetrics); // --> goes to F5 fontInfo.addMetrics("F5", metric); - metric = new SystemFontMetricsMapper("Serif", italic, graphics2d); + metric = new SystemFontMetricsMapper("Serif", italic, java2DFontMetrics); // --> goes to F6 fontInfo.addMetrics("F6", metric); - metric = new SystemFontMetricsMapper("Serif", bold, graphics2d); + metric = new SystemFontMetricsMapper("Serif", bold, java2DFontMetrics); // --> goes to F7 fontInfo.addMetrics("F7", metric); - metric = new SystemFontMetricsMapper("Serif", bolditalic, graphics2d); + metric = new SystemFontMetricsMapper("Serif", bolditalic, java2DFontMetrics); // --> goes to F8 fontInfo.addMetrics("F8", metric); - metric = new SystemFontMetricsMapper("MonoSpaced", normal, graphics2d); + metric = new SystemFontMetricsMapper("MonoSpaced", normal, java2DFontMetrics); // --> goes to F9 fontInfo.addMetrics("F9", metric); - metric = new SystemFontMetricsMapper("MonoSpaced", italic, graphics2d); + metric = new SystemFontMetricsMapper("MonoSpaced", italic, java2DFontMetrics); // --> goes to F10 fontInfo.addMetrics("F10", metric); - metric = new SystemFontMetricsMapper("MonoSpaced", bold, graphics2d); + metric = new SystemFontMetricsMapper("MonoSpaced", bold, java2DFontMetrics); // --> goes to F11 fontInfo.addMetrics("F11", metric); - metric = new SystemFontMetricsMapper("MonoSpaced", bolditalic, graphics2d); + metric = new SystemFontMetricsMapper("MonoSpaced", bolditalic, java2DFontMetrics); // --> goes to F12 fontInfo.addMetrics("F12", metric); - metric = new SystemFontMetricsMapper("Serif", normal, graphics2d); + metric = new SystemFontMetricsMapper("Serif", normal, java2DFontMetrics); //"Symbol" doesn't seem to work here, but "Serif" does the job just fine. *shrug* // --> goes to F13 and F14 fontInfo.addMetrics("F13", metric); Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/render/java2d/InstalledFontCollection.java URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/java2d/InstalledFontCollection.java?rev=1161612&r1=1161611&r2=1161612&view=diff ============================================================================== --- xmlgraphics/fop/trunk/src/java/org/apache/fop/render/java2d/InstalledFontCollection.java (original) +++ xmlgraphics/fop/trunk/src/java/org/apache/fop/render/java2d/InstalledFontCollection.java Thu Aug 25 15:48:26 2011 @@ -57,15 +57,16 @@ public class InstalledFontCollection imp HARDCODED_FONT_NAMES.add("Computer-Modern-Typewriter"); } - private Graphics2D graphics2D = null; + /** Required by new instances of FontMetricsMapper */ + final private Java2DFontMetrics java2DFontMetrics; /** * Main constructor * - * @param graphics2D a graphics 2D + * @param java2DFontMetrics required by new instances of FontMetricsMapper */ - public InstalledFontCollection(Graphics2D graphics2D) { - this.graphics2D = graphics2D; + public InstalledFontCollection(Java2DFontMetrics java2DFontMetrics) { + this.java2DFontMetrics = java2DFontMetrics; } /** @@ -98,7 +99,7 @@ public class InstalledFontCollection imp num++; String fontKey = "F" + num; int style = convertToAWTFontStyle(guessedStyle, guessedWeight); - addFontMetricsMapper(fontInfo, f.getName(), fontKey, graphics2D, style); + addFontMetricsMapper(fontInfo, f.getName(), fontKey, java2DFontMetrics, style); //Register appropriate font triplets matching the font. Two different strategies: //Example: "Arial Bold", normal, normal @@ -120,8 +121,8 @@ public class InstalledFontCollection imp } private static void addFontMetricsMapper(FontInfo fontInfo, String family, String fontKey, - Graphics2D graphics, int style) { - FontMetricsMapper metric = new SystemFontMetricsMapper(family, style, graphics); + Java2DFontMetrics java2DFontMetrics, int style) { + FontMetricsMapper metric = new SystemFontMetricsMapper(family, style, java2DFontMetrics); fontInfo.addMetrics(fontKey, metric); } Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/render/java2d/Java2DFontMetrics.java URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/java2d/Java2DFontMetrics.java?rev=1161612&r1=1161611&r2=1161612&view=diff ============================================================================== --- xmlgraphics/fop/trunk/src/java/org/apache/fop/render/java2d/Java2DFontMetrics.java (original) +++ xmlgraphics/fop/trunk/src/java/org/apache/fop/render/java2d/Java2DFontMetrics.java Thu Aug 25 15:48:26 2011 @@ -109,13 +109,13 @@ public class Java2DFontMetrics { /** * Temp graphics object needed to get the font metrics */ - private Graphics2D graphics; + private final Graphics2D graphics; /** * Creates a Graphics2D object for the sole purpose of getting font metrics. * @return a Graphics2D object */ - public static Graphics2D createFontMetricsGraphics2D() { + private static Graphics2D createFontMetricsGraphics2D() { BufferedImage fontImage = new BufferedImage(100, 100, BufferedImage.TYPE_INT_RGB); Graphics2D graphics2D = fontImage.createGraphics(); @@ -127,11 +127,9 @@ public class Java2DFontMetrics { /** * Constructs a new Font-metrics. - * @param graphics a temp graphics object - this is needed so - * that we can get an instance of java.awt.FontMetrics */ - public Java2DFontMetrics(Graphics2D graphics) { - this.graphics = graphics; + public Java2DFontMetrics() { + this.graphics = createFontMetricsGraphics2D(); } /** @@ -142,7 +140,7 @@ public class Java2DFontMetrics { * @param size font size * @return ascent in milliponts */ - public synchronized int getMaxAscent(String family, int style, int size) { + public int getMaxAscent(String family, int style, int size) { setFont(family, style, size); return Math.round(lineMetrics.getAscent() * FONT_FACTOR); } @@ -155,7 +153,7 @@ public class Java2DFontMetrics { * @param size font size * @return ascent in milliponts */ - public synchronized int getAscender(String family, int style, int size) { + public int getAscender(String family, int style, int size) { setFont(family, style, size); return ascender * 1000; @@ -193,7 +191,7 @@ public class Java2DFontMetrics { * @param size font size * @return capital height in millipoints */ - public synchronized int getCapHeight(String family, int style, int size) { + public int getCapHeight(String family, int style, int size) { // currently just gets Ascent value but maybe should use // getMaxAcent() at some stage return getAscender(family, style, size); @@ -207,7 +205,7 @@ public class Java2DFontMetrics { * @param size font size * @return descent in milliponts */ - public synchronized int getDescender(String family, int style, int size) { + public int getDescender(String family, int style, int size) { setFont(family, style, size); return descender * 1000; } @@ -220,7 +218,7 @@ public class Java2DFontMetrics { * @param size font size * @return font height in milliponts */ - public synchronized int getXHeight(String family, int style, int size) { + public int getXHeight(String family, int style, int size) { setFont(family, style, size); return xHeight * 1000; } @@ -234,7 +232,7 @@ public class Java2DFontMetrics { * @param size font size * @return character width in millipoints */ - public synchronized int width(int i, String family, int style, int size) { + public int width(int i, String family, int style, int size) { int w; setFont(family, style, size); w = internalCharWidth(i) * 1000; @@ -256,7 +254,7 @@ public class Java2DFontMetrics { * @param size font size * @return array of character widths in millipoints */ - public synchronized int[] getWidths(String family, int style, int size) { + public int[] getWidths(String family, int style, int size) { int i; if (width == null) { @@ -351,7 +349,7 @@ public class Java2DFontMetrics { * @param size font size * @return font with the desired characeristics. */ - public synchronized java.awt.Font getFont(String family, int style, int size) { + public java.awt.Font getFont(String family, int style, int size) { setFont(family, style, size); return f1; /* @@ -372,7 +370,7 @@ public class Java2DFontMetrics { * @param c the glyph to check * @return true if the character is supported */ - public synchronized boolean hasChar(String family, int style, int size, char c) { + public boolean hasChar(String family, int style, int size, char c) { setFont(family, style, size); return f1.canDisplay(c); } Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/render/java2d/Java2DRenderer.java URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/java2d/Java2DRenderer.java?rev=1161612&r1=1161611&r2=1161612&view=diff ============================================================================== --- xmlgraphics/fop/trunk/src/java/org/apache/fop/render/java2d/Java2DRenderer.java (original) +++ xmlgraphics/fop/trunk/src/java/org/apache/fop/render/java2d/Java2DRenderer.java Thu Aug 25 15:48:26 2011 @@ -171,11 +171,11 @@ public abstract class Java2DRenderer ext //Don't call super.setupFontInfo() here! Java2D needs a special font setup // create a temp Image to test font metrics on this.fontInfo = inFontInfo; - Graphics2D graphics2D = Java2DFontMetrics.createFontMetricsGraphics2D(); + final Java2DFontMetrics java2DFontMetrics = new Java2DFontMetrics(); FontCollection[] fontCollections = new FontCollection[] { - new Base14FontCollection(graphics2D), - new InstalledFontCollection(graphics2D), + new Base14FontCollection(java2DFontMetrics), + new InstalledFontCollection(java2DFontMetrics), new ConfiguredFontCollection(getFontResolver(), getFontList()) }; userAgent.getFactory().getFontManager().setup( Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/render/java2d/Java2DUtil.java URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/java2d/Java2DUtil.java?rev=1161612&r1=1161611&r2=1161612&view=diff ============================================================================== --- xmlgraphics/fop/trunk/src/java/org/apache/fop/render/java2d/Java2DUtil.java (original) +++ xmlgraphics/fop/trunk/src/java/org/apache/fop/render/java2d/Java2DUtil.java Thu Aug 25 15:48:26 2011 @@ -44,12 +44,12 @@ public final class Java2DUtil { */ public static FontInfo buildDefaultJava2DBasedFontInfo( FontInfo fontInfo, FOUserAgent userAgent) { - Graphics2D graphics2D = Java2DFontMetrics.createFontMetricsGraphics2D(); + Java2DFontMetrics java2DFontMetrics = new Java2DFontMetrics(); FontManager fontManager = userAgent.getFactory().getFontManager(); FontCollection[] fontCollections = new FontCollection[] { - new org.apache.fop.render.java2d.Base14FontCollection(graphics2D), - new InstalledFontCollection(graphics2D) + new org.apache.fop.render.java2d.Base14FontCollection(java2DFontMetrics), + new InstalledFontCollection(java2DFontMetrics) }; FontInfo fi = (fontInfo != null ? fontInfo : new FontInfo()); Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/render/java2d/SystemFontMetricsMapper.java URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/java2d/SystemFontMetricsMapper.java?rev=1161612&r1=1161611&r2=1161612&view=diff ============================================================================== --- xmlgraphics/fop/trunk/src/java/org/apache/fop/render/java2d/SystemFontMetricsMapper.java (original) +++ xmlgraphics/fop/trunk/src/java/org/apache/fop/render/java2d/SystemFontMetricsMapper.java Thu Aug 25 15:48:26 2011 @@ -42,7 +42,7 @@ public class SystemFontMetricsMapper ext * This is a Java2DFontMetrics that does the real calculation. * It is only one class that dynamically determines the font-size. */ - private static Java2DFontMetrics metric = null; + private final Java2DFontMetrics java2DFontMetrics; /** * The java name of the font. @@ -60,15 +60,14 @@ public class SystemFontMetricsMapper ext * Constructs a new Font-metrics. * @param family the family name of the font (java value) * @param style the java type style value of the font - * @param graphics a Graphics2D object - this is needed so - * that we can get an instance of java.awt.FontMetrics + * @param java2DFontMetrics metric calculations delegated to this */ - public SystemFontMetricsMapper(String family, int style, Graphics2D graphics) { + public SystemFontMetricsMapper(String family, int style, Java2DFontMetrics java2DFontMetrics) { this.family = family; + this.style = style; - if (metric == null) { - metric = new Java2DFontMetrics(graphics); - } + + this.java2DFontMetrics = java2DFontMetrics; } /** {@inheritDoc} */ @@ -104,42 +103,42 @@ public class SystemFontMetricsMapper ext * {@inheritDoc} */ public int getMaxAscent(int size) { - return metric.getMaxAscent(family, style, size); + return java2DFontMetrics.getMaxAscent(family, style, size); } /** * {@inheritDoc} */ public int getAscender(int size) { - return metric.getAscender(family, style, size); + return java2DFontMetrics.getAscender(family, style, size); } /** * {@inheritDoc} */ public int getCapHeight(int size) { - return metric.getCapHeight(family, style, size); + return java2DFontMetrics.getCapHeight(family, style, size); } /** * {@inheritDoc} */ public int getDescender(int size) { - return metric.getDescender(family, style, size); + return java2DFontMetrics.getDescender(family, style, size); } /** * {@inheritDoc} */ public int getXHeight(int size) { - return metric.getXHeight(family, style, size); + return java2DFontMetrics.getXHeight(family, style, size); } /** * {@inheritDoc} */ public int getWidth(int i, int size) { - return metric.width(i, family, style, size); + return java2DFontMetrics.width(i, family, style, size); } @@ -147,14 +146,14 @@ public class SystemFontMetricsMapper ext * {@inheritDoc} */ public int[] getWidths() { - return metric.getWidths(family, style, Java2DFontMetrics.FONT_SIZE); + return java2DFontMetrics.getWidths(family, style, Java2DFontMetrics.FONT_SIZE); } /** * {@inheritDoc} */ public java.awt.Font getFont(int size) { - return metric.getFont(family, style, size); + return java2DFontMetrics.getFont(family, style, size); } /** @@ -183,7 +182,7 @@ public class SystemFontMetricsMapper ext /** {@inheritDoc} */ public boolean hasChar(char c) { - return metric.hasChar(family, style, Java2DFontMetrics.FONT_SIZE, c); + return java2DFontMetrics.hasChar(family, style, Java2DFontMetrics.FONT_SIZE, c); } } Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/render/pcl/PCLRendererConfigurator.java URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/pcl/PCLRendererConfigurator.java?rev=1161612&r1=1161611&r2=1161612&view=diff ============================================================================== --- xmlgraphics/fop/trunk/src/java/org/apache/fop/render/pcl/PCLRendererConfigurator.java (original) +++ xmlgraphics/fop/trunk/src/java/org/apache/fop/render/pcl/PCLRendererConfigurator.java Thu Aug 25 15:48:26 2011 @@ -108,11 +108,10 @@ public class PCLRendererConfigurator ext throws FOPException { FontManager fontManager = userAgent.getFactory().getFontManager(); - Graphics2D graphics2D = Java2DFontMetrics.createFontMetricsGraphics2D(); - - List fontCollections = new java.util.ArrayList(); - fontCollections.add(new Base14FontCollection(graphics2D)); - fontCollections.add(new InstalledFontCollection(graphics2D)); + final Java2DFontMetrics java2DFontMetrics = new Java2DFontMetrics(); + final List fontCollections = new java.util.ArrayList(); + fontCollections.add(new Base14FontCollection(java2DFontMetrics)); + fontCollections.add(new InstalledFontCollection(java2DFontMetrics)); Configuration cfg = super.getRendererConfig(documentHandler.getMimeType()); if (cfg != null) { Modified: xmlgraphics/fop/trunk/status.xml URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/status.xml?rev=1161612&r1=1161611&r2=1161612&view=diff ============================================================================== --- xmlgraphics/fop/trunk/status.xml (original) +++ xmlgraphics/fop/trunk/status.xml Thu Aug 25 15:48:26 2011 @@ -60,6 +60,11 @@ documents. Example: the fix of marks layering will be such a case when it's done. --> + + Improved fix of a bug relating to PCL painter thread safetly. Previous fix in rev 895012 + worked by synchronizing methods of a static instance of Java2DFontMetrics. This fix uses a + unique instance for per thread. + Fixed a bug in AFP where an ArrayOutofBoundsException is throwqn when embedding a Page Segment. --------------------------------------------------------------------- To unsubscribe, e-mail: fop-commits-unsubscribe@xmlgraphics.apache.org For additional commands, e-mail: fop-commits-help@xmlgraphics.apache.org