Explicit Row Height, table-cell’s Borders and border-separation

Dear XSL Editors,

As far as I can tell the XSL-FO 1.1 Recommendation doesn’t indicate 
whether an explicit height set on a table-row element should include the 
table’s border-separation and the children cells’ border widths, or not. 
In section 7.15.6, a reference to CSS 2 is made “for a discussion of the 
‘height’ property in tables”, but the CSS 2 Recommendation is itself not 
clear what the height of a cell should be in this context.

Also, in section 6.7.9, “fo:table-row”, the “row-height trait” is 
mentioned but is not referenced anywhere else.

So, in the following example:
    <fo:table table-layout="fixed" width="100%" 
      border-collapse="separate"
      border="1pt solid black"
      border-separation="6pt">
      <fo:table-body font-size="8pt" line-height="10pt">
        <fo:table-row block-progression-dimension="45pt">
          <fo:table-cell border="2pt solid black">
            <fo:block>Cell 1</fo:block>
          </fo:table-cell>
          <fo:table-cell border="5pt solid black">
            <fo:block>Cell 2</fo:block>
          </fo:table-cell>
        </fo:table-row>
      </fo:table-body>
    </fo:table>

What should be the final block-progression-dimensions for the cells?
There are 3 possibilities:
1. the explicit row height shall include the cells’ borders and the 
   table’s border-separation:
   - height of cell 1 = 3 (half of border-separation)
            + 2 (border-before)
            + 10 (b-p-d)
            + 2 (border-after)
            + 3 (half of border-separation)
            = 20pt
   - height of cell 2 = 3 + 5 + 10 + 5 + 3 = 26pt  
   - height of row = max(explicit row height, height of cell 1, height of cell 2)
                   = 45pt
   As a consequence the final block-progression-dimensions of the cells 
   are re-evaluated to match the row’s explicit height:
   - b-p-d of cell 1 = 45 - (3 + 2 + 2 + 3) = 35pt
   - b-p-d of cell 2 = 45 - (3 + 5 + 5 + 3) = 29pt

2. the explicit row height shall include the cells’ borders but not the 
   table’s border-separation:
   - height of cell 1 = 2 + 10 + 2 = 14pt
   - height of cell 2 = 5 + 10 + 5 = 20pt
   - height of row = max(45, 14, 20) = 45pt
   So the final block-progression-dimensions of the cells would be:
   - b-p-d of cell 1 = 45 - (2 + 2) = 41pt
   - b-p-d of cell 2 = 45 - (5 + 5) = 35pt

3. the explicit row height shall include only the cells’ 
   block-progression-dimensions:
   - height of cell 1 = 10pt
   - height of cell 2 = 10pt
   - height of row = max(45, 10, 10) = 45pt
   So the final block-progression-dimensions of the cells would be:
   - b-p-d of cell 1 = 45pt
   - b-p-d of cell 2 = 45pt
   But then what would be the final row height? Should it be re-computed 
   as in the case where the row height is left to auto? Then:
   - height of cell 1 = 2 + 45 + 2 = 49pt
   - height of cell 2 = 5 + 45 + 5 = 55pt
   - height of row = max(49, 55) = 55pt
   So final b-p-ds of the cells:
   - b-p-d of cell 1 = 55 - (2 + 2) = 51pt
   - b-p-d of cell 2 = 45pt

There are some hints in the Recommendation which would tend towards 
solution #2, but a clarification in this area would be much appreciated.

Thanks,
Vincent Hennebert


-- 
Vincent Hennebert                            Anyware Technologies
http://people.apache.org/~vhennebert         http://www.anyware-tech.com
Apache FOP Committer                         FOP Development/Consulting

Received on Monday, 28 January 2008 16:14:36 UTC