https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk ........ r718557 | vhennebert | 2008-11-18 11:10:19 +0000 (Tue, 18 Nov 2008) | 2 lines Improved the FAQ by creating a separate entry for the problem about keep-together on table-cell, and the added support for inline keeps in 0.95 ........ r718570 | jeremias | 2008-11-18 13:16:32 +0000 (Tue, 18 Nov 2008) | 1 line Update conference ads. ........ r718591 | acumiskey | 2008-11-18 13:56:52 +0000 (Tue, 18 Nov 2008) | 2 lines TextHandler interface changes, the Graphics2D implementation is now passed to drawString(). ........ git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/branches/Temp_AFPGOCAResources@718594 13f79535-47bb-0310-9956-ffa450edef68tags/fop-1_0
@@ -1,4 +1,4 @@ | |||
<?xml version="1.0" encoding="ISO-8859-1"?> | |||
<?xml version="1.0" encoding="UTF-8"?> | |||
<!-- | |||
Licensed to the Apache Software Foundation (ASF) under one or more | |||
contributor license agreements. See the NOTICE file distributed with | |||
@@ -639,15 +639,25 @@ Check the following:</p> | |||
<link href="http://www.mulberrytech.com/xsl/xsl-list/">XSL list | |||
archive</link> for how to perform these tasks. | |||
</p> | |||
<p> | |||
If your text is not hyphenated at all and overflows the cell, please check | |||
if you've specified <code>keep-together="always"</code> on the table-cell | |||
or one of its parent elements. <code>keep-together="always"</code> implicitely | |||
also sets <code>keep-together.within-line="always"</code> which forbids FOP | |||
to break the text into multiple lines. This is important as FOP supports inline-level | |||
keeps since version 0.94. It's a good idea not to use the shorthand | |||
<code>keep-together="always"</code> at all! | |||
</p> | |||
</answer> | |||
</faq> | |||
<faq id="table-cell-wrap"> | |||
<question>The contents of table cells don’t wrap</question> | |||
<answer> | |||
<p>You probably have <code>keep-together="always"</code> set on the table cell. See <link | |||
href="#keep-together">next question</link>.</p> | |||
</answer> | |||
</faq> | |||
<faq id="keep-together"> | |||
<question>FOP 0.95 and FOP 0.94 behave differently when <code>keep-together="always"</code> | |||
is set on table cells</question> | |||
<answer> | |||
<p>Support for inline-level keeps has been added in FOP 0.95, and setting | |||
<code>keep-together="always"</code> also implicitly sets | |||
<code>keep-together.within-line="always"</code>, which forbids FOP | |||
to break the text into multiple lines. Set | |||
<code>keep-together.within-column="always"</code> on table-cell instead. It’s a good idea | |||
not to use the shorthand <code>keep-together="always"</code> at all!</p> | |||
</answer> | |||
</faq> | |||
<faq id="row-height-constraint"> |
@@ -369,19 +369,17 @@ which will be used to configure the chosen Forrest skin. | |||
<width>88</width> | |||
<height>31</height> | |||
</credit> | |||
<!-- | |||
<credit box-location="alt2"> | |||
<name>ApacheCon Europe 2008</name> | |||
<name>ApacheCon Europe 2009</name> | |||
<url>http://eu.apachecon.com/</url> | |||
<image>http://apache.org/ads/ApacheCon/2008-europe-125x125.png</image> | |||
<image>http://apache.org/ads/ApacheCon/2009-europe-125x125.png</image> | |||
<width>125</width> | |||
<height>125</height> | |||
</credit> | |||
--> | |||
<credit box-location="alt2"> | |||
<name>ApacheCon US 2008</name> | |||
<name>ApacheCon US 2009</name> | |||
<url>http://us.apachecon.com/</url> | |||
<image>http://apache.org/ads/ApacheCon/2008-usa-125x125.png</image> | |||
<image>http://apache.org/ads/ApacheCon/2009-usa-125x125.png</image> | |||
<width>125</width> | |||
<height>125</height> | |||
</credit> |
@@ -25,21 +25,20 @@ import java.io.BufferedOutputStream; | |||
import java.io.IOException; | |||
import java.io.OutputStream; | |||
import org.w3c.dom.Document; | |||
import org.w3c.dom.svg.SVGLength; | |||
import org.apache.avalon.framework.configuration.Configuration; | |||
import org.apache.batik.bridge.BridgeContext; | |||
import org.apache.batik.bridge.UnitProcessor; | |||
import org.apache.batik.transcoder.TranscoderException; | |||
import org.apache.batik.transcoder.TranscoderOutput; | |||
import org.apache.batik.transcoder.image.ImageTranscoder; | |||
import org.apache.xmlgraphics.java2d.ps.AbstractPSDocumentGraphics2D; | |||
import org.apache.xmlgraphics.java2d.TextHandler; | |||
import org.apache.fop.fonts.FontInfo; | |||
import org.apache.fop.fonts.FontSetup; | |||
import org.apache.fop.svg.AbstractFOPTranscoder; | |||
import org.apache.xmlgraphics.java2d.TextHandler; | |||
import org.apache.xmlgraphics.java2d.ps.AbstractPSDocumentGraphics2D; | |||
import org.apache.xmlgraphics.ps.PSGenerator; | |||
import org.w3c.dom.Document; | |||
import org.w3c.dom.svg.SVGLength; | |||
/** | |||
* This class enables to transcode an input to a PostScript document. | |||
@@ -70,7 +69,7 @@ import org.apache.fop.svg.AbstractFOPTranscoder; | |||
*/ | |||
public abstract class AbstractPSTranscoder extends AbstractFOPTranscoder { | |||
private Configuration cfg = null; | |||
private final Configuration cfg = null; | |||
protected AbstractPSDocumentGraphics2D graphics = null; | |||
/** | |||
@@ -99,7 +98,8 @@ public abstract class AbstractPSTranscoder extends AbstractFOPTranscoder { | |||
FontInfo fontInfo = new FontInfo(); | |||
//TODO Do custom font configuration here somewhere/somehow | |||
FontSetup.setup(fontInfo); | |||
graphics.setCustomTextHandler(new NativeTextHandler(graphics, fontInfo)); | |||
PSGenerator generator = graphics.getPSGenerator(); | |||
graphics.setCustomTextHandler(new NativeTextHandler(generator, fontInfo)); | |||
} | |||
super.transcode(document, uri, output); |
@@ -19,6 +19,7 @@ | |||
package org.apache.fop.render.ps; | |||
import java.awt.Graphics2D; | |||
import java.awt.Shape; | |||
import java.awt.geom.AffineTransform; | |||
import java.io.IOException; | |||
@@ -37,7 +38,7 @@ import org.apache.xmlgraphics.ps.PSGenerator; | |||
*/ | |||
public class NativeTextHandler implements PSTextHandler { | |||
private PSGraphics2D g2d; | |||
private final PSGenerator gen; | |||
/** FontInfo containing all available fonts */ | |||
protected FontInfo fontInfo; | |||
@@ -59,8 +60,8 @@ public class NativeTextHandler implements PSTextHandler { | |||
* @param g2d the PSGraphics2D instance this instances is used by | |||
* @param fontInfo the FontInfo object with all available fonts | |||
*/ | |||
public NativeTextHandler(PSGraphics2D g2d, FontInfo fontInfo) { | |||
this.g2d = g2d; | |||
public NativeTextHandler(PSGenerator gen, FontInfo fontInfo) { | |||
this.gen = gen; | |||
if (fontInfo != null) { | |||
this.fontInfo = fontInfo; | |||
} else { | |||
@@ -83,7 +84,7 @@ public class NativeTextHandler implements PSTextHandler { | |||
} | |||
private PSGenerator getPSGenerator() { | |||
return this.g2d.getPSGenerator(); | |||
return this.gen; | |||
} | |||
/** {@inheritDoc} */ | |||
@@ -98,12 +99,19 @@ public class NativeTextHandler implements PSTextHandler { | |||
//nop | |||
} | |||
/** {@inheritDoc} */ | |||
public void drawString(String text, float x, float y) throws IOException { | |||
// TODO Remove me after removing the deprecated method in TextHandler. | |||
throw new UnsupportedOperationException("Deprecated method!"); | |||
} | |||
/** | |||
* Draw a string to the PostScript document. The text is painted using | |||
* text operations. | |||
* {@inheritDoc} | |||
*/ | |||
public void drawString(String s, float x, float y) throws IOException { | |||
public void drawString(Graphics2D g, String s, float x, float y) throws IOException { | |||
PSGraphics2D g2d = (PSGraphics2D)g; | |||
g2d.preparePainting(); | |||
if (this.overrideFont == null) { | |||
java.awt.Font awtFont = g2d.getFont(); |
@@ -24,18 +24,12 @@ import java.awt.geom.AffineTransform; | |||
import java.io.IOException; | |||
import java.util.Map; | |||
import org.w3c.dom.Document; | |||
import org.apache.avalon.framework.configuration.Configuration; | |||
import org.apache.batik.bridge.BridgeContext; | |||
import org.apache.batik.bridge.GVTBuilder; | |||
import org.apache.batik.gvt.GraphicsNode; | |||
import org.apache.commons.logging.Log; | |||
import org.apache.commons.logging.LogFactory; | |||
import org.apache.xmlgraphics.java2d.ps.PSGraphics2D; | |||
import org.apache.xmlgraphics.ps.PSGenerator; | |||
import org.apache.fop.fonts.FontInfo; | |||
import org.apache.fop.render.AbstractGenericSVGHandler; | |||
import org.apache.fop.render.Renderer; | |||
@@ -43,6 +37,9 @@ import org.apache.fop.render.RendererContext; | |||
import org.apache.fop.render.RendererContextConstants; | |||
import org.apache.fop.svg.SVGEventProducer; | |||
import org.apache.fop.svg.SVGUserAgent; | |||
import org.apache.xmlgraphics.java2d.ps.PSGraphics2D; | |||
import org.apache.xmlgraphics.ps.PSGenerator; | |||
import org.w3c.dom.Document; | |||
/** | |||
* PostScript XML handler for SVG. Uses Apache Batik for SVG processing. | |||
@@ -262,7 +259,9 @@ public class PSSVGHandler extends AbstractGenericSVGHandler | |||
NativeTextHandler nativeTextHandler = null; | |||
BridgeContext ctx = new BridgeContext(ua); | |||
if (!strokeText) { | |||
nativeTextHandler = new NativeTextHandler(graphics, psInfo.getFontInfo()); | |||
PSGenerator generator = graphics.getPSGenerator(); | |||
FontInfo fontInfo = psInfo.getFontInfo(); | |||
nativeTextHandler = new NativeTextHandler(generator, fontInfo); | |||
graphics.setCustomTextHandler(nativeTextHandler); | |||
PSTextPainter textPainter = new PSTextPainter(nativeTextHandler); | |||
ctx.setTextPainter(textPainter); | |||
@@ -283,8 +282,8 @@ public class PSSVGHandler extends AbstractGenericSVGHandler | |||
float w = (float)ctx.getDocumentSize().getWidth() * 1000f; | |||
float h = (float)ctx.getDocumentSize().getHeight() * 1000f; | |||
float sx = psInfo.getWidth() / (float)w; | |||
float sy = psInfo.getHeight() / (float)h; | |||
float sx = psInfo.getWidth() / w; | |||
float sy = psInfo.getHeight() / h; | |||
ctx = null; | |||
builder = null; |