- From: Glenn A. Adams <gadams@xfsi.com>
- Date: Mon, 27 Apr 2009 09:33:28 +0800
- To: Sean Hayes <Sean.Hayes@microsoft.com>
- CC: Public TTWG List <public-tt@w3.org>
Yes, after I sent my email, I realized the same problem, so the correct answer is the second of your two options: "arrange for spacing after the last child of block-area (1)". If there is no such child, then one will need to be synthesized. G. On 4/27/09 5:19 AM, "Sean Hayes" <Sean.Hayes@microsoft.com> wrote: > It was my first thought too, to increase the size of the block-reference-area, > however I don't think that quite solves the problem, since its background > color is set by the region. So, unless, I'm missing something and the > block-area (1) would expand too, it seems to me that either we have to say the > block-reference-area gets its background-color trait set by the <body> > element, or we need to arrange for spacing after the last child of block-area > (1) to force the blue rectangle to increase in size. > > -----Original Message----- > From: Glenn A. Adams [mailto:gadams@xfsi.com] > Sent: 26 April 2009 3:45 AM > To: Sean Hayes > Cc: Public TTWG List > Subject: Re: ISSUE-68 (tts:backgroundColor): Region content > > > inline > > On 4/25/09 6:28 PM, "Sean Hayes" <Sean.Hayes@microsoft.com> wrote: > >> Yes its difficult when we use the same terms in different vocabularies. >> Thanks >> for that exposition, it makes it easier for me to rephrase the question in >> XSL >> terms. >> >> I'm concerned only with the semantics of this section: >> block-viewport-area ; fo:block-container < tt:region >> tts:backgroundColor"red" >> block-reference-area ; fo:block-container < tt:region >> block-area (1) ; fo:block < tt:body >> tts:backgroundColor"blue" >> block-area (2) ; fo:block < tt:div >> >> If the block-area for body is not big enough to overflow the >> block-viewport-area, then the background (let's say red for argument's sake) >> is rendered on the viewport area. > > [GA] Correct, per XSL 1.1 4.9.4, since background-attachment is not > specified and has initial value of 'scroll' and since the refined > block-progression-dimension of the block-reference-area is not larger than > the block-progression-dimension of the block-viewport-area. > >> So we have a red rectangle the size of the >> region, now we need to inset into this by the padding and draw the content >> area. >> XSL defines that the block-reference-area and block-area (1) have a stacking >> constraint, so the after-edge of the block-reference-area is after (in the >> bpd) the after edge of block (1), also the two block areas have a similar >> stacking constraint. We don't define any spacing after blocks, and the >> default >> is 0pt so in fact they are all effectively coincident. > > [GA] Correct, per XSL 1.1 4.2.5 case 2 or 3c'. > >> Thus since we said block (1) is not big enough to fill the viewport (let's >> say >> it fills 50% of the content area), there is a gap between the after edge of >> the block-reference-area (which is blue by virtue of containing the blue >> block-area (1)), and the content area after edge. > > [GA] Correct, though it is more clear to elaborate the last "content area > after edge" as "after edge of content-rectangle of block-viewport-area". > >> This area is therefore red, >> leading to the appearance (but not the reality) that the padding on the after >> edge is larger than it should be. This is semantically correct, but >> authorially confusing, especially to someone with a CSS background (A much >> larger population than those with XSL background, and likely our target >> audience) who would expect (as I did) the blue rectangle to fill the content >> area. >> >> So my take on this, as I come more from a CSS background is to define the >> block-area (1) to in effectively be an infinite plane (this is what I was >> equating to the CSS canvas for the purposes of timed text, although obviously >> this is my own interpretation and not currently indicated by the >> specification). This is possible in XSL by defining an arbitrary amount of >> spacing between the after edge of block (2) and the after edge of block (1) >> (although obviously we would need to define this as part of the conversion to >> XSL-FO). > > [GA] Note that XSL 1.1 6.5.3 does already say as much about > fo:block-container: > > "The block-progression-dimension of the reference-area is not > constrained..." > > However, this applies to the parent area of block-area (1) in this example. > So it is the block-reference-area generated by tt:region that is effectively > the "infinite plane". In contrast, the allocation-rectangle of block-area > (1) generated by tt:body is constrained to the cumulative geometries of its > children (since we don't permit margin, padding, or border on tt:body). > >> Now the block-reference-area is forced by the stacking constraint to overflow >> the viewport area. The background of the block-viewport-area is set to red; >> coloring the padding region, the background of block (1) [blue] is drawn onto >> the block-reference-area which is viewed through the block-viewport-area >> (coincident with the content area), and the result is semantically correct >> XSL, and visually as expected from a CSS viewpoint (and as non normatively >> referenced by 7.7.2 >> http://www.w3.org/TR/REC-CSS2/colors.html#propdef-background-color) > > [GA] As you point out, this can be achieved in XSL by specifying an > appropriate space constraint S on the trailing edge that ends > block-reference-area P (see XSL 4.2.5 last paragraph). > > I believe this can be done by modifiying DFXP 9.3.3 (6) to synthesize the > following properties on the fo:block generated by tt:body: > > space-after.optimum="<region-bpd>" > space-after.maximum="<region-bpd>" > space-after.conditionality="retain" > > where <region-bpd> is computed as follows: > > if ( is-horizontal-writing-mode ( tt:region ) ) { > region-bpd := computed-height ( tt:region ); > } else if ( is-vertical-writing-mode ( tt:region ) ) { > region-bpd := computed-width ( tt:region ); > } else { > region-bpd := 0pt; > } > > This space constraint allows for a minimum of 0pt (the default) and optimum > and maximum of the available extent in the block progression direction of > the region. As such, it should ensure that there is sufficient whitespace > content at the after edge of the block-area (1) generated by tt:region, and > thus, fill out its content-rectangle to ensure the proper after padding > dimension. > > I will go ahead an adopt this as a resolution for this issue, but I also > want to test it on an XSL formatter to make certain my interpretation is > correct. > > Glenn > > >
Received on Monday, 27 April 2009 01:34:13 UTC