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