reference-orientation

The editors,

I am seeking clarification of the semantics of reference-orientation. 
The Draft Recommendation has:
<quote>
7.20.3 "reference-orientation"

XSL Definition:
Value:  0 | 90 | 180 | 270 | -90 | -180 | -270 | inherit
Initial:  0
Inherited:  yes (see prose)
</quote>

I don't find that the prose of 7.20.3 clarifies the semantics.  There is 
no further mention of inheritance in that text.  It does have:
<quote>
The "reference-orientation" property is applied only on formatting 
objects that establish a reference-area. Each value of 
"reference-orientation" sets the absolute direction for "top", "left", 
"bottom", and "right"; which is used by "writing-mode", "direction", and 
all positioning operations that are referenced to the reference-area or 
are nested within it.
</quote>

This is the only thing I can see that has any aspect of inheritance 
about it.

Assuming that a reference-orientation of 90 has been applied on the 
nearest ancestor reference area A of some reference area B, and is never 
re-specified, does this mean that the effective reference-orientation of 
B is 180?  If so, say that B has a reference-area descendant C, and that 
C has a reference-area descendant D, and that reference-orientation is 
never re-specified in the FO tree path to D. The implication is that the 
effective reference-orientation of C is 270, and that of D is 0.  In 
other words, does the "inheritance" of a single non-zero 
reference-orientation have the effect of causing multi-generation 
descendant reference-areas to "spin"?

If not, would the addition of 'reference-orientation="inherit"' on B, C 
and D cause them to "spin"?

"Spinning" seems to be a consequence of the way the Rec is currently 
worded.  I don't know whether any implementations displays this behaviour.

It would seem to me desirable to have the semantics defined along the 
following lines.

     Value:     0 | 90 | 180 | 270 | -90 | -180 | -270 | inherit
     Initial:   0
     Inherited: No

I.e. allow the "inherit" keyword, but deny default inheritance. The 
default value for all reference-areas is the initial value, 0. (Note 
that this behaviour is spelled out for the reference-area in a number of 
viewport/reference-area pairs.) "inherit" would, in the case above, 
cause "spinning", and this should be pointed out in explanatory text for 
the "inherit" value.

The description of the "integer" values is unchanged.

The problem arises, I think, because the trait "reference-orientation" 
is an accumulator, unlike other traits.


Peter West

Received on Friday, 14 January 2005 05:52:23 UTC