In correcting a problem in bidi context today, I noticed that
AbstractGraphicsLayoutManager.getInlineArea fails to set the common border
padding background properties on the superclass LeafNodeLayoutManager. As a
consequence, no Knuth elements are generated for inline border and padding
segments, and thus the line breaker is working with bad data. Interestingly,
this showed up only when applying border or padding to fo:external-graphics
or fo:instream-foreign-object in a right-to-left context, which requires the
line's inline areas to correctly account for all inline border and padding
widths in order to compute the correct end-indent on the line area.

I've fixed this in my private dev branch which will soon go into a new patch
for the Temp_ComplexScripts branch, but someone might wish to put this fix
into trunk earlier.

Here is the essential diff for
AbstractGraphicsLayoutManager.getInlineArea():

         CommonBorderPaddingBackground borderProps =
fobj.getCommonBorderPaddingBackground();
+        setCommonBorderPaddingBackground(borderProps);

G.

Reply via email to