reference-orientation and writing-mode

The editors,

The changes to reference-orientation, including its involvement in the
from-page-master-region() function and its liberation from inheritance
mean, I think, that it is worthwhile re-thinking the whole notion of
inheritance for reference-orientation.

Now that reference-orientation is not inherited, it must either be
specifically set on a reference-area returning FO, or assume the default
value, 0.  In the previous version of the recommendation,
reference-orientation did not apply to fo:page-sequence.  Now that it is
not inherited, it seems redundant to begin to apply it.  Authors wishing
to apply a particular reference-orientation to the top-level children of
fo:static-content and fo:flow have the option to define such children as
reference areas, and place a reference-orientation on them directly.
Alternatively, they can define a (non-applying) reference-orientation on
fo:page-sequence and access it via from-parent() or
from-nearest-specified-value().

What they cannot do is 1) specify one reference-orientation on the
relevant fo:layout-master-set element, specify a different orientation
on the fo:page-sequence, and 2) expect the fo:block children of fo:flow
to exhibit the latter orientation, or expect the orientation of the
fo:block-container children to default to the latter.

One way to look at a reference-orientation value is as an
instruction to set a state of the area tree relative to an ancestor
area.  A reference-orientation of "0", the default, is a no-op. In this
dependency on the area tree it has parallels with percentage values for
lengths.

Given that, why is it necessary to introduce from-page-master-region()
to determine a value for reference-orientation?  If 1.0 is left alone,
the page-level areas, down to and including span-reference-area and
normal-reference-area, will assume the reference-orientation value
defined on the relevant ancestor on fo:layout-master-set, or "0".

What about writing-mode?  Unfortunately, although writing-mode presents
similar problems as reference-orientation, it doesn't have such nice
characteristics.  However, a similar approach can be taken.

The draft contains the following in '7.29.7 "writing-mode"'.

<quote>
The writing-mode trait on an area is indirectly derived from the
"writing-mode" property on the formatting object that generates the area
or the formatting object ancestors of that formatting object. The
"writing-mode" property applies only to formatting objects that set up a
reference-area. Each value of writing-mode sets all three of the
direction traits indicated in each of the value descriptions above on
the reference-area. (See the area model for a description of the
direction traits and their usage.)

Note:

To change the "writing-mode" within an fo:flow or fo:static-content,
either the fo:block-container or the fo:inline-container, as
appropriate, should be used.
</quote>

The phrase "formatting object that generates the area" presents all of
the usual problems that are associated with fo:page-sequence, of which
more later.   Leaving that aside, it seems reasonable to specify that,
like reference-orientation, writing-mode is not inherited.  The
difference is that, whereas with reference-orientation, the lack of a
specification on a particular reference-area generating fo sends that fo
back to the default value of "0", which turns out to be very useful, the
Initial value of writing-mode is "lr-tb".  What writing-mode needs is a
no-op value, which is an instruction to get the value from the current
area tree context, without change.  Some candidates would be "no-change"
and "as-is". On top of the default value, another initial value is
required.  This would be "lr-tb".

Strange as it may seem, this corresponds to the situation with
reference-orientation. "0" is "no rotation with respect to the
containing reference-area."  What is the initial orientation? That
depends on the settings of of a number of other properties, for instance
media-usage and page-height, and will often devolve to the user agent.
Users frequently change from portrait to landscape orientation by
specifying page-height and page-width.  That results in very different
meanings for "0".

While reference-orientation can implicitly depend on other properties or
the user agent, initial writing mode must, for backward compatibility,
be specified as "lr-tb", and this would have to be detailed in the
discussion of the writing-mode property.  The initial-value, for the
purposes of defaulting, would then be specified as "as-is".

With that change, the elements of the discussion of
reference-orientation would also apply to writing-mode; in particular
the manner of specifying a writing-mode on the children of fo:flow and
fo:static-content that differs from the writing-mode in effect on the
relevant region.

fo:page-sequence, in 1.0, embodies a contradiction.  On the one hand, it
is tasked with "generating" not only the page-viewports, but the
region-reference-areas.  On the other, reference-orientation and
writing-mode do not apply to fo:page-sequence.  The editors are seeking
to resolve this by applying those properties to fo:page-sequence.
However, the properties still apply to the simple-page-master and the
region FOs. They must, because, in spite of the language of the draft,
those FOs do, in fact, generate reference-areas.  Language engineering
doesn't alter that reality.

My suggestions would require a clarification to the language of area
generation.  fo:page-sequence would return page-viewport-areas, but not
generate them.  Likewise, it would not generate region-reference-areas.
It does invoke the generation of those areas, because
fo:simple-page-master and offspring do not, in isolation, generate
anything.  They must be invoked by an fo:page-sequence.  Once invoked,
however, they most definitely generate the reference-areas.  This should
be made clear in the language of the Recommendation.

I realize that this is a critical point.  The draft relies on the
assertion that fo:page-sequence "generates" page-viewports and
region-reference-areas for much of the rationale of what are, to me,
controversial changes to the specifying of reference-orientation and
writing-mode.  My contention is that such changes run against the grain
of the underlying structural reality of the use of these properties, and
of the inheritance system as a whole.

My apologies for the scattered nature of these comments.  Thanks for
your attention.  It is a privilege to be able to participate in such 
discussions.

Peter West
-- 
Peter B. West <http://cv.pbw.id.au/>
Folio <http://defoe.sourceforge.net/folio/>

Received on Wednesday, 24 August 2005 12:37:00 UTC