- From: Steve Zilles <szilles@adobe.com>
- Date: Wed, 02 Nov 2005 12:10:28 -0800
- To: Manuel Mall <mm@arcus.com.au>, xsl-editors@w3.org
- Message-Id: <6.2.1.2.2.20051102115521.0ce11940@namailhost.corp.adobe.com>
At 11:57 PM 10/31/2005, Manuel Mall wrote: >On Tue, 1 Nov 2005 02:36 pm, Steve Zilles wrote: > >> At 02:30 AM 9/28/2005, Manuel Mall wrote: > >> > >> This is a request for clarification please. > >> > >> The alignment-adjust property has the values "before-edge" and > >> "after-edge" as legal values. However, according to the definition of > >> these baselines in section 7.13 (7.14 in the draft) they are only > >> defined for line areas. The alignment-adjust property is defined only > >> for formatting objects generating inline areas. Inline areas don't > >> have those baselines and therefore I don't understand how such a > >> value for alignment-adjust should be interpreted. > >> > >> > > The text is correct as written. The alignment-adjust property is used > > to establish the "alignment-baseline" for an area (see section > > 7.13.1, "With the "alignment-adjust" property, the position of the > > baseline identified by the "alignment-baseline" can be explicitly > > determined"). Section 4.2.6 says, "each inline-area has an > > alignment-baseline which specifies how the area is aligned to its > > parent." In this case, the values in question specify that the > > inline-area with the > > "alignment-adjust" property is to be aligned either at the > > before-edge or the after-edge of the line area of which it is a > > descendant. It is perhaps confusing that the text in section 4.2.6 > > concerning the alignment-baseline makes a reference to aligning with > > respect to its parent where, in this case, the alignment is with > > respect to the line area from which the aligned area descends. Note > > that the baseline referred to in the alignment-adjust property values > > is not a baseline of the area being aligned, but is a baseline to > > which it is aligned. Thus, it makes sense to reference baseline only > > defined for line areas. > >> > >> Thank you > >> > >> Manuel > > > >Steve, > >my interpretation is certainly different. You say: "Note >that the baseline referred to in the alignment-adjust property values >is not a baseline of the area being aligned, but is a baseline to >which it is aligned." IMO the value referred to in the alignment-adjust >property is not a baseline value as such but an instruction how to >determine the alignment-point of the area to be aligned and it is not >"the baseline to which it is aligned". For example for the value >before-edge it says: > >before-edge > The alignment-point is at the intersection of the start-edge of the >allocation-rectangle and the "before-edge" baseline of the area. > >The phrase '"before-edge" baseline of the area' clearly refers to the >baseline of the area to be aligned. Any other interpretation doesn't >make sense to me because alignment-adjust determines an alignment-point >for the area in question. To give a XSL-FO example: ><fo:block>ABCD<fo:external-graphic >alignment-adjust="central" ....></fo:block> >Assuming everything else is default this means for the external-graphics >area its alignment-point is in the central position on its start-edge >and that point is then aligned with the alignment-baseline of the block >which would be the alphabetic baseline for the font in question. As one >can see the 'alignment-adjust="central"' does not refer to any >baselines in the fo:block or any baselines the fo:external-graphic is >aligned to (it is aligned to the alphabetic baseline of its parent) but >to the intersection of the central baseline of the fo:external-graphic >area with its start-edge. You are correct, that at the time I wrote the first message (late at night) I was mentally equating "alignment-baseline" and "alignment-adjust". The confusion came from knowing what the effect of setting both of these value to "before-edge" was supposed to be. The message that you are commenting on almost got the intended behavior correct. It unfortunately, confused what was going on with "alignment-baseline" with what was going on with "alignment-adjust". The reason for this is that intended behavior of setting "alignment-baseline" to "before-edge" was that the "before-edge" of the area being aligned was aligned with the "before-edge" of the line-area. The problem is not that the values of "before-edge" and "after-edge" should not be included as values of "alignment-adjust". The problem is that the text implies that these values are only meaningful for line-areas (which is true for the "alignment-baseline" property) and then fails to define what these values mean for "alignment-adjust". These values are there to make it possible to treat the (CSS/XSL) "vertical-align" property as a shorthand. That is, to break up the behavior of the "vertical-align" property into a set of component properties that can be given values that mimic the behavior of the "vertical-align" values The behavior of the "vertical-align" property is described in section 10.8.1 Leading and half-leading of the CSS 2.1 specification http://www.w3.org/Style/Group/css2-src/css2.txt This text says, The following values align the element relative to the line box. Since the element may have children aligned relative to it (which in turn may have descendants aligned relative to them), these values use the bounds of the aligned subtree. The aligned subtree of an inline element contains that element and the aligned subtrees of all children inline elements whose computed 'vertical-align' value is not 'top' or 'bottom'. The top of the aligned subtree is the highest of the tops of the boxes in the subtree, and the bottom is analogous. top Align the top of the aligned subtree with the top of the line box. bottom Align the bottom of the aligned subtree with the bottom of the line box. (As noted elsewhere in the XSL section, "top" and "bottom" apply only to a horizontal IPD and are mapped to "before-edge" and "after-edge", respectively.) Thus, the definition that is missing from the XSL specification is the definition of the "before-edge" of the "aligned sub-tree" that is being aligned. With the addition of this definition, the values of "before-edge" and "after-edge" make sense and do the correct thing. What had confused me was that setting "vertical-align" to "top" does two things: it sets the "alignment-baseline" to be the line-area before-edge AND it sets the "alignment-adjust" to also use the before-edge of the aligned subtree. It was this last point that XSL sub-group failed to correctly record in the break-out of the "vertical-align" property in section 7.29.22. "vertical-align" of the XSL Recommendation.
Received on Wednesday, 2 November 2005 20:11:50 UTC