Begin forwarded message:
From: Andreas L Delmelle <[EMAIL PROTECTED]>
<snip/>
<fo:block margin-left="0pt" margin-right="0pt" unicode-
bidi="embed">
<fo:block-container absolute-position="absolute"
left="16.0%" top="16.0%">
<fo:block>
<fo:inline margin-left="0pt" margin-right="0pt">1</
fo:inline>
</fo:block>
</fo:block-container>
<snip/>
So now the 1, 2 and 3 are all inside the outer box, but all at
the top left corner. This could be because the <fo:block> inside
the top-level <fo:block-container> doesn't fill the entire block
container. It could also be because % simply doesn't work
(hopefully that isn't the case though, the former problem is
easier to work around.)
The problem could be the use of % in the left and top attributes.
I just confirmed (by replacing the percentages with absolute
widths): the percentages are most definitely the problem here. This
is a FOP bug. :(
I went digging a bit deeper, and what I found was that somehow the
value of "16%" got parsed into a FixedLength with an absolute value
of 160mpt. The relative positioning between the block-containers is
respected, but the displacement is brought down to only a fraction of
a pixel.
A fix for the left-percentage is setting the PercentBase on the
PropertyMaker for "left" to LengthBase.CONTAINING_BLOCK_WIDTH in
FOPropertyMapping.createAbsolutePositionProperties().
Although I'm not sure whether that is completely correct. Should the
16% be relative to the outer block-container, or to the page (since
the inner block-containers' positions are also absolute)?
Anyway, for the top-percentage, setting the percent-base still
doesn't seem to be enough, although it fixes the issue described
above. The parsed property is no longer a FixedLength.
I'll see if I can track that last one down as well.
Cheers,
Andreas