W3C home > Mailing lists > Public > xsl-editors@w3.org > July to September 2005

reference-orientation and writing-mode

From: Peter B. West <lists@pbw.id.au>
Date: Wed, 24 Aug 2005 13:35:47 +0100
Message-ID: <430C69A3.4050201@pbw.id.au>
To: xsl-editors <xsl-editors@w3.org>
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/>

---
[This E-mail has been scanned for viruses but it is your responsibility 
to maintain up to date anti virus software on the device that you are
currently using to read this email. ]
Received on Wednesday, 24 August 2005 12:37:00 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Monday, 7 December 2009 10:59:58 GMT