[CSS2.1] Anonymous table objects details

Hi,

Currently implementing CSS 2.1 tables in WeasyPrint, I am not sure I 
understand the spec.

In section 17.2.1 "Anonymous table object", steps 1.3 and 1.4 say:

     1.3. If a child C of a tabular container P is an anonymous inline 
box that contains only white space, and its immediately preceding and 
following siblings, if any, are proper table descendants of P and are 
either 'table-caption' or internal table boxes, then it is treated as if 
it had 'display: none'. A box D is a proper table descendant of A if D 
can be a descendant of A without causing the generation of any 
intervening 'table' or 'inline-table' boxes.

     1.4. If a box B is an anonymous inline containing only white space, 
and is between two immediate siblings each of which is either an 
internal table box or a 'table-caption' box then B is treated as if it 
had 'display: none'.

First, is "treat a box as if it had 'display: none"' the same as "remove 
it" or is there a reason to keep the longer phrasing?

Is it correct that every box removed in 1.3 would also be removed in 1.4 
*unless* it is the first or last child of its parent? (This may simplify 
the implementation.)

About "proper table descendant". This only apply to a sibling S of a 
child C of P. So S is also a child of P. Is it correct that the only way 
for a direct child (at this step) not to be a proper table descendant is 
if it is misparented? (As defined in step 3.2)

Later:

     3.1 For each 'table-cell' box C in a sequence of consecutive 
internal table and 'table-caption' siblings, if C's parent is not a 
'table-row' then generate an anonymous 'table-row' box around C and all 
consecutive siblings of C that are 'table-cell' boxes.

This seems to be only about cells being in rows. Why is "a sequence of 
consecutive internal table and 'table-caption' siblings" mentioned?

Thanks,
-- 
Simon Sapin

Received on Thursday, 10 November 2011 10:40:37 UTC