Files
rust_browser/tests/goldens/expected/189-table-col-width.layout.txt
Zachary D. Rowitsch 56453a5677
All checks were successful
ci / fast (linux) (push) Successful in 6m58s
Add <col>/<colgroup> column width hints and span support (CSS 2.1 §17)
Extract width and span metadata from <col>/<colgroup> DOM elements and
apply them as column width hints during table layout. This enables
authors to declaratively set column widths via HTML attributes or CSS
without relying on cell content.

Key changes:
- UA stylesheet: col/colgroup get display:none (metadata-only, no boxes)
- HTML attrs: dedicated width-only extraction for col/colgroup elements
- ColumnInfo struct on LayoutBox stores per-column width hints
- DOM walker extracts col/colgroup metadata with span expansion and
  colgroup-to-col width inheritance (CSS 2.1 §17.3)
- Width hints integrated into both intrinsic and available-width table
  sizing algorithms with correct fixed-before-percentage ordering
- HTML parser: implicit colgroup closing by tr/tbody/thead/tfoot

Deferred: column backgrounds, visibility:collapse, column borders in
collapsed border model.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 10:57:39 -05:00

110 lines
4.2 KiB
Plaintext

LayoutBox node=#2 tag=html box=block
content: (0, 0, 800, 86.4)
padding: 0 0 0 0
border: 0 0 0 0
margin: 0 0 0 0
LayoutBox node=#10 tag=body box=block
content: (8, 8, 784, 70.4)
padding: 0 0 0 0
border: 0 0 0 0
margin: 8 8 8 8
LayoutBox node=#12 tag=table box=table
content: (9, 9, 327.42438, 68.4)
padding: 0 0 0 0
border: 1 1 1 1
margin: 0 0 0 0
LayoutBox node=#20 tag=tr box=table-row
content: (9, 11, 327.42438, 31.2)
padding: 0 0 0 0
border: 0 0 0 0
margin: 0 0 0 0
LayoutBox node=#22 tag=td box=table-cell
content: (17, 17, 188, 19.2)
padding: 5 5 5 5
border: 1 1 1 1
margin: 0 0 0 0
inline_context: 1 lines, height=19.2, max_width=7.506607
line[0]: rect=(17, 17, 7.506607, 19.2) fragments=1
frag[0]: rect=(17, 17, 7.506608, 16) text="A" start=false end=false
LayoutBox node=#23 tag=anonymous box=anon
content: (0, 17, 7.506608, 16)
padding: 0 0 0 0
border: 0 0 0 0
margin: 0 0 0 0
text: "A"
LayoutBox node=#25 tag=td box=table-cell
content: (219, 17, 88, 19.2)
padding: 5 5 5 5
border: 1 1 1 1
margin: 0 0 0 0
inline_context: 1 lines, height=19.2, max_width=7.6358337
line[0]: rect=(219, 17, 7.6358337, 19.2) fragments=1
frag[0]: rect=(219, 17, 7.6358294, 16) text="B" start=false end=false
LayoutBox node=#26 tag=anonymous box=anon
content: (0, 17, 7.6358294, 16)
padding: 0 0 0 0
border: 0 0 0 0
margin: 0 0 0 0
text: "B"
LayoutBox node=#28 tag=td box=table-cell
content: (321, 17, 7.4243755, 19.2)
padding: 5 5 5 5
border: 1 1 1 1
margin: 0 0 0 0
inline_context: 1 lines, height=19.2, max_width=7.4243774
line[0]: rect=(321, 17, 7.4243774, 19.2) fragments=1
frag[0]: rect=(321, 17, 7.424376, 16) text="C" start=false end=false
LayoutBox node=#29 tag=anonymous box=anon
content: (0, 17, 7.424376, 16)
padding: 0 0 0 0
border: 0 0 0 0
margin: 0 0 0 0
text: "C"
LayoutBox node=#32 tag=tr box=table-row
content: (9, 44.2, 327.42438, 31.2)
padding: 0 0 0 0
border: 0 0 0 0
margin: 0 0 0 0
LayoutBox node=#34 tag=td box=table-cell
content: (17, 50.2, 188, 19.2)
padding: 5 5 5 5
border: 1 1 1 1
margin: 0 0 0 0
inline_context: 1 lines, height=19.2, max_width=8.575623
line[0]: rect=(17, 50.2, 8.575623, 19.2) fragments=1
frag[0]: rect=(17, 50.2, 8.5756235, 16) text="D" start=false end=false
LayoutBox node=#35 tag=anonymous box=anon
content: (0, 50.2, 8.5756235, 16)
padding: 0 0 0 0
border: 0 0 0 0
margin: 0 0 0 0
text: "D"
LayoutBox node=#37 tag=td box=table-cell
content: (219, 50.2, 88, 19.2)
padding: 5 5 5 5
border: 1 1 1 1
margin: 0 0 0 0
inline_context: 1 lines, height=19.2, max_width=6.5315704
line[0]: rect=(219, 50.2, 6.5315704, 19.2) fragments=1
frag[0]: rect=(219, 50.2, 6.531571, 16) text="E" start=false end=false
LayoutBox node=#38 tag=anonymous box=anon
content: (0, 50.2, 6.531571, 16)
padding: 0 0 0 0
border: 0 0 0 0
margin: 0 0 0 0
text: "E"
LayoutBox node=#40 tag=td box=table-cell
content: (321, 50.2, 7.4243755, 19.2)
padding: 5 5 5 5
border: 1 1 1 1
margin: 0 0 0 0
inline_context: 1 lines, height=19.2, max_width=6.096924
line[0]: rect=(321, 50.2, 6.096924, 19.2) fragments=1
frag[0]: rect=(321, 50.2, 6.096916, 16) text="F" start=false end=false
LayoutBox node=#41 tag=anonymous box=anon
content: (0, 50.2, 6.096916, 16)
padding: 0 0 0 0
border: 0 0 0 0
margin: 0 0 0 0
text: "F"