W3C home > Mailing lists > Public > xsl-editors@w3.org > July to September 2001

Re: XSL-FO: space/border/paddings and conditionality

From: Anders Berglund <alrb@us.ibm.com>
Date: Tue, 3 Jul 2001 12:01:06 -0400
To: MURAKAMI Shinyu <murakami@nadita.com>
Cc: xsl-editors@w3.org
Message-ID: <OF9360C6EE.F8CFC168-ON85256A7E.0057EF59@pok.ibm.com>

>>
>> >The is-first/last problem is not only about border/paddings but also
>> >about spaces. However the problem is different.
>> >
>> >Example of conditional spaces:
>> >
>> >  <fo:block>
>> >    <fo:inline space-start="1cm"
>> >               space-start.conditionality="discard"
>> >               space-end="1cm"
>> >               space-end.conditionality="discard">
>> >This inline begins a line, has conditional space-start/end, and
>> >continues to the next line.
>> >    </fo:inline>
>> >    <fo:inline>Here is another inline.</fo:inline>
>> >  </fo:block>
>> >
>> >The expected result is:  (here [SPACE-*] represents spaces)
>> >
>> >  This inline begins a line, has conditional space-start/end,
>> >  and continues to the next line.[SPACE-END]Here is another inline.
>> >
>> >
>> >Note that the space-before of the first inline-area is discarded
>> >(different from conditional padding/borders). Spaces are normally used
>> >as separator and should be descarded at the first and last.
>> >
>> >Example of non-conditional spaces:
>> >
>> >  <fo:block>
>> >    <fo:inline space-start="1cm"
>> >               space-start.conditionality="retain"
>> >               space-end="1cm"
>> >               space-end.conditionality="retain">
>> >This inline begins a line, has non-conditional space-start/end, and
>> >continues to the next line.
>> >    </fo:inline>
>> >    <fo:inline>Here is another inline.</fo:inline>
>> >  </fo:block>
>> >
>> >A possible result is:
>> >
>> >  [SPACE-START]This inline begins a line, has
non-conditional[SPACE-END]
>> >  [SPACE-START]space-start/end, and continues to the next[SPACE-END]
>> >  [SPACE-STAET]line.[SPACE-END]Here is another inline.
>> >
>> >According to the current XSL CR spec this seems to be correct, but
>> >probably the following is more reasonable.
>> >
>> >  [SPACE-START]This inline begins a line, has non-conditional space-
>> >  start/end, and continues to the next line.[SPACE-END]Here is another
>> >  inline.
>> >
>> >An important point is that the latter is compatible with CSS margins
and
>> >the former is not.
>> >
>> >Therefore, I think the rule should be changed.
>> >
>> >Any space-before and space-start should not have effect on areas that
>> >have an is-first value of "false".
>> >Any space-after and space-end should not have effect on areas that have
>> >an is-last value of "false".
>> >(i.e., when an area is split, spaces have no effect where the split
>> >occurs.)
>>
>> The intended usage of space-start and space-end is for effects
>> like letter-spacing and for that usage I think that the semantics
>> as defined in the CR are correct (notably that they are INDEPENDENT
>> of the is-first and is-last value). The functionality that you
>> seem to be looking for appears to me covered by generating an
>> fo:character (with code U+0020 or another "space" value if "20" is
>> a candidate for removal) with appropriate properties before and after
>> the first fo:inline.
>
>
>The problem is compatibility with CSS margins.
>You wrote in another reply ("Re: XSL-FO: corresponding margin and space
>properties"):
>
>|We will add text, in the refinement section, that the mapping
>|from margins includes setting .conditionality to "retain".

The actual text in the current draft specified that the "retain"
setting ONLY applies to space-before and space-after and ONLY if
these are mapped from margins. (If this is not the case then
the value of "discard" is part of the setting [unless a value is
explicitly specified, of course]).

>But the CSS spec says that margins have no effect where the split occurs.
>
>(Of course it is not only inline-level spaces problem but also block-
>level's although I omitted the example.)
>
>The CSS margin/border/padding's implicit conditionality is:
>
>  <conditionality-at-first-and-last> = "retain"
>  <conditionality-at-break> = "discard"
>
>In XSL, border/padding's conditionality:
>
>  <conditionality-at-first-and-last> = "retain"
>  <conditionality-at-break> = can be specified
>
>And space's conditionality (my proposal):
>
>  <conditionality-at-first-and-last> = can be specified
>  <conditionality-at-break> = "discard"

This will be considered in a future XSL version. Ideally one would
like to have additional control over many individual properties at
a break - e.g. justification, and indents for the "first" and "last"
line in each "piece" of a broken block.

>or both types of conditionality should be able to be specified.
>  e.g.
>     space-before.conditionality-at-first-and-last="retain"
>     space-before.conditionality-at-break="discard"
>
>     (it is compatible with CSS margin)
>
>If you reject this proposal, you should withdraw the margin to space
>mapping with setting .conditionality to "retain".

We are in a sense - since, in the situation you seem to refer to, the
"special setting" is not applied.

>Best regards,
>
>Shinyu Murakami
>Antenna House XSL Formatter team
Received on Tuesday, 3 July 2001 12:01:43 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Monday, 7 December 2009 10:59:52 GMT