On Tuesday 20 March 2007 04:10, Andreas L Delmelle wrote: > 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. >
My understanding of the spec is that for "top" and "bottom" percentages only make sense if the containing block has a fixed height. If the containing block has a variable height percentages are suppose to be ignored and the property value assumed to be "auto". > > Cheers, > > Andreas Manuel