Luca,

thanks great stuff - that gives me a lot to work with.

Manuel

On Tue, 6 Sep 2005 06:48 pm, Luca Furini wrote:
> Manuel Mall wrote:
> > These two paragraphs confuse me - sorry. My understanding was:
> >
> > discard = start/end borders/padding only at the start and end of
> > the whole fo:inline
> >
> > retain = as discard plus start/end borders/padding on the start and
> > end of every line the fo:inline spans.
>
> Sorry, you are completely right, I did not understand you were
> referring to the "extra" borders needed around a line break.
>
> What we need is one or more elements whose overall behaviour is this:
> - they represent a space (or another legal break point)
> - if they are not used as a break, they behave like a normal space
> (or like a not-used hyphenation point)
> - if they are chosen as a break, they must add something both at the
> end of the line they end, and at the beginning of the next line
>
> This is quite similar to the behaviour of the sequence of elements
> representing a space in a centered text (in the
> TextLM.getNextKnuthElements() method); so, in this case we could use:
>
> 1  glue     width = border/padding at the end of the line = A
> 2  penalty  width = 0, value = 0
> 3  glue     width = space.opt - (A + B),
>              stretch = space.max - space.opt
>              shrink = space.opt - space.min
> 4  box      width = 0
> 5  penalty  width = 0, value = infinity
> 6  glue     with = border/padding at the beginning of the line = B
>
> so:
> - element 1 is a legal break point, but it is never chosen as 2 is
> better - element 2 is a legal break point: if it is chosen, the
> ending line will reserve a width of A for border and padding, and the
> next line will reserve a width of B (the glue 3 is discarded)
> - element 3 is NOT a legal break because of the preceding penalty
> - element 5 is NOT a legal break because of its value
> - element 6 is NOT a legal break because of the preceding penalty
> - is there is no break, the overall width is A + (space.opt - (A +
> B)) + B = space.opt
>
> In order to make all this work, the TextLM should
> - know that it is working on text with non-conditional borders
> - "combine" this sequence with the one it would create in a "normal"
>    situation
>
> Regards
>      Luca

Reply via email to