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

  1. a named system font needs XeLaTeX/LuaLaTeX with fontspec; the output also targets pdfLaTeX (monospace families map to \texttt)
  2. only monospace families are mapped (to Courier New)
  3. not implemented
  4. a tabular row sets its cells on one baseline; m/b columns align whole columns, not single cells
  5. 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.