--- src/org/apache/fop/layout/LinkSet.java.orig 2005-07-22 17:45:34.000000000 -0700 +++ src/org/apache/fop/layout/LinkSet.java 2005-07-22 17:24:42.000000000 -0700 @@ -56,6 +56,7 @@ // FOP import org.apache.fop.layout.inline.InlineArea; +import org.apache.fop.fo.properties.*; /** * a set of rectangles on a page that are linked to a common @@ -126,7 +127,7 @@ BlockArea ba = (BlockArea)area; for (int i = 0; i < rects.size(); i++ ) { LinkedRectangle r = (LinkedRectangle)rects.get(i); - r.setX(r.getX() + ac.getXPosition() + area.getTableCellXOffset()); + r.setX(r.getX() + ac.getXPosition()); r.setY(ac.getYPosition() - height + (maxY - r.getY()) - ba.getHalfLeading()); } @@ -161,10 +162,19 @@ } public void align() { + int xOffset = 0; + int yOffset = 0; + AreaContainer ac = area.getNearestAncestorAreaContainer(); + while (ac!=null && ac.getPosition()!=Position.ABSOLUTE) { + xOffset += ac.getXPosition(); + yOffset += ac.getYPosition(); + ac = ac.getNearestAncestorAreaContainer(); + } for (int i = 0; i < rects.size(); i++ ) { LinkedRectangle r = (LinkedRectangle)rects.get(i); - r.setX(r.getX() + r.getLineArea().getStartIndent() + r.setX(r.getX() + xOffset + r.getLineArea().getStartIndent() + r.getInlineArea().getXOffset()); + r.setY(r.getY() - yOffset); } }