- From: Grosso, Paul <pgrosso@ptc.com>
- Date: Thu, 26 Jan 2006 10:05:54 -0500
- To: "Manuel Mall" <mm@arcus.com.au>, <xsl-editors@w3.org>
You correct that there is a problem in the draft. The text as written now works only in the case where the font sizes are all the same, and in that case the ancestor/descendant constraints are superfluous. To correct the draft, we will change the first paragraph to read: 3. For any inline-area descendant I of P, the distance in the shift-direction from the dominant baseline of the parent Q of I, to the alignment-point of I equals the offset between the dominant baseline of Q and the baseline of Q corresponding to the alignment-baseline trait of I, plus the baseline-shift for I. This removes the superfluous constraints and precisely captures our examples. Paul Grosso for the XSL FO SG > -----Original Message----- > From: xsl-editors-request@w3.org > [mailto:xsl-editors-request@w3.org] On Behalf Of Manuel Mall > Sent: Tuesday, 2005 September 27 10:03 > To: xsl-editors@w3.org > Subject: nested inlines and baseline scaling > > > My apologies for this relatively long post. I am struggling to > come to terms with some of the fundamentals of line building. > > The spec in 4.6.1 defines what a 'properly stacked' inline-area > is. Items 1. and 2. deal with stacking in IPD and item 3 repeated here > deals with stacking in the BPD: > > "3. For any inline-area descendant I of P, the distance in the shift- > direction from the dominant baseline of P to the alignment-point of I > equals the offset between the dominant baseline of P and the > baseline of > P corresponding to the alignment-baseline trait of I, plus the sum of > the baseline-shifts for I and all of its ancestors which are > descendants > of P. > > The first summand is computed to compensate for mixed writing systems > with different baseline types, and the other summands involve > deliberate > baseline shifts for things like superscripts and subscripts." > > In 7.13 there are examples given and they all work with the above > definition. > > Now lets take this example: > > <fo:block>Some text > <fo:inline font-size=".5em" > dominant-baseline="reset-size" > alignment-baseline="text-before-edge">top > </fo:inline> > </fo:block> > > The inline gets a new baseline table scaled to its font-size > because of > the dominant-baseline="reset-size" setting. Note that the > dominant-baseline-indentifier has not changed. Its still "alphabetic" > although that baseline does not align any more between the two areas > because of the rescaling of the baseline table. Now lets give the text > "top" a small suffix. > > <fo:block>Some text > <fo:inline font-size=".5em" > dominant-baseline="reset-size" > alignment-baseline="text-before-edge">top > <fo:inline font-size=".5em" alignment-baseline="central"> > tiny</fo:inline> > </fo:inline> > </fo:block> > > So "tiny" becomes some small text aligned on the central baseline as > established after rescaling. The problem is that the positioning of > "tiny" violates the rule 3. above on proper stacking with > respect to the > line-area created by the fo:block. It is OK with respect to its direct > ancestor but it fails when applied recursively. This is > because rule 3. > doesn't cater at all for rescaling of the baseline table, it > only deals > with changing the alignment point (In my example its first moved to > "text-before-edge" and then to "central") and baseline-shifts. But I > couldn't find anywhere in the spec a notion that baseline rescaling > involves a baseline shift. The problem of course is that when > a baseline > table is rescaled there is no uniform shift and the shift amount per > baseline also depends on the alignment. > > May be rule 3 is not meant to be applied recursively but than it its > formulated inconsistently with the rest of the spec. > > Still seriously confused > > Regards > > Manuel Mall > >
Received on Thursday, 26 January 2006 15:06:10 UTC