Simon, I've tried to think your example through. If I read the spec
right about space resolution then I get the impression that we may need
to do more in this area than find a suitable box/glue/penalty
combination. There may be several spaces which need to be taken into
account during resolution. There's the precedence and the conditionality
that needs to be evaluated. I think we may need to create special
elements that can hold this information (or reference it). They need to
be distinguishable so we can apply the resolution rules properly.

I believe your example should then look like this:

- box
- penalty (w=0, p=infinite)
- space
- glue (w=0, y=0, z=0)
- space
- penalty (w=0, p=infinite)
- box


A more complex example would look like this:

<fo:block space-after="5pt">
  <fo:block>a line</fo:block>
  <fo:block space-after="3pt">
     blah blah
  </fo:block>
</fo:block>
<fo:block space-before="10pt">
  blah bla
</fo:block>

- box ("a line")
- box ("blah blah")
- penalty (w=0, p=infinite)
- space (w=3pt, ref to the space property)
- penalty (w=0, p=infinite)
- space (w=5pt, ref to the space property)
- glue (w=0, y=0, z=0)
- space (w=10pt, ref to the space property)
- penalty (w=0, p=infinite)
- box

The algorithm would have to track down the space element before and
after the break and then apply the space resolution rules. The space
elements would behave much like glue elements.

What do you think?

On 25.02.2005 22:50:17 SimonPepping wrote:
> +=== Space specifiers ===
> +
> +When the space specifiers resolve to zero around a page break, we are
> +in the same situation as that of a word space in line breaking. It is
> +represented by the sequence `box - glue - box`.
> +
> +When the space specifiers do not resolve to zero around a page break,
> +we are in the same situation as that of a word space in line breaking
> +in the case of centered lines. It is represented by the sequence 
> +{{{
> +box - infinite penalty - glue(ha) - zero penalty - glue(hn-ha-hb) - zero 
> width box - infinite penalty - glue(hb) - box
> +}}}
> +where ha is the bpd of
> +the space-after before the page break, hb is the bpd of the
> +space-before after the page-break, hw is the space when there is no
> +page break.


Jeremias Maerki

Reply via email to