On Wed, 19 Oct 2005 05:44 am, Jeremias Maerki wrote:
> I've started to comment on the individual issues you listed and only
> when I got to the examples I realized there must be something wrong.
> You place the white-space-treatment after the white-space-collapse
> but I think it is clear that the latter comes last ("during area tree
> construction" =after line breaking vs. "during line-building and
> inline-building" =before line-breaking). That's why you run into
> problems explaining why there is no line generated by the white space
> between the two starting block elements. Maybe clearing this up might
> clear up some of the other issues.

yes I agree that this is a critical interpretation issue and I expected 
that part of the algorithm to be controversial. The problem is that in 
the description of value "true" for the white-space-collapse property 
it clearly refers to the fo tree and fo:character siblings in the tree. 
That was further clarified by an e-mail on the xsl editor list  
http://lists.w3.org/Archives/Public/xsl-editors/2002OctDec/0004. Once 
we have done line-building the fo tree (at fo:character level) is 
largely gone, we have now glyph areas which could have been merged, 
ligatures combined, etc.. That means referring at this stage back to 
fo:character siblings in the fo tree seems lets say unusual. The fact 
that we are dealing with glyph areas and not fo:character elements in 
line-building / area tree construction is further emphasised by the 
description of the handling for the white-space-treatment property. It 
is all defined in terms of glyph areas not fo:characters.

Further to this it doesn't make sense to me to collapse white space 
after line breaking as is implied by your interpretation because the 
amount of white space does contribute to the line breaking decisions. 
If we remove white space after line breaking we would IMO get sub 
optimal line breaks. In summary I think white space must be collapsed 
before or at least during line breaking but not after.

Another related issue is the description of collapsing white space 
around a linefeed in the spec under white-space-collapse. The spec is 
very specific and refers to U+000A (linefeed) fo:character siblings in 
the fo tree. This is obviously very different to removing white space 
around a line break generated during line building. Also in the default 
case by the time we get to white-space-collapse handling all linefeeds 
would have been replaced by spaces during refinement. Which leads to 
the question do they really mean that in the spec or do they really 
meant to remove white space around a line break? But then again that is 
really dealt with by the white-space-treatment property in much more 
detail. But why then do we need the duplication of white-space-collapse 
removing white space around a linefeed character and 
white-space-treatment removing white space (not quite actually - it 
removes characters with the suppress-at-line-break property being true) 
around line breaks?

>> Manuel
> Jeremias Maerki


Reply via email to