- From: Peter B. West <lists@pbw.id.au>
- Date: Fri, 01 Apr 2005 02:14:17 +1000
- To: Liam Quin <liam@w3.org>
- CC: xsl-editors <xsl-editors@w3.org>
- Message-ID: <424C21D9.80205@pbw.id.au>
Liam Quin wrote: > Peter, > > You wrote, > If (padding-corresponding + border-corresponding) > 0, we are left > with a negative margin-corresponding. > > That's correct. > > The Working Group reviewed your comment, and their response is that > a negative margin-corresponding is not a problem, and the suggested > change is therefore not needed. > > Please let us know if that doesn't answer yuor question! Liam, The response does not answer the question. What I was commenting on that the margin is _necessarily_ <= zero when neither the margin-corresponding nor the start-indent is specified, because the reference indent is eliminated from the equation. I prefix my remarks by saying that I find this section very difficult to grapple with, and am well aware that I may have overlooked important related information or simply mis-interpreted the Recommendation. Let me elaborate on the reasons for my earlier suggestion. It seems to me that the discussion in 5.3.2 is incomplete. There are two implied matrices of possibilities; one for FOs which generate reference-areas, and one for those which do not. Reference-area generating FOs indent spec- ified +-----+----------------------------+----------------------------+ margin-| | | | corres | | | | spec- | | Yes | No | ified | | | | +-----+----------------------------+----------------------------+ | | Margin property takes | Not specifically discussed.| | Yes | precedence over relative | | | | property. Handled as | | | | below. | | +-----+----------------------------+----------------------------+ | | Explicitly discussed in | Not specifically discussed.| | No | 5.3.2. Indent computed as | | | | margin-c + padding-c + | | | | border-c-width | | +-----+----------------------------+----------------------------+ Non-reference-area generating FOs indent spec- ified +-----+----------------------------+----------------------------+ margin-| | | | corres | | | | spec- | | Yes | No | ified | | | | +-----+----------------------------+----------------------------+ | | Margin property takes | Explicitly discussed in | | Yes | precedence over relative | 5.3.2. Margin computed as | | | property. Handled as | indent - inherited-value( | | | below. | indent) - padding-c - | | | | border-c-width | +-----+----------------------------+----------------------------+ | | Explicitly discussed in | Implicitly discussed in | | No | 5.3.2. Indent computed as | 5.3.2. Margin computed as | | | inherited-value(indent) + | inherited-value(indent) - | | | margin-c + padding-c + | inherited-value(indent) - | | | border-c-width | padding-c - border-c-width | +-----+----------------------------+----------------------------+ Could the WG please verify this analysis and fill in the blanks for me? (See also my comment at the end of the message.) My understanding of some aspects of this part of the recommendation is illustrated in the accompanying PDF diagrams. Figure 1 illustrates the following part of sction 5.3.2: <quote> If the corresponding absolute "margin" property is specified on the formatting object and the formatting object does not generate a reference area, the computed value of the margin and the computed values of the corresponding "border-X-width" and "padding-X" properties are used to calculate the computed value of the corresponding "Y-indent" property. The formulae for "start-indent" and "end-indent" are: start-indent = inherited_value_of(start-indent) + margin-corresponding + padding-corresponding + border-corresponding-width </quote> In this case, the margin-corresponding is explicitly set to 0pt. Figure 2 illustrates the next formula: <quote> If the corresponding absolute margin property is not explicitly specified, or if the corresponding relative property is specified on the formatting object and the absolute property only specified by the expansion of a shorthand, the corresponding absolute margin property is calculated according to the following formulae: margin-corresponding = start-indent - inherited_value_of(start-indent) - padding-corresponding - border-corresponding-width margin-corresponding = end-indent - inherited_value_of(end-indent) - padding-corresponding - border-corresponding-width Note: If the "start-indent" or "end-indent" properties are not specified their inherited value is used in these formulae. </quote> In this case, the "Note" comes into play because neither the margin-corresponding nor the start-indent is specified. Therefore, although the initial value of margin-left is 0pt, the _specified_ values of border-corresponding-width and padding-corresponding are effectively eliminated. These values are eliminated no matter what they are specified as, because they will always be neutralized by an equal and opposite computed value of margin-corresponding. This seems to me to be bizarre. Considering these cases in more detail for this response, I have come the the conclusion that my original suggestion for addressing this difficulty was misguided. The formulae for non-reference-area generating FOs show that indent accumulates on the descendants of reference-areas. Where margin is specified, the sum of margin, border and padding is added to the inherited indent. The question is which property, margin-correspondng or indent, is the reference property when neither are specified. The current wording (the Note) implies that the margin-corresponding is calculated on the basis of the inherited value of the indent, but using the formula obliterates any possible increment to the indent, orthogonally to the expectations aroused by all other cases. Given that indent accumulates, it seems sensible, when neither property is specified, to take the inherited indent as a base and calculate the indent increment on the basis of the the computed margin, border and padding properties. I therefore propose the following changes to 5.3.2. <original> If <added>a) either </added> the corresponding absolute "margin" property is specified on the formatting object <added> or neither the corresponding absolute "margin" property nor the corresponding relative property is specified on the formatting object </added> and <added>b) </added> the formatting object does not generate a reference area, the computed value of the margin and the computed values of the corresponding "border-X-width" and "padding-X" properties are used to calculate the computed value of the corresponding "Y-indent" property. The formulae for "start-indent" and "end-indent" are: start-indent = inherited_value_of(start-indent) + margin-corresponding + padding-corresponding + border-corresponding-width end-indent = inherited_value_of(end-indent) + margin-corresponding + padding-corresponding + border-corresponding-width If the <added> corresponding relative property is specified and the </added> corresponding absolute margin property is not explicitly specified, or if the corresponding relative property is specified on the formatting object and the absolute property only specified by the expansion of a shorthand, the corresponding absolute margin property is calculated according to the following formulae: margin-corresponding = start-indent - inherited_value_of(start-indent) - padding-corresponding - border-corresponding-width margin-corresponding = end-indent - inherited_value_of(end-indent) - padding-corresponding - border-corresponding-width <deleted> Note: If the "start-indent" or "end-indent" properties are not specified their inherited value is used in these formulae. </deleted> </original> As a result of preparing this response, I have come to the conclusion that the cases "not specifically discussed" in the matrix at the beginning of this message are irrelevant. Those cases apply to reference-area-generating FOs, where the margin-corresponding has not been specified. It seems to me now that the indent must be "reset" on such FOs, and reset according to the computed margin, border and padding properties, so that the descendants of the FO have a "clean slate" against which to express or calculate their accumulating indents. If this is the case, some mention of it in 5.3.2 would greatly assist the understanding of this section. If it is not the case, this message is an example of the confusion that can arise from the current wording. Yours faithfully, -- Peter B. West <http://cv.pbw.id.au/> Folio <http://defoe.sourceforge.net/folio/> <http://folio.bkbits.net/> -- Peter B. West <http://cv.pbw.id.au/> Folio <http://defoe.sourceforge.net/folio/> <http://folio.bkbits.net/>
Attachments
- application/pdf attachment: 5.3.2_margin_space_indent_fig-1.pdf
- application/pdf attachment: 5.3.2_margin_space_indent_fig-2.pdf
Received on Thursday, 31 March 2005 16:14:37 UTC