Julien Lacour created FOP-3135:
----------------------------------
Summary: SVG <tspan> content is displayed on a single line without
spaces
Key: FOP-3135
URL: https://issues.apache.org/jira/browse/FOP-3135
Project: FOP
Issue Type: Bug
Components: image/svg
Reporter: Julien Lacour
We have found an issue in FOP when transforming PDFs with SVGs containing
<tspan> with multiple @x and/or @y attributes values.
The problem is located in
org.apache.fop.svg.PDFTextPainter.writeGlyphs(FOPGVTGlyphVector, GeneralPath),
the positions given by x and y are never used when set.
A possible fix for this issue is the following:
{code:java}
for (int i = 0, n = gv.getNumGlyphs(); i < n; i++) {
int gc = gv.getGlyphCode(i);
int[] pa = ((i > dp.length) || (dp[i] == null)) ? paZero
: dp[i];
if (gv.getGlyphPosition(i) != null) {
Point2D gp = gv.getGlyphPosition(i);
double x = gp.getX() - initialPos.getX();
double y = -(gp.getY() - initialPos.getY());
double xd = x - xoLast;
double yd = y - yoLast;
textUtil.writeTd(xd, yd);
textUtil.writeTj((char) gc, true, false);
xc = x + pa[2];
yc = y + pa[3];
xoLast = x;
yoLast = y;
} else {
double xo = xc + pa[0];
double yo = yc + pa[1];
double xa = f.getWidth(gc);
double ya = 0;
double xd = (xo - xoLast) / 1000f;
double yd = (yo - yoLast) / 1000f;
textUtil.writeTd(xd, yd);
textUtil.writeTj((char) gc, true, false);
xc += xa + pa[2];
yc += ya + pa[3];
xoLast = xo;
yoLast = yo;
}
}
{code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)