Skip to content

TABLESTYLE field list: measured block structure, token sequence not yet pinned (10 records) #60

Open

Description

@DrunkOnJava

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.dwg handle 101: the leading CMC of
    each block is the 0xC8…… "no colour" method, the second is ByBlock
    (0xC1000000), and the doubles are 4.5 / 6 (text heights),
    1.5 (margins) and 1.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

  1. added
    type:specImplements or verifies a numbered section of ODA spec v5.4.1
    area:objectsCommon object formats and non-graphical objects (§20.1 to §20.3, §20.4 objects, §28)
    priority:P2Quality and completeness
    and removed on Oct 21, 2026
  2. DrunkOnJava commented on Oct 27, 2026

    @DrunkOnJava
    OwnerAuthor

    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:

    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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:objectsCommon object formats and non-graphical objects (§20.1 to §20.3, §20.4 objects, §28)priority:P2Quality and completenessrelease:R2010Affects R2010 filesrelease:R2013Affects R2013 filesrelease:R2018Affects R2018 filestype:specImplements or verifies a numbered section of ODA spec v5.4.1

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions