Feature Matrix
Which IR features each Tier-1 writer (plus PPTX) expresses. Every cell is measured: the test renders a probe table, reads the output back with a format-specific reader (cell by cell: weight, slant, decoration, color, size, font, fill, alignment, borders) and checks the feature is there — and doesn’t leak into neighboring cells. The test fails whenever a measurement disagrees with this page.
✓ supported · ✗ not yet (the format can express it) · ⊘ the format can’t (portably) express it. Numbers refer to the notes below.
| Feature | IR | HTML | LaTeX | Typst | RTF | DOCX | XLSX | PPTX |
|---|---|---|---|---|---|---|---|---|
| bold | font_weight: bold (or ≥ 600) |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| italic | font_style: italic |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| underline | text_decoration: underline |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| strikethrough | text_decoration: line-through |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| text-color | color |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| font-size | font_size (20px = 15pt) |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| font-family | font_family (a named family, not just monospace) |
✓ | ⊘1 | ✗2 | ✗3 | ✗3 | ✗3 | ✗3 |
| text-transform | text_transform: uppercase |
✓ | ✗3 | ✗3 | ✗3 | ✗3 | ✗3 | ✗3 |
| fill | background_color |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| cell-align | text_align on a cell |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| column-align | a column’s align |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| vertical-align | vertical_align: bottom |
✓ | ⊘4 | ✓ | ✓ | ✓ | ✓ | ✓ |
| border | border (2px solid red bottom) |
✓ | ✗3 | ✓ | ✓ | ✓ | ✓ | ✓ |
| border-styles | border styles dashed, dotted | ✓ | ✗3 | ✓ | ✓ | ✓ | ✓ | ✓ |
| border-double | border style double | ✓ | ✗3 | ⊘5 | ✓ | ✓ | ✓ | ✓ |
| column-style | a column’s style_id (cascades to its cells) |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| row-style | a row’s style_id |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| striping | row_striping (every second body row filled) |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| conditional-style | styles.conditionals (row parity) |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| style-composition | styles.compositions (extends + overrides) |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| styled-run | inline styled_text (part of a cell bold) |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| footnote-mark | footnote marks as superscript | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| title | header.title and header.subtitle |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| notes | footnotes and source notes | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Notes
- a named system font needs XeLaTeX/LuaLaTeX with fontspec; the output also targets pdfLaTeX (monospace families map to
\texttt) - only monospace families are mapped (to Courier New)
- not implemented
- a tabular row sets its cells on one baseline;
m/bcolumns align whole columns, not single cells - Typst strokes have no double line; a double border is drawn solid
Structure — spans, hidden columns, stub columns, hidden column labels, group labels and summary rows — is verified separately for every writer by the grid invariant: each output is read back as a grid and compared with the IR’s.