In the discussion of block stacking constraints in Section
4.2.5, the notion of fence is introduced. For
block stacking constraints, a fence is defined as either a
reference-area boundary or a non-zero padding or border
specification. Fences, however, do not come into play
when determining the constraint between siblings. (See
Figure 1.)
Figure 1
|
Figure 1 assumes a block-progression-direction of top to
bottom.
|
In Diagram a), block A has
non-zero padding and borders, in addition to non-zero
spaces. Note, however, that the space-after of A is
adjacent to the space-before of block P, so borders and
padding on these siblings have no impact on the interaction
of their <space>s. The stacking constraint A,P is
indicated by the red rectangle enclosing the space-after of
A and the space-before of P.
In Diagram b), block B is the
first block child of P. The stacking constraint A,P is as
before; the stacking constraint P,B is the space-before of
B, as indicated by the enclosing magenta rectangle. In this
case, however, the non-zero border of P prevents the
interaction of the A,P and P,B stacking constraints. There
is a fence-before P. The fence is notional; it has
no precise location, as the diagram may lead one to believe.
In Diagram c), because of the
zero-width borders and padding on block P, the fence-before
P is not present, and the adjacent <space>s of blocks
A, P and B are free to interact. In this case, the stacking
constraints A,P and P,B are as before, but now there is an
additional stacking constraint A,B, represented by the light
brown rectangle enclosing the other two stacking
constraints.
The other form of fence occurs when the parent block is a
reference area. Diagram b) of Figure
2 illustrates this situation. Block C is a
reference-area, involving a 180 degree change of
block-progression-direction (BPD). In the diagram, the
inner edge of block C represents the content rectangle, with
its changed BPD. The thicker outer edge represents the
outer boundary of the padding, border and spaces of C.
While not every reference-area will change the
inline-progression-direction (IPD) and BPD of an area, no
attempt is made to discriminate these cases. A
reference-area always a fence. The fence comes into play in
analogous circumstances to non-zero borders or padding.
Space resolution between a reference area and its siblings
is not affected.
In the case of Diagram b),
these are block stacking constraints B,C and C,A. Within
the reference-area, bock stacing constraints C,D and E,C are
unaffected. However, the fence prevents block stacking
constraints such as B,E or D,A. When there is a change of
BPD, as Diagram b) makes
visually obvious, it is difficult to imagine which blocks
would have such a constraint, and what the ordering of the
constraint would be.
Figure 2