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

Reply via email to