Repository navigation
Description
Split out of #55, which decoded MLINESTYLE, MLEADERSTYLE,
ACDBDETAILVIEWSTYLE and ACDBSECTIONVIEWSTYLE and declined this one.
ODA v5.4.1 §20.4 has no prescription for TABLESTYLE, so it needs the
joint-boundary derivation. What is already measured (see
ARCHITECTURE.md §7d.4, reproduce with
cargo run --release --example probe_token_scan -- samples/arc_2013.dwg 101):
- Budgets between the end of the common object data and the
data-stream boundary: R2004 1849, R2010 6836, R2013 6844, R2018 5820.
R2004 is an order of magnitude smaller than R2010+, so the two are not
the same record shape — the R2004 files also carry a separate
CELLSTYLEMAP object. - Structure on R2010+: a 52-bit header followed by four cell-style
blocks of 1738 / 1696 / 1696 / 1662 bits. The string stream names
them:["Standard", "", "Table", "", "_TITLE", "", "_HEADER", "", "_DATA"]. - Each block ends in six 168-bit border sub-records of the shape
CMC(44) + 36 bits +BD(66) + 22 bits — six borders being top,
bottom, left, right and the two inner ones. Before them the block runs
CMC+ 64 bits +CMC+BD+ 10 bits + 4 ×BD+ 2 ×BD+ 32
bits. - Decoded anchors on
arc_2013.dwghandle 101: the leadingCMCof
each block is the0xC8……"no colour" method, the second is ByBlock
(0xC1000000), and the doubles are4.5/6(text heights),
1.5(margins) and1.125(border double-line spacing).
Why it was declined rather than guessed: each corpus file carries
exactly one TABLESTYLE record, so the joint-boundary constraint has
one instance per band instead of the 24 VISUALSTYLE or 11 view-style
records that made those derivations unique. A 52-bit header alone admits
thousands of parses over B/BS/BL/BD/RC/CMC, and the block boundaries
vary by ±42 / −34 bits, so the block layout has variable-width fields
whose positions are not pinned.
The way in is probably a drawing with more than one table style, or a
cross-version joint search that requires the same token sequence to
close the R2010, R2013 and R2018 records at once (they differ by 8 and
1024 bits respectively). Ten records on the corpus; decoding it would
move the aggregate from 90.3% to roughly 90.7%.
Activity
DrunkOnJava commentedon Oct 27, 2026
Status (main 2bab7b2; CI run 40503137263): the body's premise is out of date. §20.4.101 does print TABLESTYLE, in two layouts, and the earlier "no prescription" reading was wrong (#303).
Landed:
examples/probe_tablestyle).Remaining: §20.4.101.2 (R2010 and later). 20 TABLESTYLE records are skipped in the corpus run (R2010, R2013, R2018) and 18 paired records are unscored in the oracle summary. PR #313 (R2010+ TABLESTYLE and CELLSTYLEMAP, §20.4.102) is queued; its description names #151 and #303, not this issue, so it will not close it.