Conformance
docboss keeps a ledger of the specifications it implements in ledger/Ledger/Catalogue/, one
row per clause with the status docboss claims: implemented, incomplete, not implemented or out
of scope. The specifications are ECMA-376 Parts 1 to 3 (5th edition), [MS-DOC], [MS-CFB],
[MS-OLEPS], [MS-OSHARED], [MS-ODRAW], [MS-WMF], [MS-EMF] and PKWARE's APPNOTE.TXT;
ledger/Ledger/Scope.lean names the clauses of each that must have a row.
The ledger is checked by Lean 4 on every push (make ledger-gate). Six theorems in
ledger/Ledger/Gate.lean establish that every row sits in its own specification's file and
names one of its chapters, that rows are unique, that every required clause has a row speaking
to it, that every implemented row is cited by both implementation code and a test in the source
tree, that every incomplete row is cited by implementation code and explains what is missing,
that every other row explains itself, and that no citation names a clause its specification does
not have. They are decided by Lean's compiled evaluator (native_decide), so they trust the Lean
compiler as well as its kernel; the theorems of the reference implementations in
ledger/Ledger/Reference/, whose vectors the Rust tests replay, are checked by the kernel alone.
Citation counts below are the number of source comments naming the clause or a sub-clause of it,
in implementation code and in tests.
This page is generated by make ledger-report. Edit the ledger, not the page.
| Specification | Implemented | Incomplete | Not implemented | Out of scope |
|---|---|---|---|---|
| ECMA-376 Part 1 | 130 | 78 | 220 | 74 |
| ECMA-376 Part 2 | 15 | 6 | 3 | 40 |
| ECMA-376 Part 3 | 4 | 0 | 5 | 1 |
| [MS-DOC] | 96 | 31 | 332 | 11 |
| [MS-CFB] | 10 | 0 | 1 | 2 |
| [MS-OLEPS] | 9 | 5 | 26 | 0 |
| [MS-OSHARED] | 0 | 1 | 3 | 0 |
| [MS-ODRAW] | 0 | 3 | 2 | 0 |
| [MS-WMF] | 1 | 8 | 0 | 0 |
| [MS-EMF] | 2 | 11 | 2 | 0 |
| APPNOTE | 13 | 6 | 74 | 24 |
ECMA-376 Part 1: Fundamentals and Markup Language Reference (5th edition, 2016)
11 WordprocessingML
| Clause | Feature | Status | Code citations | Test citations | Note |
|---|---|---|---|---|---|
| 11.3 | Part Summary | incomplete | 11 | 9 | The main document, styles, numbering, settings, font table, header, footer, footnote, endnote and comment parts are read; the glossary document and web settings parts are not, and alternative format import parts are reported as dropped. |
| 11.3.1 | Alternative Format Import Part | not implemented | 0 | 0 | Alternative format import parts (w:altChunk targets) are not imported; each is reported as dropped (see 17.17.2). |
| 11.3.2 | Comments Part | implemented | 1 | 1 | The comments part is read into Document::comments (test structure.rs notes_and_comments). |
| 11.3.3 | Document Settings Part | implemented | 1 | 1 | The settings part is read for the default tab stop and even/odd headers (test structure.rs columns_footers_and_even_odd_settings). |
| 11.3.4 | Endnotes Part | implemented | 1 | 1 | The endnotes part is read into Document::endnotes (test structure.rs notes_and_comments). |
| 11.3.5 | Font Table Part | incomplete | 2 | 0 | The font table part is read with its embedded fonts (parts.rs fonts); no DOCX test checks the entries. |
| 11.3.6 | Footer Part | implemented | 1 | 1 | Footer parts related to the main document are read and referenced by section properties (test structure.rs columns_footers_and_even_odd_settings). |
| 11.3.7 | Footnotes Part | implemented | 1 | 1 | The footnotes part is read into Document::footnotes, separators skipped (test structure.rs notes_and_comments). |
| 11.3.8 | Glossary Document Part | out of scope | 0 | 0 | The glossary document holds building blocks, not document content; it is not read. |
| 11.3.9 | Header Part | implemented | 1 | 1 | Header parts related to the main document are read and referenced by section properties (test structure.rs sections_split_at_paragraph_section_properties). |
| 11.3.10 | Main Document Part | implemented | 1 | 1 | The main document part is found through the package's officeDocument relationship, falling back to word/document.xml with a diagnostic (lib.rs main_part, tests structure.rs part_names_compare_case_insensitively and bare_package_falls_back_to_the_default_part_name). |
| 11.3.11 | Numbering Definitions Part | implemented | 1 | 1 | The numbering part is read into Document::numbering (test structure.rs numbering_definitions). |
| 11.3.12 | Style Definitions Part | implemented | 1 | 1 | The styles part is read into Document::styles (test structure.rs styles_and_defaults). |
| 11.3.13 | Web Settings Part | out of scope | 0 | 0 | Web settings affect HTML saving only; the part is not read. |
15 Shared
| Clause | Feature | Status | Code citations | Test citations | Note |
|---|---|---|---|---|---|
| 15.2 | Part Summary | incomplete | 4 | 2 | Image, font and file property parts are read, and embedded OLE objects for their Equation Editor equations; audio, video, other embedded objects and packages, custom XML, signatures, thumbnails and printer settings are not. |
| 15.2.1 | Additional Characteristics Part | not implemented | 0 | 0 | Additional characteristics parts are not read. |
| 15.2.2 | Audio Part | not implemented | 0 | 0 | Audio parts are not read. |
| 15.2.3 | Bibliography Part | not implemented | 0 | 0 | Bibliography parts are not read; citations keep their field results. |
| 15.2.4 | Content Part | not implemented | 0 | 0 | Content parts (w14 ink and similar) are not read. |
| 15.2.5 | Custom XML Data Storage Part | not implemented | 0 | 0 | Custom XML data storage parts are not read; data-bound content controls keep their cached text. |
| 15.2.6 | Custom XML Data Storage Properties Part | not implemented | 0 | 0 | Custom XML data storage properties parts are not read. |
| 15.2.7 | Digital Signature Origin Part | out of scope | 0 | 0 | Digital signatures are not read or verified; reading content does not depend on them. |
| 15.2.8 | Digital Signature XML Signature Part | out of scope | 0 | 0 | Digital signatures are not read or verified; reading content does not depend on them. |
| 15.2.9 | Embedded Control Persistence Part | out of scope | 0 | 0 | ActiveX control persistence is not read: controls are not document text. |
| 15.2.10 | Embedded Object Part | incomplete | 1 | 0 | An embedded OLE object with an Equation ProgID is read for the MTEF equation of its Equation Native stream (story.rs equation, tests fixtures.rs equation_editor_objects_give_their_equation, aio range.rs equations_read_without_media); other embedded objects are not read, and their preview image is, through w:object and v:imagedata. |
| 15.2.11 | Embedded Package Part | not implemented | 0 | 0 | Embedded packages (such as spreadsheets) are not read; their preview image is. |
| 15.2.12 | File Properties | implemented | 1 | 1 | Core and extended file properties are read into Document::metadata (parts.rs properties, test structure.rs document_properties). |
| 15.2.13 | Font Part | incomplete | 1 | 0 | Embedded font parts are loaded and deobfuscated through the font table's relationships (parts.rs fonts); no test builds a package with one. |
| 15.2.14 | Image Part | implemented | 1 | 1 | Image parts referenced by drawings are loaded into Document::media with their MIME type sniffed from the bytes (lib.rs load_media, test structure.rs drawings_and_media). |
| 15.2.15 | Printer Settings Part | out of scope | 0 | 0 | Printer settings do not affect text or layout; the part is not read. |
| 15.2.16 | Thumbnail Part | not implemented | 0 | 0 | The package thumbnail is not read. |
| 15.2.17 | Video Part | not implemented | 0 | 0 | Video parts are not read. |
17 WordprocessingML Reference Material
| Clause | Feature | Status | Code citations | Test citations | Note |
|---|---|---|---|---|---|
| 17.1 | Table of Contents | out of scope | 0 | 0 | Table of contents fields are read like any other field (see 17.16); the clause describes their use. |
| 17.2 | Main Document Story | incomplete | 5 | 3 | The document and its body are read; the page background is not. |
| 17.2.1 | background (Document Background) | not implemented | 0 | 0 | w:background is not read; pages render on white. |
| 17.2.2 | body (Document Body) | implemented | 3 | 1 | The body's block content is read into sections split at paragraph section properties (story.rs body, test structure.rs sections_split_at_paragraph_section_properties). |
| 17.2.3 | document (Document) | implemented | 1 | 1 | The main part's w:document root is read and its body becomes the main story (lib.rs parse_story, test structure.rs paragraphs_runs_and_breaks). |
| 17.3 | Paragraphs and Rich Formatting | incomplete | 38 | 35 | Paragraphs, runs and run content are read with most of their properties; the sub-clause rows say what is missing. |
| 17.3.1 | Paragraphs | incomplete | 16 | 15 | Justification, indentation, spacing, keep and widow controls, page break before, contextual spacing, numbering, outline level, tabs, borders, shading, bidi and frame properties are read (props.rs paragraph_properties); text direction, hyphenation suppression and East Asian typography settings are not. |
| 17.3.2 | Run | incomplete | 12 | 12 | Bold, italic, underline, strike, double strike, caps, small caps, hidden, fonts (theme fonts resolved), size, color, highlight, shading, vertical alignment, spacing, position, language, right-to-left and the complex script bold, italic, size and formatting flag (bCs, iCs, szCs, cs) are read (props.rs run_properties); emphasis marks, text effects, run borders, fit text and East Asian layout are not. |
| 17.3.3 | Run Content | incomplete | 6 | 6 | Text, tabs, breaks, carriage returns, hyphens, symbols, field characters and codes, note and comment references and marks, DrawingML and VML pictures are read (story.rs run_content), diagrams from their saved drawing and data model text (story/diagram.rs, test structure.rs diagrams_draw_their_saved_drawing), charts from their cached values (story/chart.rs, test structure.rs charts_read_their_cached_values), and Office Math zones as math trees (story/math.rs, test structure.rs office_math_reads_into_trees); ruby is ignored, positional tabs read as plain tabs, and embedded object data other than Equation Editor equations is not read. |
| 17.3.4 | Border Properties (CT_Border) | implemented | 1 | 1 | A border's style, width, spacing and color are read; styles other than single, thick, double, dotted and dashed read as BorderStyle::Other (props.rs border, test structure.rs table_row_and_cell_properties). |
| 17.3.5 | Shading Properties (CT_Shd) | incomplete | 1 | 1 | The fill color is read, or the pattern color for a solid pattern; other patterns reduce to their fill (props.rs shading). |
| 17.4 | Tables | incomplete | 55 | 41 | Tables, grids and row and cell properties and floating table positions are read; conditional formatting, cell spacing, property exceptions, diagonal borders and row grid offsets are not. |
| 17.4.1 | bidiVisual (Visually Right to Left Table) | implemented | 2 | 2 | bidiVisual is read (props.rs table_properties, test structure.rs complex_script_runs_and_right_to_left_tables) and lays the cells out from the right with their left and right borders and margins swapped, the indent from the right margin and the alignment reversed (table.rs, test layout.rs visually_right_to_left_tables_start_at_the_right). |
| 17.4.2 | bottom (Table Cell Bottom Margin Exception) | not implemented | 0 | 0 | Cell margin exceptions live in tblPrEx, which is not read. |
| 17.4.3 | bottom (Table Cell Bottom Border) | implemented | 1 | 1 | A cell's bottom border is read (props.rs or story.rs, test structure.rs table_row_and_cell_properties). |
| 17.4.4 | bottom (Table Bottom Border) | incomplete | 1 | 0 | Read by the same code as the other border sides (props.rs borders); no test covers this side. |
| 17.4.5 | bottom (Table Cell Bottom Margin Default) | incomplete | 1 | 0 | Read by the same code as the other default cell margins (props.rs margins); no test covers this side. |
| 17.4.6 | cantSplit (Table Row Cannot Break Across Pages) | implemented | 1 | 1 | cantSplit is read into TableRowProperties::cant_split (props.rs or story.rs, test structure.rs table_row_and_cell_properties). |
| 17.4.7 | cnfStyle (Table Row Conditional Formatting) | not implemented | 0 | 0 | Conditional formatting (cnfStyle) is not read; table styles' conditional formats are not applied. |
| 17.4.8 | cnfStyle (Table Cell Conditional Formatting) | not implemented | 0 | 0 | Conditional formatting (cnfStyle) is not read; table styles' conditional formats are not applied. |
| 17.4.9 | divId (Associated HTML div ID) | not implemented | 0 | 0 | HTML div ids do not affect content; not read. |
| 17.4.10 | end (Table Cell Trailing Margin Exception) | not implemented | 0 | 0 | Cell margin exceptions live in tblPrEx, which is not read. |
| 17.4.11 | end (Table Cell Trailing Margin Default) | incomplete | 1 | 0 | Read by the same code as the other default cell margins (props.rs margins); no test covers this side. |
| 17.4.12 | end (Table Cell Trailing Edge Border) | incomplete | 1 | 0 | Read by the same code as the other border sides (props.rs borders); no test covers this side. |
| 17.4.13 | end (Table Trailing Edge Border) | incomplete | 1 | 0 | Read by the same code as the other border sides (props.rs borders); no test covers this side. |
| 17.4.14 | gridAfter (Grid Columns After Last Cell) | not implemented | 0 | 0 | gridAfter is not read; rows are laid out from their cells alone. |
| 17.4.15 | gridBefore (Grid Columns Before First Cell) | not implemented | 0 | 0 | gridBefore is not read; rows are laid out from their cells alone. |
| 17.4.16 | gridCol (Grid Column Definition) | implemented | 1 | 1 | gridCol widths form Table::grid (props.rs or story.rs, test structure.rs tables). |
| 17.4.17 | gridSpan (Grid Columns Spanned by Current Table Cell) | implemented | 1 | 1 | gridSpan is read, clamped to 1 to 64 (props.rs or story.rs, test structure.rs tables). |
| 17.4.18 | header (Header Cell Reference) | not implemented | 0 | 0 | Accessibility header cell references are not read. |
| 17.4.19 | headers (Header Cells Associated With Table Cell) | not implemented | 0 | 0 | Accessibility header cell references are not read. |
| 17.4.20 | hidden (Hidden Table Row Marker) | not implemented | 0 | 0 | Hidden row marks are not read. |
| 17.4.21 | hideMark (Ignore End Of Cell Marker In Row Height Calculation) | not implemented | 0 | 0 | hideMark is not read. |
| 17.4.22 | insideH (Table Inside Horizontal Edges Border) | incomplete | 1 | 0 | Read by the same code as the other border sides (props.rs borders); no test covers this side. |
| 17.4.23 | insideH (Table Cell Inside Horizontal Edges Border) | incomplete | 1 | 0 | Read by the same code as the other border sides (props.rs borders); no test covers this side. |
| 17.4.24 | insideV (Table Inside Vertical Edges Border) | incomplete | 1 | 0 | Read by the same code as the other border sides (props.rs borders); no test covers this side. |
| 17.4.25 | insideV (Table Cell Inside Vertical Edges Border) | incomplete | 1 | 0 | Read by the same code as the other border sides (props.rs borders); no test covers this side. |
| 17.4.26 | jc (Table Alignment Exception) | not implemented | 0 | 0 | Row-level property exceptions (tblPrEx) are not read. |
| 17.4.27 | jc (Table Row Alignment) | not implemented | 0 | 0 | Row alignment (trPr jc) is not read. |
| 17.4.28 | jc (Table Alignment) | implemented | 2 | 1 | Table jc is read into TableProperties::justification (props.rs or story.rs, test structure.rs table_row_and_cell_properties). |
| 17.4.29 | noWrap (Don't Wrap Cell Content) | not implemented | 0 | 0 | noWrap is not read. |
| 17.4.30 | shd (Table Shading Exception) | not implemented | 0 | 0 | Row-level property exceptions (tblPrEx) are not read. |
| 17.4.31 | shd (Table Shading) | implemented | 1 | 1 | Table shading is read into TableProperties::shading (props.rs or story.rs, test structure.rs table_row_and_cell_properties). |
| 17.4.32 | shd (Table Cell Shading) | implemented | 1 | 1 | Cell shading is read into TableCellProperties::shading (props.rs or story.rs, test structure.rs table_row_and_cell_properties). |
| 17.4.33 | start (Table Cell Leading Edge Border) | incomplete | 1 | 0 | Read by the same code as the other border sides (props.rs borders); no test covers this side. |
| 17.4.34 | start (Table Cell Leading Margin Default) | implemented | 1 | 1 | The leading default cell margin is read (props.rs or story.rs, test structure.rs table_row_and_cell_properties). |
| 17.4.35 | start (Table Cell Leading Margin Exception) | not implemented | 0 | 0 | Cell margin exceptions live in tblPrEx, which is not read. |
| 17.4.36 | start (Table Leading Edge Border) | incomplete | 1 | 0 | Read by the same code as the other border sides (props.rs borders); no test covers this side. |
| 17.4.37 | tbl (Table) | implemented | 1 | 1 | w:tbl is read into a Table block, nested tables included (props.rs or story.rs, test structure.rs tables). |
| 17.4.38 | tblBorders (Table Borders) | implemented | 2 | 1 | tblBorders is read, each side and the inside edges (props.rs or story.rs, test structure.rs table_row_and_cell_properties). |
| 17.4.39 | tblBorders (Table Borders Exceptions) | not implemented | 0 | 0 | Row-level property exceptions (tblPrEx) are not read. |
| 17.4.40 | tblCaption (Table Caption) | not implemented | 0 | 0 | The table caption is not read. |
| 17.4.41 | tblCellMar (Table Cell Margin Exceptions) | not implemented | 0 | 0 | Row-level property exceptions (tblPrEx) are not read. |
| 17.4.42 | tblCellMar (Table Cell Margin Defaults) | implemented | 1 | 1 | tblCellMar default margins are read (props.rs or story.rs, test structure.rs table_row_and_cell_properties). |
| 17.4.43 | tblCellSpacing (Table Row Cell Spacing) | not implemented | 0 | 0 | Cell spacing is not read; cells touch. |
| 17.4.44 | tblCellSpacing (Table Cell Spacing Exception) | not implemented | 0 | 0 | Row-level property exceptions (tblPrEx) are not read. |
| 17.4.45 | tblCellSpacing (Table Cell Spacing Default) | not implemented | 0 | 0 | Cell spacing is not read; cells touch. |
| 17.4.46 | tblDescription (Table Description) | not implemented | 0 | 0 | The table description is not read. |
| 17.4.47 | tblGrid (Previous Table Grid) | not implemented | 0 | 0 | Tracked table grid changes are not read. |
| 17.4.48 | tblGrid (Table Grid) | implemented | 1 | 2 | tblGrid is read into Table::grid (props.rs or story.rs, test structure.rs tables). |
| 17.4.49 | tblHeader (Repeat Table Row on Every New Page) | implemented | 1 | 1 | tblHeader marks repeated header rows (props.rs or story.rs, test structure.rs tables). |
| 17.4.50 | tblInd (Table Indent from Leading Margin) | implemented | 1 | 1 | tblInd is read when given in twips (props.rs or story.rs, test structure.rs table_row_and_cell_properties). |
| 17.4.51 | tblInd (Table Indent from Leading Margin Exception) | not implemented | 0 | 0 | Row-level property exceptions (tblPrEx) are not read. |
| 17.4.52 | tblLayout (Table Layout) | implemented | 1 | 1 | tblLayout fixed is read into TableProperties::fixed_layout (props.rs or story.rs, test structure.rs table_row_and_cell_properties). |
| 17.4.53 | tblLayout (Table Layout Exception) | not implemented | 0 | 0 | Row-level property exceptions (tblPrEx) are not read. |
| 17.4.54 | tblLook (Table Style Conditional Formatting Settings Exception) | not implemented | 0 | 0 | tblLook is not read; table style conditional formats are not applied. |
| 17.4.55 | tblLook (Table Style Conditional Formatting Settings) | not implemented | 0 | 0 | tblLook is not read; table style conditional formats are not applied. |
| 17.4.56 | tblOverlap (Floating Table Allows Other Tables to Overlap) | not implemented | 0 | 0 | tblOverlap is not read; floating tables are placed as floats whatever it says. |
| 17.4.57 | tblpPr (Floating Table Positioning) | implemented | 3 | 2 | tblpPr is read (props.rs table_float, test fixtures.rs wrapping_frames_and_floating_tables_are_read) with LibreOffice's defaults for missing anchors; layout places the table as a float text wraps around, and a table taller than the text area flows with the text and is reported (flow.rs table_float, test layout.rs floating_tables_sit_at_their_position). |
| 17.4.58 | tblPr (Previous Table Properties) | not implemented | 0 | 0 | Tracked table property changes are not read. |
| 17.4.59 | tblPr (Table Properties) | incomplete | 1 | 1 | Style, width, alignment, indent, borders, shading, default cell margins, layout, bidiVisual and tblpPr are read (props.rs table_properties); tblLook, tblCellSpacing, tblOverlap, tblCaption and tblDescription are not. |
| 17.4.60 | tblPrEx (Table-Level Property Exceptions) | not implemented | 0 | 0 | Row-level property exceptions (tblPrEx) are not read. |
| 17.4.61 | tblPrEx (Previous Table-Level Property Exceptions) | not implemented | 0 | 0 | Tracked table property changes are not read. |
| 17.4.62 | tblStyle (Referenced Table Style) | implemented | 1 | 1 | tblStyle is read into TableProperties::style_id (props.rs or story.rs, test structure.rs table_row_and_cell_properties). |
| 17.4.63 | tblW (Preferred Table Width) | implemented | 1 | 1 | tblW is read in twips or fiftieths of a percent; auto and nil give no width (props.rs or story.rs, test structure.rs tables). |
| 17.4.64 | tblW (Preferred Table Width Exception) | not implemented | 0 | 0 | Row-level property exceptions (tblPrEx) are not read. |
| 17.4.65 | tc (Table Cell) | implemented | 1 | 1 | w:tc is read with its properties and block content (props.rs or story.rs, test structure.rs tables). |
| 17.4.66 | tcBorders (Table Cell Borders) | implemented | 2 | 2 | tcBorders is read, each side and the inside edges (props.rs or story.rs, test structure.rs table_row_and_cell_properties); the border above a row, and the last row's bottom border, count in the row's height as LibreOffice lays Word tables out (table.rs drawn_width, test layout.rs table_borders_take_row_height_and_old_tables_outdent). |
| 17.4.67 | tcFitText (Fit Text Within Cell) | not implemented | 0 | 0 | tcFitText is not read. |
| 17.4.68 | tcMar (Single Table Cell Margins) | implemented | 1 | 1 | tcMar cell margins are read (props.rs or story.rs, test structure.rs table_row_and_cell_properties). |
| 17.4.69 | tcPr (Table Cell Properties) | incomplete | 1 | 1 | Width, grid span, vertical merge, borders, shading, vertical alignment and margins are read (props.rs cell_properties); noWrap, textDirection, tcFitText, hideMark, cnfStyle and horizontal merge are not. |
| 17.4.70 | tcPr (Previous Table Cell Properties) | not implemented | 0 | 0 | Tracked cell property changes are not read. |
| 17.4.71 | tcW (Preferred Table Cell Width) | implemented | 1 | 1 | tcW is read when given in twips (props.rs or story.rs, test structure.rs table_row_and_cell_properties). |
| 17.4.72 | textDirection (Table Cell Text Flow Direction) | implemented | 2 | 2 | btLr and tbRl (and the strict lr and rl) cells lay their text out along the row height, wrapping at a stated row height or else growing the row to the longest line, and turn it into the cell at paint time; tbLrV and lrV run across (props.rs text_direction, table.rs CellPlan::turn; tests structure.rs vertical_text_directions, layout.rs turned_cells_rotate_their_text). |
| 17.4.73 | tl2br (Table Cell Top Left to Bottom Right Diagonal Border) | not implemented | 0 | 0 | Diagonal cell borders are not read. |
| 17.4.74 | top (Table Cell Top Border) | incomplete | 1 | 0 | Read by the same code as the other border sides (props.rs borders); no test covers this side. |
| 17.4.75 | top (Table Cell Top Margin Default) | incomplete | 1 | 0 | Read by the same code as the other default cell margins (props.rs margins); no test covers this side. |
| 17.4.76 | top (Table Top Border) | implemented | 1 | 1 | The table's top border is read (props.rs or story.rs, test structure.rs table_row_and_cell_properties). |
| 17.4.77 | top (Table Cell Top Margin Exception) | not implemented | 0 | 0 | Cell margin exceptions live in tblPrEx, which is not read. |
| 17.4.78 | tr (Table Row) | implemented | 1 | 1 | w:tr is read with its properties and cells (props.rs or story.rs, test structure.rs tables). |
| 17.4.79 | tr2bl (Table Cell Top Right to Bottom Left Diagonal Border) | not implemented | 0 | 0 | Diagonal cell borders are not read. |
| 17.4.80 | trHeight (Table Row Height) | implemented | 1 | 1 | trHeight is read with hRule exact or at least (props.rs or story.rs, test structure.rs table_row_and_cell_properties). |
| 17.4.81 | trPr (Table Row Properties) | incomplete | 1 | 1 | Height, repeated header rows and cantSplit are read (props.rs row_properties); gridBefore, gridAfter, wBefore, wAfter, jc, hidden, cnfStyle and tblCellSpacing are not. |
| 17.4.82 | trPr (Previous Table Row Properties) | not implemented | 0 | 0 | Tracked row property changes are not read. |
| 17.4.83 | vAlign (Table Cell Vertical Alignment) | implemented | 1 | 1 | vAlign is read as top, center or bottom (props.rs or story.rs, test structure.rs table_row_and_cell_properties). |
| 17.4.84 | vMerge (Vertically Merged Cell) | implemented | 1 | 2 | vMerge restart and continue are read (props.rs or story.rs, test structure.rs tables). |
| 17.4.85 | wAfter (Preferred Width After Table Row) | not implemented | 0 | 0 | wAfter is not read. |
| 17.4.86 | wBefore (Preferred Width Before Table Row) | not implemented | 0 | 0 | wBefore is not read. |
| 17.4.87 | Table Measurement (CT_TblWidth) | not implemented | 0 | 0 | No reader code cites CT_TblWidth itself; widths are read in twips and percent as the tblW, tcW and tblInd rows say. |
| 17.5 | Custom Markup | incomplete | 2 | 1 | The content of structured document tags, smart tags and custom XML elements is read in place; their properties and data bindings are not. |
| 17.5.1 | Custom XML and Smart Tags | incomplete | 1 | 0 | Custom XML and smart tag elements are unwrapped and their content read (story.rs inline); their names and attributes are dropped. |
| 17.5.2 | Structured Document Tags | incomplete | 1 | 1 | sdtContent is read in place at block, row, cell and run level (test structure.rs markup_compatibility_and_content_controls); sdtPr (placeholders, data binding, control types) is not read. |
| 17.6 | Sections | incomplete | 18 | 21 | Page size, margins, columns, section type, the page number start and header and footer references are read; page borders, line numbering, document grid, text direction, vertical alignment and paper source are not. |
| 17.6.1 | bidi (Right to Left Section Layout) | not implemented | 0 | 0 | Right-to-left section layout is not read. |
| 17.6.2 | bottom (Bottom Border) | implemented | 1 | 2 | The bottom page border is read with the other sides of w:pgBorders and drawn around each page it shows on (props.rs section_properties, flow.rs page_border_lines; tests structure.rs page_borders, layout.rs page_borders_sit_at_their_offsets); w:shadow casts a black shadow as wide as the border to the right and below, the right and bottom lines moved in by that width as LibreOffice draws it (test layout.rs page_border_shadows_and_art_borders), and art borders are left out and reported, as LibreOffice leaves them out. |
| 17.6.3 | col (Single Column Definition) | implemented | 1 | 2 | Explicit column widths and spacing are read when equalWidth is off (props.rs section_properties, test structure.rs columns_footers_and_even_odd_settings). |
| 17.6.4 | cols (Column Definitions) | implemented | 1 | 1 | Column count, spacing, separator and equal width are read (props.rs section_properties, test structure.rs sections_split_at_paragraph_section_properties). |
| 17.6.5 | docGrid (Document Grid) | not implemented | 0 | 0 | The document grid is not read; lines are spaced by paragraph properties alone. |
| 17.6.6 | formProt (Only Allow Editing of Form Fields) | out of scope | 0 | 0 | Form editing restrictions do not affect reading. |
| 17.6.7 | left (Left Border) | implemented | 1 | 1 | The left page border is read with the other sides of w:pgBorders and drawn around each page it shows on (props.rs section_properties, flow.rs page_border_lines; tests structure.rs page_borders, layout.rs page_borders_sit_at_their_offsets); w:shadow casts a black shadow as wide as the border to the right and below, the right and bottom lines moved in by that width as LibreOffice draws it (test layout.rs page_border_shadows_and_art_borders), and art borders are left out and reported, as LibreOffice leaves them out. |
| 17.6.8 | lnNumType (Line Numbering Settings) | not implemented | 0 | 0 | Line numbering is not read or drawn. |
| 17.6.9 | paperSrc (Paper Source Information) | out of scope | 0 | 0 | Paper trays do not affect text or layout. |
| 17.6.10 | pgBorders (Page Borders) | implemented | 3 | 3 | The four sides, offsetFrom, display and zOrder are read (props.rs section_properties) and written back (write props.rs page_borders); layout draws each side through the border line code, from the page edge or outside the text area as LibreOffice places them, on the pages display names, under or over the page content (tests structure.rs page_borders, layout.rs page_borders_sit_at_their_offsets, package.rs page_borders_follow_the_margins). |
| 17.6.11 | pgMar (Page Margins) | implemented | 1 | 1 | All seven page margins are read, defaulting to one inch and half-inch header and footer (props.rs section_properties, test structure.rs sections_split_at_paragraph_section_properties). |
| 17.6.12 | pgNumType (Page Numbering Settings) | incomplete | 2 | 2 | Only the start value is read; the number format and chapter numbering are not. |
| 17.6.13 | pgSz (Page Size) | implemented | 1 | 1 | Width, height and orientation are read; the paper code is not (props.rs section_properties, test structure.rs sections_split_at_paragraph_section_properties). |
| 17.6.14 | printerSettings (Reference to Printer Settings Data) | out of scope | 0 | 0 | Printer settings do not affect text or layout. |
| 17.6.15 | right (Right Border) | implemented | 1 | 2 | The right page border is read with the other sides of w:pgBorders and drawn around each page it shows on (props.rs section_properties, flow.rs page_border_lines; tests structure.rs page_borders, layout.rs page_borders_sit_at_their_offsets); w:shadow casts a black shadow as wide as the border to the right and below, the right and bottom lines moved in by that width as LibreOffice draws it (test layout.rs page_border_shadows_and_art_borders), and art borders are left out and reported, as LibreOffice leaves them out. |
| 17.6.16 | rtlGutter (Gutter on Right Side of Page) | not implemented | 0 | 0 | rtlGutter is not read; the gutter is on the left. |
| 17.6.17 | sectPr (Document Final Section Properties) | implemented | 2 | 2 | A paragraph's sectPr ends a section and the body's describes the last one (props.rs section_properties, test structure.rs sections_split_at_paragraph_section_properties). |
| 17.6.18 | sectPr (Section Properties) | incomplete | 1 | 1 | Page size and margins, page borders, columns, type, page numbering start, the first-page switch and header and footer references are read (props.rs section_properties); the other children are not, as the rows of 17.6 say. |
| 17.6.19 | sectPr (Previous Section Properties) | not implemented | 0 | 0 | Tracked section property changes are not read. |
| 17.6.20 | textDirection (Text Flow Direction) | not implemented | 0 | 0 | Section text direction is not read; text runs horizontally. The corpus's vertical sections hold Japanese text, which a turned page would lay on its side. |
| 17.6.21 | top (Top Border) | implemented | 1 | 1 | The top page border is read with the other sides of w:pgBorders and drawn around each page it shows on (props.rs section_properties, flow.rs page_border_lines; tests structure.rs page_borders, layout.rs page_borders_sit_at_their_offsets); w:shadow casts a black shadow as wide as the border to the right and below, the right and bottom lines moved in by that width as LibreOffice draws it (test layout.rs page_border_shadows_and_art_borders), and art borders are left out and reported, as LibreOffice leaves them out. |
| 17.6.22 | type (Section Type) | implemented | 1 | 1 | nextPage, continuous, evenPage, oddPage and nextColumn are read (props.rs section_properties, test structure.rs sections_split_at_paragraph_section_properties). |
| 17.6.23 | vAlign (Vertical Text Alignment on Page) | not implemented | 0 | 0 | Vertical alignment of text on the page is not read; text starts at the top margin. |
| 17.7 | Styles | incomplete | 13 | 10 | Paragraph, character, table and numbering styles, based-on inheritance, document defaults and toggle properties are read and resolved; latent styles are ignored, and table styles neither take part in property resolution nor apply their conditional formats. |
| 17.7.1 | Style Inheritance | implemented | 1 | 1 | Styles::chain walks basedOn to the root, cutting cycles and chains longer than 32 (crates/docboss-model/src/style.rs, tests structure.rs styles_and_defaults and resolution.rs based_on_chain_resolves_root_first). |
| 17.7.2 | Style Hierarchy | incomplete | 3 | 4 | Styles::resolve_paragraph and resolve_run layer document defaults, the paragraph style chain, the list level, the character style chain and direct formatting; table styles are not in the hierarchy. |
| 17.7.3 | Toggle Properties | incomplete | 1 | 1 | Toggle properties set by both the paragraph and the character style chains cancel out (crates/docboss-model/src/style.rs, test resolution.rs toggle_properties_cancel_across_style_kinds); table style toggles are not included. |
| 17.7.4 | General Style Properties | implemented | 2 | 2 | Style type, id, name, basedOn, next, default and the pPr, rPr and tblPr of each style are read (parts.rs styles; DOC styles.rs from the STSH), tests structure.rs styles_and_defaults and read.rs character_and_paragraph_formatting. |
| 17.7.5 | Document Defaults | implemented | 1 | 1 | docDefaults rPrDefault and pPrDefault become Styles::default_run and default_paragraph (test structure.rs styles_and_defaults). |
| 17.7.6 | Table Styles | incomplete | 1 | 0 | Table styles are read with their table properties; their conditional formats (tblStylePr) are not applied and they do not take part in run or paragraph resolution. |
| 17.7.7 | Numbering Styles | incomplete | 1 | 0 | Numbering styles are read, and abstract definitions linked through numStyleLink take the levels of the style's definition (parts.rs resolve_style_links); no test covers it. |
| 17.7.8 | Paragraph Styles | implemented | 1 | 1 | Paragraph styles are read and resolved with their run properties, heading levels coming from outlineLvl or the style name (test structure.rs styles_and_defaults). |
| 17.7.9 | Run (Character) Styles | incomplete | 1 | 0 | Character styles are read and resolved by Styles::resolve_run; no DOCX test reads one. |
| 17.8 | Fonts | incomplete | 4 | 1 | Font table entries and embedded fonts are read; font substitution follows docboss-font's own table, not the file's panose1 and sig data. |
| 17.8.1 | Font Embedding | implemented | 1 | 1 | Embedded fonts are deobfuscated by XORing their first 32 bytes with the reversed fontKey GUID (parts.rs deobfuscate, unit test deobfuscation_uses_the_reversed_guid). |
| 17.8.2 | Font Substitution | not implemented | 0 | 0 | The file's substitution data (panose1, sig) is not read; docboss-font substitutes by name and FontEntry::family. |
| 17.8.3 | Elements | incomplete | 3 | 0 | w:font name, altName, family, pitch and the four embed elements are read (parts.rs fonts); charset, panose1 and sig are not, and no DOCX test reads a font table. |
| 17.9 | Numbering | incomplete | 23 | 18 | Abstract definitions, instances, overrides and levels are read and labels counted in document order; picture bullets and the level suffix are not read, and lvlRestart is not applied. |
| 17.9.1 | abstractNum (Abstract Numbering Definition) | implemented | 1 | 1 | abstractNum definitions are read with their levels (parts.rs numbering, test structure.rs numbering_definitions). |
| 17.9.2 | abstractNumId (Abstract Numbering Definition Reference) | implemented | 1 | 1 | abstractNumId links an instance to its definition (parts.rs numbering, test structure.rs numbering_definitions). |
| 17.9.3 | ilvl (Numbering Level Reference) | implemented | 1 | 1 | The paragraph's ilvl selects the list level, clamped to 0 to 8 (parts.rs numbering, test structure.rs numbering_definitions). |
| 17.9.4 | isLgl (Display All Levels Using Arabic Numerals) | incomplete | 1 | 0 | isLgl is read and NumberingCounter shows every level as decimal; no test covers it. |
| 17.9.5 | lvl (Numbering Level Override Definition) | incomplete | 1 | 0 | Override levels replace the abstract level in Numbering::level; no test covers it. |
| 17.9.6 | lvl (Numbering Level Definition) | implemented | 1 | 1 | Level start, format, text, justification, restart, legal numbering and properties are read (parts.rs numbering, test structure.rs numbering_definitions). |
| 17.9.7 | lvlJc (Justification) | incomplete | 1 | 0 | lvlJc is read into Level::justification; no test covers it. |
| 17.9.8 | lvlOverride (Numbering Level Definition Override) | implemented | 1 | 1 | lvlOverride start overrides and replacement levels are read (parts.rs numbering, test structure.rs numbering_definitions). |
| 17.9.9 | lvlPicBulletId (Picture Numbering Symbol Definition Reference) | not implemented | 0 | 0 | Picture bullets are not read; such levels show their lvlText. |
| 17.9.10 | lvlRestart (Restart Numbering Level Symbol) | incomplete | 1 | 0 | lvlRestart is read into Level::restart_after, but NumberingCounter restarts a level whenever a shallower one advances and ignores the value. |
| 17.9.11 | lvlText (Numbering Level Text) | implemented | 1 | 2 | lvlText templates such as %1.%2) are filled by NumberingCounter; Symbol-font bullets map to Unicode (parts.rs numbering, test structure.rs numbering_definitions). |
| 17.9.12 | multiLevelType (Abstract Numbering Definition Type) | out of scope | 0 | 0 | multiLevelType is informational and does not change labels. |
| 17.9.13 | name (Abstract Numbering Definition Name) | out of scope | 0 | 0 | Definition names are informational and do not change labels. |
| 17.9.14 | nsid (Abstract Numbering Definition Identifier) | out of scope | 0 | 0 | nsid identifies definitions when merging documents; it does not change labels. |
| 17.9.15 | num (Numbering Definition Instance) | implemented | 1 | 2 | num instances are read with their overrides (parts.rs numbering, test structure.rs numbering_definitions). |
| 17.9.16 | numbering (Numbering Definitions) | implemented | 1 | 1 | The numbering part's definitions and instances are read (parts.rs numbering, test structure.rs numbering_definitions). |
| 17.9.17 | numFmt (Numbering Format) | implemented | 1 | 1 | numFmt is read into NumberFormat (see 17.18.59) (parts.rs numbering, test structure.rs numbering_definitions). |
| 17.9.18 | numId (Numbering Definition Instance Reference) | implemented | 1 | 1 | The paragraph's numId selects the instance; 0 removes numbering (parts.rs numbering, test structure.rs numbering_definitions). |
| 17.9.19 | numIdMacAtCleanup (Last Reviewed Abstract Numbering Definition) | out of scope | 0 | 0 | numIdMacAtCleanup is editing state and does not change labels. |
| 17.9.20 | numPicBullet (Picture Numbering Symbol Definition) | not implemented | 0 | 0 | Picture bullets are not read; such levels show their lvlText. |
| 17.9.21 | numStyleLink (Numbering Style Reference) | incomplete | 1 | 0 | Definitions linked through numStyleLink take the levels of the numbering style's definition (parts.rs resolve_style_links); no test covers it. |
| 17.9.22 | pPr (Numbering Level Associated Paragraph Properties) | incomplete | 1 | 0 | Level paragraph properties are read and applied by Styles::resolve_paragraph; no test covers it. |
| 17.9.23 | pStyle (Paragraph Style's Associated Numbering Level) | incomplete | 1 | 0 | Output reads a paragraph's list membership from its resolved properties, so a style's numPr counts (crates/docboss-output/src/walk.rs); the level's pStyle element itself is not read. |
| 17.9.24 | rPr (Numbering Symbol Run Properties) | incomplete | 1 | 0 | Level run properties are read into Level::run; no test covers it. |
| 17.9.25 | start (Starting Value) | implemented | 1 | 1 | start gives a level's first number (parts.rs numbering, test structure.rs numbering_definitions). |
| 17.9.26 | startOverride (Numbering Level Starting Value Override) | implemented | 1 | 1 | startOverride restarts a level of one instance (parts.rs numbering, test structure.rs numbering_definitions). |
| 17.9.27 | styleLink (Numbering Style Definition) | not implemented | 0 | 0 | styleLink is not read; linked definitions are resolved from numStyleLink (17.9.21). |
| 17.9.28 | suff (Content Between Numbering Symbol and Paragraph Text) | not implemented | 0 | 0 | The level suffix is not read; output and layout follow a label with a tab. |
| 17.9.29 | tmpl (Numbering Template Code) | out of scope | 0 | 0 | The template code is informational and does not change labels. |
| 17.10 | Headers and Footers | implemented | 7 | 7 | Header and footer parts, their references per page kind, the first-page switch and the even/odd setting are read (tests structure.rs sections_split_at_paragraph_section_properties and columns_footers_and_even_odd_settings); docboss-layout places them. |
| 17.10.1 | evenAndOddHeaders (Different Even/Odd Page Headers and Footers) | implemented | 1 | 1 | evenAndOddHeaders is read from the settings part into Settings::even_and_odd_headers (test structure.rs columns_footers_and_even_odd_settings). |
| 17.10.2 | footerReference (Footer Reference) | implemented | 1 | 1 | footerReference ids are read per default, first and even page kind (test structure.rs columns_footers_and_even_odd_settings). |
| 17.10.3 | ftr (Footer) | implemented | 1 | 1 | Footer parts are read as HeaderFooter bodies (test structure.rs columns_footers_and_even_odd_settings). |
| 17.10.4 | hdr (Header) | implemented | 1 | 1 | Header parts are read as HeaderFooter bodies (test structure.rs sections_split_at_paragraph_section_properties). |
| 17.10.5 | headerReference (Header Reference) | implemented | 1 | 1 | headerReference ids are read per default, first and even page kind (test structure.rs sections_split_at_paragraph_section_properties). |
| 17.10.6 | titlePg (Different First Page Headers and Footers) | implemented | 1 | 1 | titlePg is read into SectionProperties::title_page (test structure.rs sections_split_at_paragraph_section_properties). |
| 17.11 | Footnotes and Endnotes | incomplete | 13 | 13 | Footnote and endnote bodies, references and number marks are read; note properties (footnotePr and endnotePr: format, restart, start, position) are not. |
| 17.11.1 | continuationSeparator (Continuation Separator Mark) | incomplete | 1 | 0 | Continuation separator notes are skipped like separators; no test covers them. |
| 17.11.2 | endnote (Endnote Content) | implemented | 1 | 1 | Endnote bodies are read into Document::endnotes (lib.rs parse_story, test structure.rs notes_and_comments). |
| 17.11.3 | endnote (Special Endnote List) | not implemented | 0 | 0 | The settings' special note lists are not read; separator notes are recognized by their type in the notes part. |
| 17.11.4 | endnotePr (Document-Wide Endnote Properties) | not implemented | 0 | 0 | Note properties are not read; footnotes number 1, 2, 3 and endnotes i, ii, iii from the start of the document. |
| 17.11.5 | endnotePr (Section-Wide Endnote Properties) | not implemented | 0 | 0 | Note properties are not read; footnotes number 1, 2, 3 and endnotes i, ii, iii from the start of the document. |
| 17.11.6 | endnoteRef (Endnote Reference Mark) | incomplete | 1 | 0 | endnoteRef is read as the note number mark, like footnoteRef; no test covers the endnote form. |
| 17.11.7 | endnoteReference (Endnote Reference) | implemented | 1 | 1 | endnoteReference becomes RunContent::EndnoteReference (lib.rs parse_story, test structure.rs notes_and_comments). |
| 17.11.8 | endnotes (Document Endnotes) | implemented | 1 | 1 | The endnotes part is read (lib.rs parse_story, test structure.rs notes_and_comments). |
| 17.11.9 | footnote (Special Footnote List) | not implemented | 0 | 0 | The settings' special note lists are not read; separator notes are recognized by their type in the notes part. |
| 17.11.10 | footnote (Footnote Content) | implemented | 1 | 1 | Footnote bodies are read into Document::footnotes (lib.rs parse_story, test structure.rs notes_and_comments). |
| 17.11.11 | footnotePr (Section-Wide Footnote Properties) | not implemented | 0 | 0 | Note properties are not read; footnotes number 1, 2, 3 and endnotes i, ii, iii from the start of the document. |
| 17.11.12 | footnotePr (Document-Wide Footnote Properties) | not implemented | 0 | 0 | Note properties are not read; footnotes number 1, 2, 3 and endnotes i, ii, iii from the start of the document. |
| 17.11.13 | footnoteRef (Footnote Reference Mark) | implemented | 1 | 1 | footnoteRef becomes RunContent::NoteNumber (lib.rs parse_story, test structure.rs notes_and_comments). |
| 17.11.14 | footnoteReference (Footnote Reference) | implemented | 1 | 1 | footnoteReference becomes RunContent::FootnoteReference (lib.rs parse_story, test structure.rs notes_and_comments). |
| 17.11.15 | footnotes (Document Footnotes) | implemented | 1 | 1 | The footnotes part is read (lib.rs parse_story, test structure.rs notes_and_comments). |
| 17.11.16 | noEndnote (Suppress Endnotes In Document) | not implemented | 0 | 0 | Note properties are not read; footnotes number 1, 2, 3 and endnotes i, ii, iii from the start of the document. |
| 17.11.17 | numFmt (Endnote Numbering Format) | incomplete | 1 | 0 | Endnotes are labelled lowerRoman, the default this clause gives (crates/docboss-output/src/walk.rs); the element itself is not read. |
| 17.11.18 | numFmt (Footnote Numbering Format) | not implemented | 0 | 0 | Note properties are not read; footnotes number 1, 2, 3 and endnotes i, ii, iii from the start of the document. |
| 17.11.19 | numRestart (Footnote and Endnote Numbering Restart Location) | not implemented | 0 | 0 | Note properties are not read; footnotes number 1, 2, 3 and endnotes i, ii, iii from the start of the document. |
| 17.11.20 | numStart (Footnote and Endnote Numbering Starting Value) | not implemented | 0 | 0 | Note properties are not read; footnotes number 1, 2, 3 and endnotes i, ii, iii from the start of the document. |
| 17.11.21 | pos (Footnote Placement) | not implemented | 0 | 0 | Note properties are not read; footnotes number 1, 2, 3 and endnotes i, ii, iii from the start of the document. |
| 17.11.22 | pos (Endnote Placement) | not implemented | 0 | 0 | Note properties are not read; footnotes number 1, 2, 3 and endnotes i, ii, iii from the start of the document. |
| 17.11.23 | separator (Footnote/Endnote Separator Mark) | implemented | 2 | 2 | Separator notes are skipped (lib.rs parse_story, test structure.rs notes_and_comments). |
| 17.12 | Glossary Document | out of scope | 0 | 0 | The glossary document holds building blocks for insertion, not document content; docboss does not read it. |
| 17.12.1 | behavior (Entry Insertion Behavior) | out of scope | 0 | 0 | The glossary document holds building blocks for insertion, not document content; docboss does not read it. |
| 17.12.2 | behaviors (Entry Insertion Behaviors) | out of scope | 0 | 0 | The glossary document holds building blocks for insertion, not document content; docboss does not read it. |
| 17.12.3 | category (Entry Categorization) | out of scope | 0 | 0 | The glossary document holds building blocks for insertion, not document content; docboss does not read it. |
| 17.12.4 | description (Description for Entry) | out of scope | 0 | 0 | The glossary document holds building blocks for insertion, not document content; docboss does not read it. |
| 17.12.5 | docPart (Glossary Document Entry) | out of scope | 0 | 0 | The glossary document holds building blocks for insertion, not document content; docboss does not read it. |
| 17.12.6 | docPartBody (Contents of Glossary Document Entry) | out of scope | 0 | 0 | The glossary document holds building blocks for insertion, not document content; docboss does not read it. |
| 17.12.7 | docPartPr (Glossary Document Entry Properties) | out of scope | 0 | 0 | The glossary document holds building blocks for insertion, not document content; docboss does not read it. |
| 17.12.8 | docParts (List of Glossary Document Entries) | out of scope | 0 | 0 | The glossary document holds building blocks for insertion, not document content; docboss does not read it. |
| 17.12.9 | gallery (Gallery Associated With Entry) | out of scope | 0 | 0 | The glossary document holds building blocks for insertion, not document content; docboss does not read it. |
| 17.12.10 | glossaryDocument (Glossary Document Root Element) | out of scope | 0 | 0 | The glossary document holds building blocks for insertion, not document content; docboss does not read it. |
| 17.12.11 | guid (Entry ID) | out of scope | 0 | 0 | The glossary document holds building blocks for insertion, not document content; docboss does not read it. |
| 17.12.12 | name (Category Associated With Entry) | out of scope | 0 | 0 | The glossary document holds building blocks for insertion, not document content; docboss does not read it. |
| 17.12.13 | name (Entry Name) | out of scope | 0 | 0 | The glossary document holds building blocks for insertion, not document content; docboss does not read it. |
| 17.12.14 | style (Associated Paragraph Style Name) | out of scope | 0 | 0 | The glossary document holds building blocks for insertion, not document content; docboss does not read it. |
| 17.12.15 | type (Entry Type) | out of scope | 0 | 0 | The glossary document holds building blocks for insertion, not document content; docboss does not read it. |
| 17.12.16 | types (Entry Types) | out of scope | 0 | 0 | The glossary document holds building blocks for insertion, not document content; docboss does not read it. |
| 17.13 | Annotations | incomplete | 6 | 4 | Comments, insertions, deletions, moves and bookmarks are read; property revisions, range permissions and proofing marks are not. |
| 17.13.1 | Inline Annotations | out of scope | 0 | 0 | Descriptive clause; the inline annotations it introduces have their own rows (17.13.4 to 17.13.6). |
| 17.13.3 | Property Annotations | not implemented | 0 | 0 | Formatting revisions (rPrChange, pPrChange and the like) are not read; the current formatting is used. |
| 17.13.4 | Comments | implemented | 3 | 1 | Comments with author, initials, date and body are read, with their range marks and references (story.rs inline, test structure.rs notes_and_comments). |
| 17.13.5 | Revisions | incomplete | 2 | 2 | Insertions and deletions are read as Revision inlines with author and date, moves as insertions and deletions (test structure.rs revisions); paragraph mark, table and property revisions are not read. |
| 17.13.6 | Bookmarks | implemented | 1 | 1 | bookmarkStart and bookmarkEnd are read with their ids and names (story.rs inline, test structure.rs bookmarks). |
| 17.13.7 | Range Permissions | not implemented | 0 | 0 | permStart and permEnd are ignored. |
| 17.13.8 | Spelling and Grammar | out of scope | 0 | 0 | Proofing marks do not change content. |
| 17.14 | Mail Merge | out of scope | 0 | 0 | Mail merge settings describe a data source connection; they do not change the document's content. |
| 17.14.1 | active (Record Is Included in Mail Merge) | out of scope | 0 | 0 | Mail merge settings describe a data source connection; they do not change the document's content. |
| 17.14.2 | activeRecord (Record Currently Displayed In Merged Document) | out of scope | 0 | 0 | Mail merge settings describe a data source connection; they do not change the document's content. |
| 17.14.3 | addressFieldName (Column Containing E-mail Address) | out of scope | 0 | 0 | Mail merge settings describe a data source connection; they do not change the document's content. |
| 17.14.4 | checkErrors (Mail Merge Error Reporting Setting) | out of scope | 0 | 0 | Mail merge settings describe a data source connection; they do not change the document's content. |
| 17.14.5 | colDelim (Column Delimiter for Data Source) | out of scope | 0 | 0 | Mail merge settings describe a data source connection; they do not change the document's content. |
| 17.14.6 | column (Index of Column Being Mapped) | out of scope | 0 | 0 | Mail merge settings describe a data source connection; they do not change the document's content. |
| 17.14.7 | column (Index of Column Containing Unique Values for Record) | out of scope | 0 | 0 | Mail merge settings describe a data source connection; they do not change the document's content. |
| 17.14.8 | connectString (Data Source Connection String) | out of scope | 0 | 0 | Mail merge settings describe a data source connection; they do not change the document's content. |
| 17.14.9 | dataSource (Data Source File Path) | out of scope | 0 | 0 | Mail merge settings describe a data source connection; they do not change the document's content. |
| 17.14.10 | dataType (Data Source Type) | out of scope | 0 | 0 | Mail merge settings describe a data source connection; they do not change the document's content. |
| 17.14.11 | destination (Merged Document Destination) | out of scope | 0 | 0 | Mail merge settings describe a data source connection; they do not change the document's content. |
| 17.14.12 | doNotSuppressBlankLines (Remove Blank Lines from Merged Documents) | out of scope | 0 | 0 | Mail merge settings describe a data source connection; they do not change the document's content. |
| 17.14.13 | dynamicAddress (Use Country-Based Address Field Ordering) | out of scope | 0 | 0 | Mail merge settings describe a data source connection; they do not change the document's content. |
| 17.14.14 | fHdr (First Row of Data Source Contains Column Names) | out of scope | 0 | 0 | Mail merge settings describe a data source connection; they do not change the document's content. |
| 17.14.15 | fieldMapData (External Data Source to Merge Field Mapping) | out of scope | 0 | 0 | Mail merge settings describe a data source connection; they do not change the document's content. |
| 17.14.16 | headerSource (Header Definition File Path) | out of scope | 0 | 0 | Mail merge settings describe a data source connection; they do not change the document's content. |
| 17.14.17 | lid (Merge Field Name Language ID) | out of scope | 0 | 0 | Mail merge settings describe a data source connection; they do not change the document's content. |
| 17.14.18 | linkToQuery (Query Contains Link to External Query File) | out of scope | 0 | 0 | Mail merge settings describe a data source connection; they do not change the document's content. |
| 17.14.19 | mailAsAttachment (Merged Document To E-Mail Attachment) | out of scope | 0 | 0 | Mail merge settings describe a data source connection; they do not change the document's content. |
| 17.14.20 | mailMerge (Mail Merge Settings) | out of scope | 0 | 0 | Mail merge settings describe a data source connection; they do not change the document's content. |
| 17.14.21 | mailSubject (Merged E-mail or Fax Subject Line) | out of scope | 0 | 0 | Mail merge settings describe a data source connection; they do not change the document's content. |
| 17.14.22 | mainDocumentType (Source Document Type) | out of scope | 0 | 0 | Mail merge settings describe a data source connection; they do not change the document's content. |
| 17.14.23 | mappedName (Predefined Merge Field Name) | out of scope | 0 | 0 | Mail merge settings describe a data source connection; they do not change the document's content. |
| 17.14.24 | name (Data Source Name for Column) | out of scope | 0 | 0 | Mail merge settings describe a data source connection; they do not change the document's content. |
| 17.14.25 | odso (Office Data Source Object Settings) | out of scope | 0 | 0 | Mail merge settings describe a data source connection; they do not change the document's content. |
| 17.14.26 | query (Query For Data Source Records To Merge) | out of scope | 0 | 0 | Mail merge settings describe a data source connection; they do not change the document's content. |
| 17.14.27 | recipientData (Data About Single Data Source Record) | out of scope | 0 | 0 | Mail merge settings describe a data source connection; they do not change the document's content. |
| 17.14.28 | recipientData (Reference to Inclusion/Exclusion Data for Data Source) | out of scope | 0 | 0 | Mail merge settings describe a data source connection; they do not change the document's content. |
| 17.14.29 | recipients (Inclusion/Exclusion Data for Data Source) | out of scope | 0 | 0 | Mail merge settings describe a data source connection; they do not change the document's content. |
| 17.14.30 | src (ODSO Data Source File Path) | out of scope | 0 | 0 | Mail merge settings describe a data source connection; they do not change the document's content. |
| 17.14.31 | table (Data Source Table Name) | out of scope | 0 | 0 | Mail merge settings describe a data source connection; they do not change the document's content. |
| 17.14.32 | type (ODSO Data Source Type) | out of scope | 0 | 0 | Mail merge settings describe a data source connection; they do not change the document's content. |
| 17.14.33 | type (Merge Field Mapping) | out of scope | 0 | 0 | Mail merge settings describe a data source connection; they do not change the document's content. |
| 17.14.34 | udl (UDL Connection String) | out of scope | 0 | 0 | Mail merge settings describe a data source connection; they do not change the document's content. |
| 17.14.35 | uniqueTag (Unique Value for Record) | out of scope | 0 | 0 | Mail merge settings describe a data source connection; they do not change the document's content. |
| 17.14.36 | viewMergedData (View Merged Data Within Document) | out of scope | 0 | 0 | Mail merge settings describe a data source connection; they do not change the document's content. |
| 17.15 | Settings | incomplete | 5 | 3 | defaultTabStop and evenAndOddHeaders are read from the settings part; the other settings are not. |
| 17.15.1 | Document Settings | incomplete | 3 | 1 | defaultTabStop and evenAndOddHeaders are read (parts.rs settings, test structure.rs columns_footers_and_even_odd_settings); zoom, protection, compatibility options and the rest are not. |
| 17.15.2 | Web Page Settings | out of scope | 0 | 0 | Web page settings affect HTML saving only. |
| 17.15.3 | Language Compatibility Settings | incomplete | 1 | 2 | Only the compatibilityMode compatSetting is read (parts.rs settings, test parts.rs settings_read_the_compatibility_mode) and written back; below 15, and when a file states none, tables move left by their first cell's left margin as Word 2007 and LibreOffice place them (test layout.rs table_borders_take_row_height_and_old_tables_outdent). The other compatibility settings are not read. |
| 17.16 | Fields and Hyperlinks | incomplete | 12 | 9 | Simple and complex fields keep their instruction and cached result, HYPERLINK fields become links and docboss-layout evaluates PAGE and NUMPAGES; other fields are not recalculated and form field data is not read. |
| 17.16.1 | Syntax | not implemented | 0 | 0 | Instructions are kept as text; only HYPERLINK arguments are parsed. |
| 17.16.2 | XML representation | out of scope | 0 | 0 | Descriptive clause; the elements it describes have their own rows (17.16.18, 17.16.19, 17.16.23). |
| 17.16.3 | Formulas and expressions | not implemented | 0 | 0 | Formula fields are not evaluated; their cached result is kept. |
| 17.16.4 | Field formatting | not implemented | 0 | 1 | Format switches are not applied; the cached result is kept. |
| 17.16.5 | Field definitions | incomplete | 2 | 2 | HYPERLINK becomes a hyperlink with its target, anchor and tooltip (test structure.rs complex_fields), and layout evaluates PAGE and NUMPAGES; other field types keep their cached results. |
| 17.16.6 | calcOnExit (Recalculate Fields When Current Field Is Modified) | not implemented | 0 | 0 | Form field data (ffData) is not read; the field's cached result is kept. |
| 17.16.7 | checkBox (Checkbox Form Field Properties) | not implemented | 0 | 0 | Form field data (ffData) is not read; the field's cached result is kept. |
| 17.16.8 | checked (Checkbox Form Field State) | not implemented | 0 | 0 | Form field data (ffData) is not read; the field's cached result is kept. |
| 17.16.9 | ddList (Drop-Down List Form Field Properties) | not implemented | 0 | 0 | Form field data (ffData) is not read; the field's cached result is kept. |
| 17.16.10 | default (Default Text Box Form Field String) | not implemented | 0 | 0 | Form field data (ffData) is not read; the field's cached result is kept. |
| 17.16.11 | default (Default Drop-Down List Item Index) | not implemented | 0 | 0 | Form field data (ffData) is not read; the field's cached result is kept. |
| 17.16.12 | default (Default Checkbox Form Field State) | not implemented | 0 | 0 | Form field data (ffData) is not read; the field's cached result is kept. |
| 17.16.13 | delInstrText (Deleted Field Code) | incomplete | 1 | 0 | Deleted field codes are read like instrText (story.rs run_content); no test covers them. |
| 17.16.14 | enabled (Form Field Enabled) | not implemented | 0 | 0 | Form field data (ffData) is not read; the field's cached result is kept. |
| 17.16.15 | entryMacro (Script Function to Execute on Form Field Entry) | not implemented | 0 | 0 | Form field data (ffData) is not read; the field's cached result is kept. |
| 17.16.16 | exitMacro (Script Function to Execute on Form Field Exit) | not implemented | 0 | 0 | Form field data (ffData) is not read; the field's cached result is kept. |
| 17.16.17 | ffData (Form Field Properties) | not implemented | 0 | 0 | Form field data (ffData) is not read; the field's cached result is kept. |
| 17.16.18 | fldChar (Complex Field Character) | implemented | 3 | 1 | begin, separate and end field characters fold into Field inlines, nested and across runs and paragraphs (story.rs fold, tests structure.rs complex_fields and fields_spanning_paragraphs). |
| 17.16.19 | fldSimple (Simple Field) | implemented | 1 | 1 | fldSimple keeps its instruction and content as the result (test structure.rs hyperlinks_and_simple_fields). |
| 17.16.20 | format (Text Box Form Field Formatting) | not implemented | 0 | 0 | Form field data (ffData) is not read; the field's cached result is kept. |
| 17.16.21 | helpText (Associated Help Text) | not implemented | 0 | 0 | Form field data (ffData) is not read; the field's cached result is kept. |
| 17.16.22 | hyperlink (Hyperlink) | implemented | 2 | 1 | Hyperlinks are read with the relationship target, anchor and tooltip (test structure.rs hyperlinks_and_simple_fields). |
| 17.16.23 | instrText (Field Code) | implemented | 1 | 1 | instrText pieces are joined into the field's instruction (test structure.rs complex_fields). |
| 17.16.24 | label (Form Field Label) | not implemented | 0 | 0 | Form field data (ffData) is not read; the field's cached result is kept. |
| 17.16.25 | listEntry (Drop-Down List Entry) | not implemented | 0 | 0 | Form field data (ffData) is not read; the field's cached result is kept. |
| 17.16.26 | maxLength (Text Box Form Field Maximum Length) | not implemented | 0 | 0 | Form field data (ffData) is not read; the field's cached result is kept. |
| 17.16.27 | name (Form Field Name) | not implemented | 0 | 0 | Form field data (ffData) is not read; the field's cached result is kept. |
| 17.16.28 | result (Drop-Down List Selection) | not implemented | 0 | 0 | Form field data (ffData) is not read; the field's cached result is kept. |
| 17.16.29 | size (Checkbox Form Field Size) | not implemented | 0 | 0 | Form field data (ffData) is not read; the field's cached result is kept. |
| 17.16.30 | sizeAuto (Automatically Size Form Field) | not implemented | 0 | 0 | Form field data (ffData) is not read; the field's cached result is kept. |
| 17.16.31 | statusText (Associated Status Text) | not implemented | 0 | 0 | Form field data (ffData) is not read; the field's cached result is kept. |
| 17.16.32 | tabIndex (Form Field Navigation Order Index) | not implemented | 0 | 0 | Form field data (ffData) is not read; the field's cached result is kept. |
| 17.16.33 | textInput (Text Box Form Field Properties) | not implemented | 0 | 0 | Form field data (ffData) is not read; the field's cached result is kept. |
| 17.16.34 | type (Text Box Form Field Type) | not implemented | 0 | 0 | Form field data (ffData) is not read; the field's cached result is kept. |
| 17.17 | Miscellaneous Topics | incomplete | 2 | 2 | Boolean properties are read everywhere; alternative format chunks are reported as dropped and subdocuments are not followed. |
| 17.17.1 | Subdocuments | not implemented | 0 | 0 | subDoc references are not followed. |
| 17.17.2 | Alternative Format Import | incomplete | 1 | 1 | altChunk content is not imported; each occurrence is reported as dropped (story.rs block, test structure.rs alternative_format_chunks_are_reported). |
| 17.17.3 | Roundtripping Alternate Content | out of scope | 0 | 0 | The writer does not round-trip mc:AlternateContent; reading follows ECMA-376 Part 3. |
| 17.17.4 | Boolean Property (CT_OnOff) | implemented | 1 | 1 | on, off, true, false, 1, 0 and an absent val are read (xml.rs on_off_value and its unit test). |
| 17.18 | Simple Types | incomplete | 16 | 14 | Simple types are parsed where the elements using them are read; the rows of those elements say which values are handled. |
| 17.18.1 | ST_AnnotationVMerge (Table Cell Vertical Merge Revision Type) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.2 | ST_Border (Border Styles) | incomplete | 1 | 2 | single, thick, double, dotted, dashed, dotDash, dotDotDash and dashSmallGap are read and drawn, the dashed styles with round caps and the dash lengths LibreOffice uses (props.rs border, table.rs border_line; tests structure.rs dashed_border_styles, render.rs dashed_borders_paint_dashes); dashDotStroked is drawn dash-dotted as LibreOffice draws it; art borders (every value that is not a line style) are left out; the triple, thick-thin, 3-D and wave borders are drawn as single lines. |
| 17.18.3 | ST_BrClear (Line Break Text Wrapping Restart Location) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.4 | ST_BrType (Break Types) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.5 | ST_CaptionPos (Automatic Caption Positioning Values) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.6 | ST_ChapterSep (Chapter Separator Types) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.7 | ST_CharacterSpacing (Character-Level Whitespace Compression Settings) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.8 | ST_CombineBrackets (Two Lines in One Enclosing Character Type) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.9 | ST_DateTime (Standard Date and Time Storage Format) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.10 | ST_DecimalNumber (Decimal Number Value) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.11 | ST_DecimalNumberOrPercent (Percentage Measurement) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.12 | ST_Direction (Bidirectional Direction Types) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.13 | ST_DisplacedByCustomXml (Location of Custom XML Markup Displacing an Annotation) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.14 | ST_DocGrid (Document Grid Types) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.15 | ST_DocPartBehavior (Insertion Behavior Types) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.16 | ST_DocPartGallery (Entry Gallery Types) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.17 | ST_DocPartType (Entry Types) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.18 | ST_DocProtect (Document Protection Types) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.19 | ST_DocType (Document Classification Values) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.20 | ST_DropCap (Text Frame Drop Cap Location) | implemented | 2 | 1 | dropCap is read (props.rs frame_properties); a drop cap frame stands at the start of the next paragraph, a margin drop cap too as LibreOffice places it (flow.rs frame_float, tests fixtures.rs wrapping_frames_and_floating_tables_are_read, read.rs drop_cap_frames). |
| 17.18.21 | ST_EdGrp (Range Permision Editing Group) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.22 | ST_EdnPos (Endnote Positioning Location) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.23 | ST_EighthPointMeasure (Measurement in Eighths of a Point) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.24 | ST_Em (Emphasis Mark Type) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.25 | ST_FFHelpTextVal (Help Text Value) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.26 | ST_FFName (Form Field Name Value) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.27 | ST_FFStatusTextVal (Status Text Value) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.28 | ST_FFTextType (Text Box Form Field Type Values) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.29 | ST_FldCharType (Complex Field Character Type) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.30 | ST_FontFamily (Font Family Value) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.31 | ST_FrameLayout (Frameset Layout Order) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.32 | ST_FrameScrollbar (Frame Scrollbar Visibility) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.33 | ST_FtnEdn (Footnote or Endnote Type) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.34 | ST_FtnPos (Footnote Positioning Location) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.35 | ST_HAnchor (Horizontal Anchor Location) | implemented | 2 | 2 | hAnchor and horzAnchor are read into position bases (props.rs anchored_position, test fixtures.rs wrapping_frames_and_floating_tables_are_read). |
| 17.18.36 | ST_HdrFtr (Header or Footer Type) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.37 | ST_HeightRule (Height Rule) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.38 | ST_HexColor (Color Value) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.39 | ST_HexColorAuto (‘Automatic’ Color Value) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.40 | ST_HighlightColor (Text Highlight Colors) | incomplete | 2 | 0 | The sixteen highlight names map to RGB (xml.rs); no test covers it. |
| 17.18.41 | ST_Hint (Font Type Hint) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.42 | ST_HpsMeasure (Measurement in Half-Points) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.43 | ST_InfoTextType (Help or Status Text Type) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.44 | ST_Jc (Horizontal Alignment Type) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.45 | ST_JcTable (Table Alignment Type) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.46 | ST_LevelSuffix (Content Between Numbering Symbol and Paragraph Text) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.47 | ST_LineNumberRestart (Line Numbering Restart Position) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.48 | ST_LineSpacingRule (Line Spacing Rule) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.49 | ST_Lock (Locking Types) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.50 | ST_LongHexNumber (Eight Digit Hexadecimal Value) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.51 | ST_MacroName (Script Subroutine Name Value) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.52 | ST_MailMergeDataType (Mail Merge Data Source Type Values) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.53 | ST_MailMergeDest (Merged Document Destination Types) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.54 | ST_MailMergeDocType (Source Document Types) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.55 | ST_MailMergeOdsoFMDFieldType (Merge Field Mapping Types) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.56 | ST_MailMergeSourceType (Mail Merge ODSO Data Source Types) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.57 | ST_Merge (Merged Cell Type) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.58 | ST_MultiLevelType (Numbering Definition Type) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.59 | ST_NumberFormat (Numbering Format) | implemented | 1 | 1 | decimal, decimalZero, upper and lower Roman and letter, ordinal, bullet and none are mapped; other formats label as decimal (parts.rs number_format), held to 954 vectors from the Lean reference (crates/docboss-model/tests/ledger_vectors.rs). |
| 17.18.60 | ST_ObjectDrawAspect (Embedded Object Representations) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.61 | ST_ObjectUpdateMode (Embedded Object Update Modes) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.62 | ST_PageBorderDisplay (Page Border Display Options) | implemented | 1 | 1 | allPages, firstPage and notFirstPage pick the pages a page border is drawn on (props.rs section_properties, flow.rs shows_on; test layout.rs page_borders_sit_at_their_offsets). |
| 17.18.63 | ST_PageBorderOffset (Page Border Positioning Base) | implemented | 1 | 1 | page and text set what a page border's space is measured from (props.rs section_properties, flow.rs page_border_lines; test layout.rs page_borders_sit_at_their_offsets). |
| 17.18.64 | ST_PageBorderZOrder (Page Border Z-Order) | implemented | 1 | 1 | back draws page borders under the page content, front over it (props.rs section_properties; test structure.rs page_borders). |
| 17.18.65 | ST_PageOrientation (Page Orientation) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.66 | ST_Pitch (Font Pitch Value) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.67 | ST_PixelsMeasure (Measurement in Pixels) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.68 | ST_PointMeasure (Measurement in Points) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.69 | ST_Proof (Proofing State Values) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.70 | ST_ProofErr (Proofing Error Type) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.71 | ST_PTabAlignment (Absolute Position Tab Alignment) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.72 | ST_PTabLeader (Absolute Position Tab Leader Character) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.73 | ST_PTabRelativeTo (Absolute Position Tab Positioning Base) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.74 | ST_RestartNumber (Footnote/Endnote Numbering Restart Locations) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.75 | ST_RubyAlign (Phonetic Guide Text Alignment) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.76 | ST_SdtDateMappingType (Date Storage Format Types) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.77 | ST_SectionMark (Section Type) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.78 | ST_Shd (Shading Patterns) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.79 | ST_ShortHexNumber (Four Digit Hexadecimal Value) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.80 | ST_SignedHpsMeasure (Signed Measurement in Half-Points) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.81 | ST_SignedTwipsMeasure (Signed Measurement in Twentieths of a Point) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.82 | ST_StyleSort (Style Sort Settings) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.83 | ST_StyleType (Style Types) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.84 | ST_TabJc (Custom Tab Stop Type) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.85 | ST_TabTlc (Custom Tab Stop Leader Character) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.86 | ST_TargetScreenSz (Target Screen Sizes for Generated Web Pages) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.87 | ST_TblLayoutType (Table Layout Type) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.88 | ST_TblOverlap (Table Overlap Setting) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.89 | ST_TblStyleOverrideType (Conditional Table Style Formatting Types) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.90 | ST_TblWidth (Table Width Units) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.91 | ST_TextAlignment (Vertical Text Alignment Types) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.92 | ST_TextboxTightWrap (Lines To Tight Wrap Within Text Box) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.93 | ST_TextDirection (Text Flow Direction) | incomplete | 1 | 1 | The cell values are read (props.rs text_direction, test structure.rs vertical_text_directions); the rotated East Asian variants run across. |
| 17.18.94 | ST_TextEffect (Animated Text Effects) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.95 | ST_TextScale (Text Expansion/Compression Percentage) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.96 | ST_Theme (Theme Font) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.97 | ST_ThemeColor (Theme Color) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.98 | ST_UcharHexNumber (Two Digit Hexadecimal Value) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.99 | ST_Underline (Underline Patterns) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.100 | ST_VAnchor (Vertical Anchor Location) | implemented | 2 | 2 | vAnchor and vertAnchor are read into position bases (props.rs anchored_position, test fixtures.rs wrapping_frames_and_floating_tables_are_read). |
| 17.18.101 | ST_VerticalJc (Vertical Alignment Type) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.102 | ST_View (Document View Values) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.103 | ST_WmlColorSchemeIndex (Theme Color Reference) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.104 | ST_Wrap (Text Wrapping around Text Frame Type) | implemented | 2 | 2 | The frame wrap types are read (props.rs frame_properties) and laid out: around, auto and tight flow text beside the frame, notBeside moves it below, none lets it run under (flow.rs frame_float, tests fixtures.rs wrapping_frames_and_floating_tables_are_read, layout.rs text_frames_sit_apart_and_text_flows_around_them). |
| 17.18.105 | ST_Zoom (Magnification Preset Values) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.106 | ST_TextScalePercent (Text Expansion/Compression Percentage) | not implemented | 0 | 0 | No reader code cites this clause. |
| 17.18.107 | ST_MeasurementOrPercent (Measurement or Percentage Value) | not implemented | 0 | 0 | No reader code cites this clause. |
20 DrawingML - Framework Reference Material
| Clause | Feature | Status | Code citations | Test citations | Note |
|---|---|---|---|---|---|
| 20.4 | DrawingML - WordprocessingML Drawing | incomplete | 62 | 76 | Inline and anchored pictures and shapes with their extent, name, description, offsets, text box content and geometry are read and drawn, preset (all 186 presetShapeDefinitions.xml shapes, generated by crates/docboss-layout/tools/presets.py) and custom geometry turned and flipped by a:xfrm, with line ends, groups and drawing canvases with their members placed through each group's child coordinates, and linear and path gradient fills; text wraps around anchored objects in the body as the wrap rows say; picture and pattern fills are not. |
| 20.4.2 | Elements | incomplete | 49 | 58 | inline, anchor, extent, docPr, positionH, positionV, posOffset, the wrap elements and wrapPolygon, wsp, txbx, txbxContent, wgp, grpSp, grpSpPr and wpc are read; the other elements are not, as their rows say. |
| 20.4.2.1 | align (Relative Horizontal Alignment) | implemented | 2 | 4 | wp:align in positionH is read into DrawingPosition::align and layout places the object at the start, center or end of its base, inside and outside by page parity (story.rs drawing_children, flow.rs Frame::place; tests fixtures.rs word_aligned_text_box, layout.rs aligned_floats_sit_on_their_base). |
| 20.4.2.2 | align (Relative Vertical Alignment) | implemented | 2 | 2 | wp:align in positionV is read into DrawingPosition::align and layout places the object at the top, center or bottom of its base (story.rs drawing_children, flow.rs Frame::place; tests structure.rs drawing_alignment_and_bases, layout.rs aligned_floats_sit_on_their_base). |
| 20.4.2.3 | anchor (Anchor for Floating DrawingML Object) | incomplete | 2 | 4 | behindDoc, the positionH and positionV offsets, bases and alignments and the distances from the text are read (tests structure.rs drawings_and_media, drawing_alignment_and_bases, fixtures.rs wrapping_frames_and_floating_tables_are_read); simplePos and z-order are not. |
| 20.4.2.4 | cNvGraphicFramePr (Common DrawingML Non-Visual Properties) | not implemented | 0 | 0 | Not read. |
| 20.4.2.5 | docPr (Drawing Object Non-Visual Properties) | implemented | 2 | 1 | docPr name and descr are read into Drawing::name and description (story.rs drawing_children, test structure.rs drawings_and_media); a drawing marked hidden is left out and reported. |
| 20.4.2.6 | effectExtent (Object Extents Including Effects) | not implemented | 0 | 0 | effectExtent is not read; drawings take their extent alone. |
| 20.4.2.7 | extent (Drawing Object Size) | implemented | 1 | 1 | extent cx and cy are read into Drawing::width and height (story.rs drawing_children, test structure.rs drawings_and_media). |
| 20.4.2.8 | inline (Inline DrawingML Object) | implemented | 2 | 1 | Inline pictures are read with their extent and image (story.rs drawing_children, test structure.rs drawings_and_media). |
| 20.4.2.9 | lineTo (Wrapping Polygon Line End Position) | implemented | 1 | 1 | lineTo points are read into the wrap polygon (story.rs wrap, test fixtures.rs wrapping_frames_and_floating_tables_are_read). |
| 20.4.2.10 | positionH (Horizontal Positioning) | implemented | 2 | 3 | relativeFrom, posOffset and align are read into Drawing placement (story.rs drawing_children, tests structure.rs drawing_alignment_and_bases, fixtures.rs word_aligned_text_box); character positions are laid out from the column. |
| 20.4.2.11 | positionV (Vertical Positioning) | implemented | 2 | 2 | relativeFrom, posOffset and align are read into Drawing placement (story.rs drawing_children, tests structure.rs drawing_alignment_and_bases, fixtures.rs word_aligned_text_box); line positions are laid out from the paragraph's first line. |
| 20.4.2.12 | posOffset (Absolute Position Offset) | implemented | 1 | 1 | posOffset gives the anchor offset in EMU (story.rs drawing_children, test structure.rs drawings_and_media). |
| 20.4.2.13 | simplePos (Simple Positioning Coordinates) | not implemented | 0 | 0 | simplePos is not read. |
| 20.4.2.14 | start (Wrapping Polygon Start) | implemented | 1 | 1 | start is read as the wrap polygon's first point (story.rs wrap, test fixtures.rs wrapping_frames_and_floating_tables_are_read). |
| 20.4.2.15 | wrapNone (No Text Wrapping) | implemented | 2 | 1 | Read (story.rs wrap); text runs under or over the object (flow.rs register_floats). |
| 20.4.2.16 | wrapPolygon (Wrapping Polygon) | implemented | 3 | 3 | The polygon is read (story.rs wrap) and tight and through wrapping follow it across each line's height (wrap.rs outline_extent, tests fixtures.rs wrapping_frames_and_floating_tables_are_read, wrap.rs tight_wrapping_follows_the_polygon). |
| 20.4.2.17 | wrapSquare (Square Wrapping) | implemented | 3 | 5 | Read (story.rs wrap, test fixtures.rs wrapping_frames_and_floating_tables_are_read) and laid out: lines beside the object are shortened, or split in two when text flows on both sides, and move below it when no span is wide enough (paragraph.rs break_rows, wrap.rs band, tests wrap.rs and layout.rs square_wrapping_flows_text_on_both_sides, one_sided_and_top_and_bottom_wrapping, wrapping_moves_with_its_page, a_page_placed_picture_wraps_the_text_above_its_anchor). |
| 20.4.2.18 | wrapThrough (Through Wrapping) | implemented | 3 | 1 | Read (story.rs wrap, test fixtures.rs wrapping_frames_and_floating_tables_are_read) and laid out: lines beside the object are shortened, or split in two when text flows on both sides, and move below it when no span is wide enough (paragraph.rs break_rows, wrap.rs band, tests wrap.rs and layout.rs square_wrapping_flows_text_on_both_sides, one_sided_and_top_and_bottom_wrapping, wrapping_moves_with_its_page, a_page_placed_picture_wraps_the_text_above_its_anchor). Through wrapping follows the polygon like tight wrapping. |
| 20.4.2.19 | wrapTight (Tight Wrapping) | implemented | 3 | 3 | Read (story.rs wrap, test fixtures.rs wrapping_frames_and_floating_tables_are_read) and laid out: lines beside the object are shortened, or split in two when text flows on both sides, and move below it when no span is wide enough (paragraph.rs break_rows, wrap.rs band, tests wrap.rs and layout.rs square_wrapping_flows_text_on_both_sides, one_sided_and_top_and_bottom_wrapping, wrapping_moves_with_its_page, a_page_placed_picture_wraps_the_text_above_its_anchor). The wrap polygon gives the outline. |
| 20.4.2.20 | wrapTopAndBottom (Top and Bottom Wrapping) | implemented | 3 | 3 | Read (story.rs wrap, test fixtures.rs wrapping_frames_and_floating_tables_are_read) and laid out: lines beside the object are shortened, or split in two when text flows on both sides, and move below it when no span is wide enough (paragraph.rs break_rows, wrap.rs band, tests wrap.rs and layout.rs square_wrapping_flows_text_on_both_sides, one_sided_and_top_and_bottom_wrapping, wrapping_moves_with_its_page, a_page_placed_picture_wraps_the_text_above_its_anchor). |
| 20.4.2.21 | bg (Background Formatting) | not implemented | 0 | 0 | Not read. |
| 20.4.2.22 | bodyPr (Body Properties) | incomplete | 2 | 6 | lIns, tIns, rIns, bIns, anchor and a:spAutoFit are read, and text that overflows a box without spAutoFit is clipped to the box less its insets, as Word and LibreOffice draw it whatever vertOverflow and horzOverflow say (story.rs drawing_children, textbox.rs layout_text_box, paint.rs Renderer::render; tests layout.rs text_boxes_grow_to_fit_and_anchor_their_text, render.rs overflowing_text_box_content_is_clipped_to_its_insets). vert (vert, eaVert and mongolianVert top to bottom, vert270 bottom to top; wordArtVert runs across with a note) and upright are read; text turns with its shape's a:xfrm rotation, a vertical flip adding a half turn, through a transform the renderer applies to glyph outlines and images (textbox.rs text_map, paint.rs Renderer::turned; tests structure.rs vertical_text_directions, layout.rs text_boxes_turn_their_text, render.rs transforms_turn_rectangles_and_text); rot, wrap, columns and the other attributes are not read. |
| 20.4.2.23 | cNvCnPr (Non-Visual Connector Shape Drawing Properties) | not implemented | 0 | 0 | Not read. |
| 20.4.2.24 | cNvContentPartPr (Non-Visual Content Part Drawing Properties) | not implemented | 0 | 0 | Not read. |
| 20.4.2.25 | cNvFrPr (Non-Visual Graphic Frame Drawing Properties) | not implemented | 0 | 0 | Not read. |
| 20.4.2.26 | cNvGrpSpPr (Non-Visual Group Shape Drawing Properties) | not implemented | 0 | 0 | Not read. |
| 20.4.2.27 | cNvPr (Non-Visual Drawing Properties) | not implemented | 0 | 0 | Not read. |
| 20.4.2.28 | cNvSpPr (Non-Visual Drawing Properties for a Shape) | not implemented | 0 | 0 | Not read. |
| 20.4.2.29 | contentPart (Content Part) | not implemented | 0 | 0 | Not read. |
| 20.4.2.30 | extLst (Extension List) | not implemented | 0 | 0 | Not read. |
| 20.4.2.31 | graphicFrame (Graphical object container) | implemented | 1 | 1 | A group's graphic frame is read as a member at its wpg:xfrm box, holding the chart or diagram its graphic names (story/group.rs, test structure.rs group_graphic_frames_hold_charts). |
| 20.4.2.32 | grpSp (Group Shape) | implemented | 1 | 1 | Nested groups are read up to 16 deep; their members are placed through every group around them into the members of the outer drawing (story/group.rs StoryParser::group, model group.rs GroupFrame::place_through; tests structure.rs group_members_are_placed_through_their_groups, group.rs group_frames_place_children). |
| 20.4.2.33 | grpSpPr (Group Shape Properties) | implemented | 1 | 1 | The a:xfrm offset, extent, child offset, child extent, rotation and flips map the members' boxes; a child turned by a quarter scales along the swapped axes (story/group.rs group_transform, model group.rs GroupFrame::place; tests structure.rs group_members_are_placed_through_their_groups, group.rs group_frames_place_children). |
| 20.4.2.34 | linkedTxbx (Textual contents of shape) | not implemented | 0 | 0 | Not read. |
| 20.4.2.35 | spPr (Shape Properties) | incomplete | 1 | 2 | Solid fills, the outline with its dash, cap, join and line ends, the preset or custom geometry and the a:xfrm rotation and flips are read (story.rs shape_properties, geometry.rs) and drawn (drawn.rs shape_items; tests structure.rs shape_preset_geometry_transform_and_line_ends and shape_custom_geometry, layout.rs shapes_without_text_paint_their_geometry, render.rs preset_shapes_fill_and_stroke_their_outline); a:gradFill linear and path gradients with their stops and focus rectangle are read and painted per pixel (story.rs gradient_fill, shade.rs Shader; tests structure.rs shape_gradient_fill, render.rs gradient_fills_shade_across_the_shape); picture and pattern fills and effects are not. |
| 20.4.2.36 | style (Shape Style) | not implemented | 0 | 0 | Not read. |
| 20.4.2.37 | txbx (Textual contents of shape) | implemented | 1 | 1 | wps:txbx is read for its text box content (story.rs drawing_children, test structure.rs drawings_and_media). |
| 20.4.2.38 | txbxContent (Rich Text Box Content Container) | implemented | 3 | 4 | txbxContent is read as block content into Drawing::text_box (story.rs drawing_children, test structure.rs drawings_and_media). |
| 20.4.2.39 | wgp (WordprocessingML Shape Group) | implemented | 2 | 3 | A group's shapes, text boxes, pictures and nested groups become Drawing::members, laid out and painted in order at their boxes (story/group.rs, textbox.rs layout_group; tests structure.rs group_members_are_placed_through_their_groups, layout.rs groups_paint_their_members_in_place). |
| 20.4.2.40 | whole (Whole E2O Formatting) | not implemented | 0 | 0 | Not read. |
| 20.4.2.41 | wpc (WordprocessingML Drawing Canvas) | incomplete | 1 | 1 | A canvas's shapes, pictures and groups become members at their offsets in the canvas; an empty canvas keeps its extent (story/group.rs; test structure.rs canvas_members_keep_their_offsets); wpc:bg and wpc:whole are not read. |
| 20.4.2.42 | wsp (WordprocessingML Shape) | implemented | 1 | 1 | WordprocessingML shapes are read for their text box content (story.rs drawing_children, test structure.rs drawings_and_media) and drawn with their geometry, with or without text (test layout.rs shapes_without_text_paint_their_geometry). |
| 20.4.2.43 | xfrm (2D Transform for Graphic Frames) | not implemented | 0 | 0 | Not read. |
| 20.4.3 | Simple Types | incomplete | 13 | 18 | The alignment, relative positioning, wrap distance and wrap side types are read, as their rows say; ST_PositionOffset is not. |
| 20.4.3.1 | ST_AlignH (Relative Horizontal Alignment Positions) | implemented | 2 | 4 | left, center, right, inside and outside are read (story.rs position_align) and placed by layout (flow.rs Frame::place; tests structure.rs drawing_alignment_and_bases, layout.rs aligned_floats_sit_on_their_base). |
| 20.4.3.2 | ST_AlignV (Vertical Alignment Definition) | implemented | 2 | 2 | top, center, bottom, inside and outside are read (story.rs position_align) and placed by layout (flow.rs Frame::place; tests structure.rs drawing_alignment_and_bases, layout.rs aligned_floats_sit_on_their_base). |
| 20.4.3.3 | ST_PositionOffset (Absolute Position Offset Value) | not implemented | 0 | 0 | No reader code cites this type; positions and wrapping values are read only as the 20.4.2 rows say. |
| 20.4.3.4 | ST_RelFromH (Horizontal Relative Positioning) | implemented | 2 | 4 | Every value is read (story.rs position_base) and laid out against the page, margins, column or page margin areas (flow.rs Frame::horizontal; tests structure.rs drawing_alignment_and_bases, layout.rs aligned_floats_sit_on_their_base); character is laid out from the column. |
| 20.4.3.5 | ST_RelFromV (Vertical Relative Positioning) | implemented | 2 | 2 | Every value is read (story.rs position_base) and laid out against the page, margins, paragraph or margin areas (flow.rs Frame::vertical; tests structure.rs drawing_alignment_and_bases, layout.rs aligned_floats_sit_on_their_base); line is laid out from the paragraph's first line, insideMargin as the top margin and outsideMargin as the bottom margin. |
| 20.4.3.6 | ST_WrapDistance (Distance from Text) | implemented | 1 | 2 | distT, distB, distL and distR are read from wp:anchor and the wrap elements (story.rs wrap_distances, test fixtures.rs wrapping_frames_and_floating_tables_are_read) and keep text away (wrap.rs Exclusion). |
| 20.4.3.7 | ST_WrapText (Text Wrapping Location) | implemented | 4 | 4 | wrapText is read (story.rs wrap_side, test fixtures.rs wrapping_frames_and_floating_tables_are_read): both sides, left, right or the side with more room (wrap.rs band, tests wrap.rs square_wrapping_leaves_the_allowed_sides, layout.rs one_sided_and_top_and_bottom_wrapping). |
22 Shared MLs Reference Material
| Clause | Feature | Status | Code citations | Test citations | Note |
|---|---|---|---|---|---|
| 22.2 | Extended Properties | incomplete | 2 | 2 | Application, Company, Pages, Words and Characters are read into Metadata (parts.rs properties, test structure.rs document_properties); the other extended properties are not. |
| 22.2.2 | Elements | incomplete | 1 | 1 | Application, Company, Pages, Words and Characters are read; the other elements are not. |
ECMA-376 Part 2: Open Packaging Conventions (5th edition, 2021)
6 Abstract package model
| Clause | Feature | Status | Code citations | Test citations | Note |
|---|---|---|---|---|---|
| 6.2 | Parts | incomplete | 2 | 3 | Part names, media types and XML parts are read; growth hints are ignored and part name syntax is not validated. |
| 6.2.2 | Part names | incomplete | 1 | 2 | Part names resolve and compare case-insensitively (test structure.rs part_names_compare_case_insensitively); their syntax is not validated, so malformed names are read as written. |
| 6.2.3 | Media types | implemented | 1 | 1 | A part's media type comes from its Override, else the Default for its extension (package.rs content_type, test structure.rs part_names_compare_case_insensitively). |
| 6.2.4 | Growth hint | out of scope | 0 | 0 | Growth hints pad parts for in-place editing; readers ignore them. |
| 6.2.5 | XML usage | not implemented | 0 | 0 | The clause's XML restrictions are not enforced: a DOCTYPE is skipped rather than refused and any encoding the tokenizer can decode is accepted. |
| 6.3 | Part addressing | out of scope | 0 | 0 | Pack IRIs address parts from outside the package; docboss reads parts by name. |
| 6.3.2 | Pack scheme | out of scope | 0 | 0 | Pack IRIs address parts from outside the package; docboss reads parts by name. |
| 6.3.3 | Resolving a pack IRI to a resource | out of scope | 0 | 0 | Pack IRIs address parts from outside the package; docboss reads parts by name. |
| 6.3.4 | Composing a pack IRI | out of scope | 0 | 0 | Pack IRIs address parts from outside the package; docboss reads parts by name. |
| 6.3.5 | Equivalence | out of scope | 0 | 0 | Pack IRIs address parts from outside the package; docboss reads parts by name. |
| 6.4 | Resolving relative references | implemented | 3 | 2 | Relationship targets resolve against the source part's directory with dot segments removed and percent escapes decoded (package.rs resolve_target, unit test resolves_targets). |
| 6.4.2 | Base IRIs | implemented | 1 | 1 | The source part is the base IRI of its relationships (package.rs resolve_target, unit test resolves_targets). |
| 6.4.3 | Examples | out of scope | 0 | 1 | Informative examples; the unit test resolves_targets follows them. |
| 6.5 | Relationships | implemented | 5 | 3 | Package and part relationships are read by id with their type, target and target mode (package.rs, tests structure.rs and package.rs names_relationship_parts). |
| 6.5.2 | Relationships part | implemented | 2 | 1 | A part's relationships part name is derived from the part name, the package's being _rels/.rels (package.rs rels_name, unit test names_relationship_parts). |
| 6.5.3 | Relationship markup | implemented | 2 | 1 | Relationship Id, Type, Target and TargetMode are read; type URIs match on their last segment, so transitional and strict types agree (test structure.rs part_names_compare_case_insensitively). |
| 6.5.4 | Examples | out of scope | 0 | 0 | Informative examples. |
7 Physical package model
| Clause | Feature | Status | Code citations | Test citations | Note |
|---|---|---|---|---|---|
| 7.2 | Physical mapping guidelines | incomplete | 3 | 3 | Parts map to ZIP items by name and media types come from the Media Types stream; interleaved parts are not reassembled. |
| 7.2.1 | Using features of physical formats | out of scope | 0 | 0 | Guidance for designers of physical formats. |
| 7.2.2 | Mapped components | out of scope | 0 | 0 | Guidance for designers of physical formats. |
| 7.2.3 | Mapping media types to parts | implemented | 2 | 2 | [Content_Types].xml Default and Override elements are read (package.rs read_content_types, tests structure.rs part_names_compare_case_insensitively and write package.rs every_part_has_a_content_type). |
| 7.2.4 | Interleaving | not implemented | 0 | 0 | Interleaved parts (split into [n].piece items) are not reassembled; such a part is not found. |
| 7.2.5 | Mapping part names to physical package item names | implemented | 1 | 1 | A part name maps to the ZIP item of the same name without its leading slash (package.rs existing_name, test structure.rs part_names_compare_case_insensitively). |
| 7.3 | Mapping to a ZIP file | incomplete | 6 | 7 | Parts are read from and written to ZIP items with the Media Types stream; interleaved pieces and growth hints are not handled. |
| 7.3.2 | Mapping part data | implemented | 1 | 1 | Part data is the ZIP item's data (test structure.rs part_names_compare_case_insensitively). |
| 7.3.3 | ZIP item names | implemented | 1 | 1 | ZIP item names are decoded per APPNOTE and matched to part names (test structure.rs part_names_compare_case_insensitively). |
| 7.3.4 | Mapping logical item names to ZIP item names | implemented | 1 | 1 | The writer stores each part under its name without the leading slash (crates/docboss-write/src/package.rs, test package.rs every_part_has_a_content_type). |
| 7.3.5 | Mapping ZIP item names to logical item names | implemented | 1 | 2 | ZIP item names match part names case-insensitively (test structure.rs part_names_compare_case_insensitively). |
| 7.3.6 | ZIP package limitations | out of scope | 0 | 0 | Constraints on producers; the reader accepts ZIP64 archives and names beyond them. |
| 7.3.7 | Mapping the Media Types stream | implemented | 2 | 2 | The Media Types stream is the [Content_Types].xml item, read by the reader and written by the writer (tests structure.rs part_names_compare_case_insensitively and package.rs every_part_has_a_content_type). |
| 7.3.8 | Mapping the growth hint | out of scope | 0 | 0 | Growth hints pad parts for in-place editing; readers ignore them. |
8 Core properties
| Clause | Feature | Status | Code citations | Test citations | Note |
|---|---|---|---|---|---|
| 8.2 | Core Properties part | implemented | 1 | 1 | The core properties part is found through the package relationship (parts.rs properties, test structure.rs document_properties). |
| 8.3 | Core properties markup | incomplete | 3 | 3 | Title, subject, creator, keywords, description, lastModifiedBy, revision, created, modified and category are read; contentStatus, identifier, language, lastPrinted and version are not. |
| 8.3.2 | Support for versioning and extensibility | not implemented | 0 | 0 | Markup compatibility attributes in the core properties part are not processed. |
| 8.3.3 | coreProperties element | implemented | 1 | 1 | The coreProperties root is read (test structure.rs document_properties). |
| 8.3.4 | Core property elements | incomplete | 1 | 1 | Ten core property elements are read (test structure.rs document_properties); contentStatus, identifier, language, lastPrinted and version are not. |
10 Digital signatures
| Clause | Feature | Status | Code citations | Test citations | Note |
|---|---|---|---|---|---|
| 10.2 | Overview of OPC-specific restrictions and extensions to “XML-Signature Syntax and Processing” | out of scope | 0 | 0 | Digital signatures are not read or verified; reading content does not depend on them. |
| 10.3 | Choosing content to sign | out of scope | 0 | 0 | Digital signatures are not read or verified; reading content does not depend on them. |
| 10.4 | Digital signature parts | out of scope | 0 | 0 | Digital signatures are not read or verified; reading content does not depend on them. |
| 10.4.2 | Digital Signature Origin part | out of scope | 0 | 0 | Digital signatures are not read or verified; reading content does not depend on them. |
| 10.4.3 | Digital Signature XML Signature part | out of scope | 0 | 0 | Digital signatures are not read or verified; reading content does not depend on them. |
| 10.4.4 | Digital Signature Certificate part | out of scope | 0 | 0 | Digital signatures are not read or verified; reading content does not depend on them. |
| 10.5 | Digital signature markup | out of scope | 0 | 0 | Digital signatures are not read or verified; reading content does not depend on them. |
| 10.5.2 | Support for versioning and extensibility | out of scope | 0 | 0 | Digital signatures are not read or verified; reading content does not depend on them. |
| 10.5.3 | Signature element | out of scope | 0 | 0 | Digital signatures are not read or verified; reading content does not depend on them. |
| 10.5.4 | SignedInfo element | out of scope | 0 | 0 | Digital signatures are not read or verified; reading content does not depend on them. |
| 10.5.5 | CanonicalizationMethod element | out of scope | 0 | 0 | Digital signatures are not read or verified; reading content does not depend on them. |
| 10.5.6 | SignatureMethod element | out of scope | 0 | 0 | Digital signatures are not read or verified; reading content does not depend on them. |
| 10.5.7 | Reference element | out of scope | 0 | 0 | Digital signatures are not read or verified; reading content does not depend on them. |
| 10.5.8 | Transform element | out of scope | 0 | 0 | Digital signatures are not read or verified; reading content does not depend on them. |
| 10.5.9 | RelationshipReference element | out of scope | 0 | 0 | Digital signatures are not read or verified; reading content does not depend on them. |
| 10.5.10 | RelationshipsGroupReference element | out of scope | 0 | 0 | Digital signatures are not read or verified; reading content does not depend on them. |
| 10.5.11 | DigestMethod element | out of scope | 0 | 0 | Digital signatures are not read or verified; reading content does not depend on them. |
| 10.5.12 | Object element | out of scope | 0 | 0 | Digital signatures are not read or verified; reading content does not depend on them. |
| 10.5.13 | Manifest element | out of scope | 0 | 0 | Digital signatures are not read or verified; reading content does not depend on them. |
| 10.5.14 | SignatureProperty element | out of scope | 0 | 0 | Digital signatures are not read or verified; reading content does not depend on them. |
| 10.5.15 | SignatureTime element | out of scope | 0 | 0 | Digital signatures are not read or verified; reading content does not depend on them. |
| 10.5.16 | Format element | out of scope | 0 | 0 | Digital signatures are not read or verified; reading content does not depend on them. |
| 10.5.17 | Value element | out of scope | 0 | 0 | Digital signatures are not read or verified; reading content does not depend on them. |
| 10.5.18 | XPath element | out of scope | 0 | 0 | Digital signatures are not read or verified; reading content does not depend on them. |
| 10.6 | Relationships transform algorithm | out of scope | 0 | 0 | Digital signatures are not read or verified; reading content does not depend on them. |
| 10.7 | Digital signature example | out of scope | 0 | 0 | Digital signatures are not read or verified; reading content does not depend on them. |
| 10.8 | Generating signatures | out of scope | 0 | 0 | Digital signatures are not read or verified; reading content does not depend on them. |
| 10.9 | Validating signatures | out of scope | 0 | 0 | Digital signatures are not read or verified; reading content does not depend on them. |
ECMA-376 Part 3: Markup Compatibility and Extensibility (5th edition, 2015)
7 MCE Elements and Attributes
| Clause | Feature | Status | Code citations | Test citations | Note |
|---|---|---|---|---|---|
| 7.2 | Ignorable Attribute | not implemented | 0 | 0 | mc:Ignorable is not read; elements in namespaces the reader does not know are skipped whether or not they are ignorable. |
| 7.3 | ProcessContent Attribute | not implemented | 0 | 0 | ProcessContent is not read; the content of unknown elements is dropped. |
| 7.4 | MustUnderstand Attribute | not implemented | 0 | 0 | MustUnderstand is not read; documents that set it are not refused. |
| 7.5 | AlternateContent Element | implemented | 2 | 1 | AlternateContent is read at block, run and drawing level through one chooser (story.rs alternate_content, test structure.rs markup_compatibility_and_content_controls). |
| 7.6 | Choice Element | implemented | 1 | 1 | The first Choice whose Requires namespaces the reader understands is read (test structure.rs markup_compatibility_and_content_controls). |
| 7.7 | Fallback Element | implemented | 1 | 1 | Fallback is read when no Choice is understood (test structure.rs markup_compatibility_and_content_controls). |
9 Semantic Definitions and Reference Processing Model
| Clause | Feature | Status | Code citations | Test citations | Note |
|---|---|---|---|---|---|
| 9.1 | Overview | out of scope | 0 | 0 | Informative overview. |
| 9.2 | Step 1: Processing the Ignorable and ProcessContent Attributes | not implemented | 0 | 0 | Step 1 is not performed: Ignorable and ProcessContent are not read. |
| 9.3 | Step 2: Processing the AlternateContent, Choice and Fallback Elements | implemented | 2 | 3 | Choice and Fallback selection follows step 2 (story.rs alternate_content, test structure.rs markup_compatibility_and_content_controls). |
| 9.4 | Step 3: Processing the MustUnderstand Attribute and Creating the Output Document | not implemented | 0 | 0 | Step 3 is not performed: MustUnderstand is not checked. |
[MS-DOC]: Word (.doc) Binary File Format
2 Structures
| Clause | Feature | Status | Code citations | Test citations | Note |
|---|---|---|---|---|---|
| 2.1 | File Structure | incomplete | 7 | 4 | The WordDocument, table and Data streams, the summary streams and the Equation Native streams of the ObjectPool are read; other ObjectPool objects, custom XML, macros, signatures and IRM storages are not. |
| 2.1.1 | WordDocument Stream | implemented | 1 | 1 | The WordDocument stream holds the FIB, the text and the FKPs (document.rs, test read.rs text_matches_libreoffice). |
| 2.1.3 | Data Stream | implemented | 1 | 1 | The Data stream is read for PICF picture data (test read.rs inline_picture). |
| 2.1.4 | ObjectPool Storage | incomplete | 2 | 1 | The Equation Native stream of each object storage is read as an Equation Editor 3 equation and given to the preview picture of the field whose separator names the storage (document.rs equations, test read.rs equation_editor_objects); other embedded objects are not read. |
| 2.1.5 | Custom XML Data Storage | not implemented | 0 | 0 | Custom XML data storage is not read. |
| 2.1.6 | Summary Information Stream | implemented | 1 | 1 | SummaryInformation gives the title, author and other metadata (test read.rs metadata_and_format). |
| 2.1.7 | Document Summary Information Stream | incomplete | 1 | 0 | DocumentSummaryInformation gives the company and counts (property.rs); no DOC test checks those fields. |
| 2.1.8 | Encryption Stream | not implemented | 0 | 0 | Not read. |
| 2.1.9 | Macros Storage | out of scope | 0 | 0 | Macros are code, not content. |
| 2.1.10 | XML Signatures Storage | out of scope | 0 | 0 | Signatures are not read or verified; reading content does not depend on them. |
| 2.1.11 | Signatures Stream | out of scope | 0 | 0 | Signatures are not read or verified; reading content does not depend on them. |
| 2.1.12 | Information Rights Management Data Space Storage | not implemented | 0 | 0 | IRM-protected documents are not decrypted. |
| 2.1.13 | Protected Content Stream | not implemented | 0 | 0 | IRM-protected documents are not decrypted. |
| 2.2 | Fundamental Concepts | incomplete | 13 | 7 | CPs, PLCs, STTBs, sprm property storage, RC4 decryption and XOR obfuscation of Word 97 and later files are handled. |
| 2.2.1 | Character Position (CP) | implemented | 1 | 1 | CPs map to stream offsets through the piece table (text.rs, test read.rs text_matches_libreoffice). |
| 2.2.2 | PLC | implemented | 1 | 1 | PLCs are read as CP arrays with fixed-size data elements (document.rs plc, test read.rs text_matches_libreoffice). |
| 2.2.3 | Valid Selection | out of scope | 0 | 0 | Selection validity constrains editing, not reading. |
| 2.2.4 | STTB | implemented | 2 | 1 | Extended and non-extended STTBs are read with their extra data (sttb.rs, test read.rs font_table). |
| 2.2.5 | Property Storage | implemented | 4 | 2 | grpprls are walked with operand sizes from the spra bits (sprm.rs, unit tests and read.rs character_and_paragraph_formatting). |
| 2.2.6 | Encryption and Obfuscation (Password to Open) | incomplete | 5 | 2 | RC4 and RC4 CryptoAPI encryption are decrypted with the password (crypt.rs, test read.rs encrypted_documents), and XOR obfuscation undone with the docboss-crypt XOR array, the password tried through the document code page and by low bytes (document.rs deobfuscate, test read.rs xor_obfuscated_documents, fixtures made by tools/xor_obfuscate.py); password-protected Word 6 and 95 files are refused. |
| 2.3 | Document Parts | incomplete | 12 | 9 | All seven document parts are located by their CP ranges; no test has a header text box. |
| 2.3.1 | Main Document | implemented | 1 | 1 | The main document range comes first in the CP space (document.rs, test read.rs text_matches_libreoffice). |
| 2.3.2 | Footnotes | implemented | 2 | 2 | Footnote text is read per note through PlcffndTxt (document.rs, test read.rs notes_comments_fields_bookmarks). |
| 2.3.3 | Headers | implemented | 1 | 1 | Header and footer stories are read through Plcfhdd, each section inheriting unset ones from the previous section (document.rs, test read.rs sections_and_headers). |
| 2.3.4 | Comments | implemented | 2 | 2 | Comment text is read per comment through PlcfandTxt (document.rs, test read.rs notes_comments_fields_bookmarks). |
| 2.3.5 | Endnotes | implemented | 2 | 2 | Endnote text is read per note through PlcfendTxt (document.rs, test read.rs notes_comments_fields_bookmarks). |
| 2.3.6 | Textboxes | implemented | 2 | 1 | Text box stories are read through PlcftxbxTxt (document.rs, test read.rs floating_picture_and_text_box). |
| 2.3.7 | Header Textboxes | incomplete | 1 | 0 | Header text box stories are read through PlcfHdrtxbxTxt like main text boxes (document.rs); no test covers them. |
| 2.4 | Document Content | incomplete | 11 | 10 | Text, paragraph and cell boundaries, tables and direct and style formatting are read; VtHyperlink application data is not. |
| 2.4.1 | Retrieving Text | implemented | 2 | 2 | Text is retrieved piece by piece, 8-bit pieces through the FcCompressed mapping (story.rs, test read.rs text_matches_libreoffice). |
| 2.4.2 | Determining Paragraph Boundaries | implemented | 2 | 1 | Paragraph marks end paragraphs; PAPX runs give their properties (story.rs, test read.rs text_matches_libreoffice). |
| 2.4.3 | Overview of Tables | implemented | 3 | 2 | Table depth and TTP marks build rows and nested tables (story.rs, test read.rs tables_with_merges_and_nesting). |
| 2.4.4 | Determining Cell Boundaries | implemented | 1 | 1 | Cell marks end cells at each table depth (story.rs, test read.rs tables_with_merges_and_nesting). |
| 2.4.5 | Determining Row Boundaries | implemented | 1 | 1 | Row ends come from TTP paragraphs at each depth (story.rs, test read.rs tables_with_merges_and_nesting). |
| 2.4.6 | Applying Properties | implemented | 2 | 3 | Styles, CHPX and PAPX formatting and list properties are applied in the order the clause gives (story.rs, test read.rs character_and_paragraph_formatting). |
| 2.4.7 | Application Data For VtHyperlink | not implemented | 0 | 0 | VtHyperlink application data is not read; hyperlinks come from HYPERLINK fields. |
| 2.5 | The File Information Block | incomplete | 13 | 10 | FibBase, FibRgLw97 and FibRgFcLcb97 are read; FibRgW97, the later FibRgFcLcb blocks and FibRgCswNew are skipped by their counts. The Word 6 and 95 FIB (nFib below 0x00C1: counts at 0x34, 38 fc/lcb pairs at 0x58 in the Word 97 order) is read too (word6.rs fill_fib, test read.rs word6_formatting_sections_and_headers). |
| 2.5.1 | Fib | implemented | 1 | 3 | The FIB is read from the start of the WordDocument stream (fib.rs, test read.rs text_matches_libreoffice). |
| 2.5.2 | FibBase | implemented | 1 | 1 | FibBase gives wIdent, nFib, lid, the complex, encrypted, table stream and obfuscation flags and the encryption key (fib.rs, test read.rs text_matches_libreoffice). |
| 2.5.3 | FibRgW97 | not implemented | 0 | 0 | FibRgW97 is skipped by its count; nothing in it is needed. |
| 2.5.4 | FibRgLw97 | implemented | 2 | 1 | FibRgLw97 gives the character count of every document part (fib.rs, test read.rs text_matches_libreoffice). |
| 2.5.5 | FibRgFcLcb | implemented | 1 | 1 | The FibRgFcLcb pairs are read as far as cbRgFcLcb says (fib.rs, test read.rs text_matches_libreoffice). |
| 2.5.6 | FibRgFcLcb97 | implemented | 2 | 1 | The FibRgFcLcb97 offsets locate every table stream structure docboss reads (fib.rs, test read.rs text_matches_libreoffice). |
| 2.5.7 | FibRgFcLcb2000 | not implemented | 0 | 0 | Skipped by its count: nothing docboss reads lives there. |
| 2.5.8 | FibRgFcLcb2002 | not implemented | 0 | 0 | Skipped by its count: nothing docboss reads lives there. |
| 2.5.9 | FibRgFcLcb2003 | not implemented | 0 | 0 | Skipped by its count: nothing docboss reads lives there. |
| 2.5.10 | FibRgFcLcb2007 | not implemented | 0 | 0 | Skipped by its count: nothing docboss reads lives there. |
| 2.5.11 | FibRgCswNew | not implemented | 0 | 0 | Skipped by its count: nothing docboss reads lives there. |
| 2.5.12 | FibRgCswNewData2000 | not implemented | 0 | 0 | Skipped by its count: nothing docboss reads lives there. |
| 2.5.13 | FibRgCswNewData2007 | not implemented | 0 | 0 | Skipped by its count: nothing docboss reads lives there. |
| 2.5.14 | Determining the nFib | incomplete | 1 | 1 | Word 97 and later files are told from FibBase.nFib alone (fib.rs is_word97); FibRgCswNew.nFibNew is not consulted. |
| 2.5.15 | How to read the FIB | implemented | 4 | 2 | The FIB is read in the order the clause gives, each block sized by the count before it (fib.rs, test read.rs text_matches_libreoffice). |
| 2.6 | Single Property Modifiers | incomplete | 13 | 12 | The character, paragraph, table and section sprms that map to model properties are applied; the rest are skipped by their operand size, and picture sprms are not read. |
| 2.6.1 | Character Properties | incomplete | 1 | 3 | The sprms that map to model properties are applied (props.rs or table.rs, test read.rs character_and_paragraph_formatting); the others are skipped by their operand size. |
| 2.6.2 | Paragraph Properties | incomplete | 2 | 3 | The sprms that map to model properties are applied (props.rs or table.rs, test read.rs character_and_paragraph_formatting), the frame sprms among them (props.rs apply_frame_prl, test read.rs drop_cap_frames); the others are skipped by their operand size. |
| 2.6.3 | Table Properties | incomplete | 6 | 4 | The sprms that map to model properties are applied (props.rs or table.rs, test read.rs tables_with_merges_and_nesting), the floating table sprms among them (table.rs table_float, test read.rs shape_wrapping_and_floating_tables); the others are skipped by their operand size. |
| 2.6.4 | Section Properties | incomplete | 3 | 2 | The sprms that map to model properties are applied (props.rs or table.rs, test read.rs sections_and_headers); the others are skipped by their operand size. |
| 2.6.5 | Picture Properties | not implemented | 0 | 0 | Picture sprms are not read; pictures take their size from the PICF. |
| 2.7 | Document Properties | not implemented | 0 | 0 | The Dop is not read; document settings keep their defaults, such as the 720-twip default tab stop. |
| 2.7.1 | Dop | not implemented | 0 | 0 | The Dop is not read; document settings keep their defaults, such as the 720-twip default tab stop. |
| 2.7.2 | DopBase | not implemented | 0 | 0 | The Dop is not read; document settings keep their defaults, such as the 720-twip default tab stop. |
| 2.7.3 | Dop95 | not implemented | 0 | 0 | The Dop is not read; document settings keep their defaults, such as the 720-twip default tab stop. |
| 2.7.4 | Dop97 | not implemented | 0 | 0 | The Dop is not read; document settings keep their defaults, such as the 720-twip default tab stop. |
| 2.7.5 | Dop2000 | not implemented | 0 | 0 | The Dop is not read; document settings keep their defaults, such as the 720-twip default tab stop. |
| 2.7.6 | Dop2002 | not implemented | 0 | 0 | The Dop is not read; document settings keep their defaults, such as the 720-twip default tab stop. |
| 2.7.7 | Dop2003 | not implemented | 0 | 0 | The Dop is not read; document settings keep their defaults, such as the 720-twip default tab stop. |
| 2.7.8 | Dop2007 | not implemented | 0 | 0 | The Dop is not read; document settings keep their defaults, such as the 720-twip default tab stop. |
| 2.7.9 | Dop2010 | not implemented | 0 | 0 | The Dop is not read; document settings keep their defaults, such as the 720-twip default tab stop. |
| 2.7.10 | Dop2013 | not implemented | 0 | 0 | The Dop is not read; document settings keep their defaults, such as the 720-twip default tab stop. |
| 2.7.11 | Copts60 | not implemented | 0 | 0 | The Dop is not read; document settings keep their defaults, such as the 720-twip default tab stop. |
| 2.7.12 | Copts80 | not implemented | 0 | 0 | The Dop is not read; document settings keep their defaults, such as the 720-twip default tab stop. |
| 2.7.13 | Copts | not implemented | 0 | 0 | The Dop is not read; document settings keep their defaults, such as the 720-twip default tab stop. |
| 2.7.14 | Asumyi | not implemented | 0 | 0 | The Dop is not read; document settings keep their defaults, such as the 720-twip default tab stop. |
| 2.7.15 | Dogrid | not implemented | 0 | 0 | The Dop is not read; document settings keep their defaults, such as the 720-twip default tab stop. |
| 2.7.16 | DopTypography | not implemented | 0 | 0 | The Dop is not read; document settings keep their defaults, such as the 720-twip default tab stop. |
| 2.7.17 | DopMth | not implemented | 0 | 0 | The Dop is not read; document settings keep their defaults, such as the 720-twip default tab stop. |
| 2.8 | PLCs | incomplete | 27 | 18 | The PLCs for formatting, notes, comments, bookmarks, headers, sections, shapes, text boxes and pieces are read; Plcfld, proofing, factoid, revision and web PLCs are not. |
| 2.8.1 | Plcbkf | incomplete | 1 | 0 | Comment range starts (PlcfAtnBkf) are read (document.rs comment_references); no test checks the ranges. |
| 2.8.2 | Plcbkfd | not implemented | 0 | 0 | Factoid bookmarks are not read. |
| 2.8.3 | Plcbkl | incomplete | 1 | 0 | Comment range ends (PlcfAtnBkl) are read (document.rs comment_references); no test checks the ranges. |
| 2.8.4 | Plcbkld | not implemented | 0 | 0 | Factoid bookmarks are not read. |
| 2.8.5 | PlcBteChpx | implemented | 2 | 1 | The CHPX bin table locates the character FKPs (document.rs, test read.rs character_and_paragraph_formatting). |
| 2.8.6 | PlcBtePapx | implemented | 2 | 1 | The PAPX bin table locates the paragraph FKPs (document.rs, test read.rs character_and_paragraph_formatting). |
| 2.8.7 | PlcfandRef | implemented | 2 | 1 | Comment references are read with their ATRDPre10 author and bookmark data (document.rs, test read.rs notes_comments_fields_bookmarks). |
| 2.8.8 | PlcfandTxt | implemented | 1 | 1 | Comment text ranges are read (document.rs, test read.rs notes_comments_fields_bookmarks). |
| 2.8.9 | PlcfAsumy | out of scope | 0 | 0 | Auto summary data does not change content. |
| 2.8.10 | Plcfbkf | implemented | 2 | 1 | Bookmark starts are read (document.rs, test read.rs notes_comments_fields_bookmarks). |
| 2.8.11 | Plcfbkfd | not implemented | 0 | 0 | Factoid bookmarks are not read. |
| 2.8.12 | Plcfbkl | implemented | 1 | 1 | Bookmark ends are read (document.rs, test read.rs notes_comments_fields_bookmarks). |
| 2.8.13 | Plcfbkld | not implemented | 0 | 0 | Factoid bookmarks are not read. |
| 2.8.14 | Plcfcookie | out of scope | 0 | 0 | Cookie data does not change content. |
| 2.8.15 | PlcfcookieOld | out of scope | 0 | 0 | Cookie data does not change content. |
| 2.8.16 | PlcfendRef | implemented | 1 | 1 | Endnote references are read (document.rs, test read.rs notes_comments_fields_bookmarks). |
| 2.8.17 | PlcfendTxt | implemented | 1 | 1 | Endnote text ranges are read (document.rs, test read.rs notes_comments_fields_bookmarks). |
| 2.8.18 | Plcffactoid | not implemented | 0 | 0 | Smart tag factoids are not read; their text is. |
| 2.8.19 | PlcffndRef | implemented | 2 | 1 | Footnote references are read (document.rs, test read.rs notes_comments_fields_bookmarks). |
| 2.8.20 | PlcffndTxt | implemented | 1 | 1 | Footnote text ranges are read (document.rs, test read.rs notes_comments_fields_bookmarks). |
| 2.8.21 | Plcfgram | out of scope | 0 | 0 | Proofing state does not change content. |
| 2.8.22 | Plcfhdd | implemented | 2 | 1 | Header and footer ranges are read per section and story kind (document.rs, test read.rs sections_and_headers). |
| 2.8.23 | PlcfHdrtxbxTxt | incomplete | 1 | 0 | Header text box story ranges are read (document.rs); no test covers them. |
| 2.8.24 | Plcflad | out of scope | 0 | 0 | Language auto-detection state does not change content. |
| 2.8.25 | Plcfld | not implemented | 0 | 0 | Fields are found by their 0x13, 0x14 and 0x15 characters; Plcfld is not read. |
| 2.8.26 | PlcfSed | implemented | 2 | 2 | Section boundaries are read with each Sed's SEPX offset (document.rs, test read.rs sections_and_headers). |
| 2.8.27 | PlcfSpa | implemented | 2 | 2 | Shape anchors are read with their Spa data (document.rs, test read.rs floating_picture_and_text_box). |
| 2.8.28 | Plcfspl | out of scope | 0 | 0 | Proofing state does not change content. |
| 2.8.29 | PlcfTch | out of scope | 0 | 0 | The text cache does not change content. |
| 2.8.30 | PlcfTxbxBkd | not implemented | 0 | 0 | Linked text box chains are not followed; each text box story is read whole. |
| 2.8.31 | PlcfTxbxHdrBkd | not implemented | 0 | 0 | Linked text box chains are not followed; each text box story is read whole. |
| 2.8.32 | PlcftxbxTxt | implemented | 2 | 2 | Text box story ranges are read (document.rs, test read.rs floating_picture_and_text_box). |
| 2.8.33 | Plcfuim | not implemented | 0 | 0 | Not read. |
| 2.8.34 | PlcfWKB | not implemented | 0 | 0 | Not read. |
| 2.8.35 | PlcPcd | implemented | 1 | 1 | The piece table is read from the Clx (document.rs, test read.rs text_matches_libreoffice). |
| 2.9 | Basic Types | incomplete | 91 | 79 | Basic types are read where the structures above need them; each row says whether its type is. |
| 2.9.1 | Acd | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.2 | Afd | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.3 | ASUMY | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.4 | ATNBE | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.5 | AtrdExtra | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.6 | ATRDPost10 | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.7 | ATRDPre10 | implemented | 1 | 1 | ATRDPre10 gives each comment's author index and bookmark id (test read.rs notes_comments_fields_bookmarks). |
| 2.9.8 | BKC | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.9 | BKF | implemented | 1 | 1 | BKF entries pair bookmark starts with their ends (test read.rs notes_comments_fields_bookmarks). |
| 2.9.10 | BKFD | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.11 | BKL | implemented | 1 | 1 | BKL entries end bookmarks (test read.rs notes_comments_fields_bookmarks). |
| 2.9.12 | BKLD | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.13 | BlockSel | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.14 | Bool16 | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.15 | Bool8 | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.16 | Brc | incomplete | 1 | 1 | Brc values are read with their fShadow bit (props.rs brc; test props.rs border_shadow_bits); fFrame is not. |
| 2.9.17 | Brc80 | incomplete | 2 | 2 | Brc80 values are read for paragraph, cell and page borders (props.rs brc80; test props.rs page_borders_from_section_sprms), with fShadow; fFrame is not. |
| 2.9.18 | Brc80MayBeNil | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.19 | BrcCvOperand | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.20 | BrcMayBeNil | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.21 | BrcOperand | implemented | 1 | 1 | The BrcOperand of sprmSBrcTop to sprmSBrcRight is read past its cb byte into a page border side (props.rs apply_sep; test props.rs page_borders_from_section_sprms). |
| 2.9.22 | BrcType | incomplete | 1 | 1 | none, single, thick, double, dotted, dashed, dotDash, dotDotDash, dashSmallGap and dashDotStroked are read, and 0x40 to 0xE3 as art borders, which are not drawn (props.rs brc_style; test props.rs dashed_border_types); the other types are read as single. |
| 2.9.23 | BxPap | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.24 | CAPI | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.25 | CDB | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.26 | CellHideMarkOperand | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.27 | CellRangeFitText | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.28 | CellRangeNoWrap | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.29 | CellRangeTextFlow | implemented | 1 | 1 | sprmTTextFlow sets the text flow of its range of cells (table.rs RowInfo::parse, test table.rs cells_take_their_text_flow). |
| 2.9.30 | CellRangeVertAlign | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.31 | CFitTextOperand | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.32 | Chpx | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.33 | ChpxFkp | implemented | 3 | 1 | ChpxFkp pages give character runs and their CHPX (test read.rs character_and_paragraph_formatting). |
| 2.9.34 | Cid | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.35 | CidAllocated | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.36 | CidFci | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.37 | CidMacro | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.38 | Clx | implemented | 3 | 1 | The Clx is read as Prc entries then the Pcdt (test read.rs text_matches_libreoffice). |
| 2.9.39 | CMajorityOperand | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.40 | Cmt | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.41 | CNFOperand | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.42 | CNS | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.43 | COLORREF | implemented | 1 | 1 | COLORREF values become colors, fAuto giving auto (test read.rs character_and_paragraph_formatting). |
| 2.9.44 | COSL | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.45 | CSSA | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.46 | CSSAOperand | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.47 | CSymbolOperand | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.48 | CTB | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.49 | CTBWRAPPER | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.50 | Customization | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.51 | DCS | implemented | 1 | 2 | sprmPDcs's DCS gives a frame's drop cap type and lines (props.rs apply_frame_prl, test read.rs drop_cap_frames). |
| 2.9.52 | DefTableShd80Operand | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.53 | DefTableShdOperand | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.54 | DispFldRmOperand | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.55 | Dofr | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.56 | DofrFsn | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.57 | DofrFsnFnm | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.58 | DofrFsnName | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.59 | DofrFsnp | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.60 | DofrFsnSpbd | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.61 | Dofrh | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.62 | DofrRglstsf | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.63 | Dofrt | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.64 | DPCID | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.65 | DTTM | implemented | 1 | 1 | DTTM values become ISO 8601 dates (test read.rs notes_comments_fields_bookmarks). |
| 2.9.66 | FACTOIDINFO | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.67 | FactoidSpls | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.68 | FarEastLayoutOperand | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.69 | Fatl | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.70 | FBKF | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.71 | FBKFD | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.72 | FBKLD | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.73 | FcCompressed | implemented | 1 | 2 | FcCompressed selects 8-bit or UTF-16 pieces, 8-bit through the Windows-1252 exceptions (test read.rs text_matches_libreoffice). |
| 2.9.74 | FCCT | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.75 | Fci | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.76 | FCKS | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.77 | FCKSOLD | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.78 | FFData | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.79 | FFDataBits | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.80 | FFID | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.81 | FFM | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.82 | FFN | implemented | 4 | 1 | FFN entries give font names, families and pitch (test read.rs font_table). |
| 2.9.83 | FieldMapBase | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.84 | FieldMapDataItem | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.85 | FieldMapInfo | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.86 | FieldMapTerminator | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.87 | FilterDataItem | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.88 | Fld | implemented | 1 | 1 | Fld markers are folded into fields (test read.rs notes_comments_fields_bookmarks). |
| 2.9.89 | fldch | implemented | 1 | 1 | fldch values tell begin, separator and end (test read.rs notes_comments_fields_bookmarks). |
| 2.9.90 | flt | incomplete | 1 | 1 | Only flt 0x58 (HYPERLINK) changes how a field is read; other types keep their cached results. |
| 2.9.91 | FNFB | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.92 | FNIF | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.93 | FNPI | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.94 | FOBJH | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.95 | FrameTextFlowOperand | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.96 | FSDAP | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.97 | Fsnk | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.98 | Fssd | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.99 | FssUnits | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.100 | FTO | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.101 | Fts | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.102 | FtsWWidth_Indent | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.103 | FtsWWidth_Table | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.104 | FtsWWidth_TablePart | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.105 | FTXBXNonReusable | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.106 | FTXBXS | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.107 | FTXBXSReusable | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.108 | GOSL | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.109 | GrammarSpls | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.110 | grffldEnd | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.111 | grfhic | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.112 | GRFSTD | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.113 | GrLPUpxSw | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.114 | GrpPrlAndIstd | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.115 | HFD | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.116 | HFDBits | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.117 | Hplxsdr | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.118 | HresiOperand | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.119 | Ico | incomplete | 1 | 0 | Ico values are read (props.rs or text.rs); no test covers them. |
| 2.9.120 | IDPCI | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.121 | Ipat | incomplete | 1 | 1 | Clear and solid fill, and the percentage patterns (5% to 90%, 12.5%, 15%) mix the foreground into the background as LibreOffice paints them (props.rs pattern_fill, tests props.rs shading_patterns_mix_their_colors, read.rs word95_tables_merge_and_shade_their_cells); stripes, crosses and the other new percentages keep the background. |
| 2.9.122 | IScrollType | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.123 | ItcFirstLim | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.124 | Kcm | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.125 | Kme | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.126 | Kt | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.127 | Kul | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.128 | LadSpls | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.129 | LBCOperand | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.130 | LEGOXTR_V11 | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.131 | LFO | implemented | 1 | 1 | LFO entries become numbering instances (test read.rs list_labels). |
| 2.9.132 | LFOData | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.133 | LFOLVL | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.134 | LID | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.135 | LPStd | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.136 | LPStshi | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.137 | LPStshiGrpPrl | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.138 | LPUpxChpx | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.139 | LPUpxChpxRM | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.140 | LPUpxPapx | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.141 | LPUpxPapxRM | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.142 | LPUpxRm | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.143 | LPUpxTapx | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.144 | LPXCharBuffer9 | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.145 | LSD | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.146 | LSPD | implemented | 1 | 1 | LSPD gives line spacing and its rule (test read.rs character_and_paragraph_formatting). |
| 2.9.147 | LSTF | implemented | 1 | 1 | LSTF gives each list's id and level count (test read.rs list_labels). |
| 2.9.148 | Lstsf | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.149 | LVL | implemented | 2 | 1 | LVL gives each level's format, start, text and properties (test read.rs list_labels). |
| 2.9.150 | LVLF | implemented | 1 | 1 | LVLF gives each level's fixed fields (test read.rs list_labels). |
| 2.9.151 | MacroName | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.152 | MacroNames | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.153 | MathPrOperand | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.154 | Mcd | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.155 | MDP | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.156 | MFPF | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.157 | NilBrc | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.158 | NilPICFAndBinData | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.159 | NumRM | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.160 | NumRMOperand | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.161 | OcxInfo | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.162 | ODSOPropertyBase | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.163 | ODSOPropertyLarge | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.164 | ODSOPropertyStandard | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.165 | ODT | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.166 | ODTPersist1 | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.167 | ODTPersist2 | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.168 | OfficeArtClientAnchor | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.169 | OfficeArtClientData | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.170 | OfficeArtClientTextbox | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.171 | OfficeArtContent | incomplete | 2 | 1 | OfficeArtContent is read for the BLIP store and shape containers (document.rs shapes); shapes other than pictures and text boxes are dropped. |
| 2.9.172 | OfficeArtWordDrawing | implemented | 1 | 1 | OfficeArtWordDrawing gives each story's drawing container (test read.rs floating_picture_and_text_box). |
| 2.9.173 | PANOSE | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.174 | PapxFkp | implemented | 2 | 1 | PapxFkp pages give paragraph runs and their PAPX (test read.rs character_and_paragraph_formatting). |
| 2.9.175 | PapxInFkp | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.176 | PbiGrfOperand | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.177 | Pcd | implemented | 1 | 1 | Pcd entries give each piece's offset, compression and Prm (test read.rs text_matches_libreoffice). |
| 2.9.178 | Pcdt | implemented | 1 | 1 | The Pcdt holds the PlcPcd (test read.rs text_matches_libreoffice). |
| 2.9.179 | PChgTabsAdd | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.180 | PChgTabsDel | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.181 | PChgTabsDelClose | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.182 | PChgTabsOperand | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.183 | PChgTabsPapxOperand | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.184 | PgbApplyTo | implemented | 1 | 1 | pgbAllPages, pgbFirstPage and pgbAllButFirst are read into the page border display (props.rs apply_sep; test props.rs page_borders_from_section_sprms). |
| 2.9.185 | PgbOffsetFrom | implemented | 1 | 1 | pgbFromText and pgbFromEdge are read into what page border space is measured from (props.rs apply_sep; test props.rs page_borders_from_section_sprms). |
| 2.9.186 | PgbPageDepth | implemented | 1 | 1 | pgbAtFront and pgbAtBack are read into whether page borders are drawn behind the text (props.rs apply_sep; test props.rs page_borders_from_section_sprms). |
| 2.9.187 | PGPArray | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.188 | PGPInfo | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.189 | PGPOptions | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.190 | PICF | implemented | 1 | 1 | PICF gives a picture's size and scaling (test read.rs inline_picture). |
| 2.9.191 | PICF_Shape | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.192 | PICFAndOfficeArtData | implemented | 1 | 2 | PICFAndOfficeArtData leads to the picture's BLIP (test read.rs inline_picture). |
| 2.9.193 | PICMID | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.194 | PlcfGlsy | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.195 | PlfAcd | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.196 | PlfCosl | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.197 | PlfGosl | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.198 | PlfguidUim | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.199 | PlfKme | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.200 | PlfLfo | implemented | 1 | 1 | PlfLfo gives the list instances (test read.rs list_labels). |
| 2.9.201 | PlfLst | implemented | 2 | 1 | PlfLst gives the list definitions (test read.rs list_labels). |
| 2.9.202 | PlfMcd | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.203 | PLRSID | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.204 | Pmfs | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.205 | Pms | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.206 | PnFkpChpx | implemented | 1 | 1 | PnFkpChpx entries locate character FKP pages (test read.rs character_and_paragraph_formatting). |
| 2.9.207 | PnFkpPapx | implemented | 1 | 1 | PnFkpPapx entries locate paragraph FKP pages (test read.rs character_and_paragraph_formatting). |
| 2.9.208 | PositionCodeOperand | implemented | 1 | 3 | pcVert and pcHorz give the bases of frames and floating tables (props.rs position_code, tests read.rs drop_cap_frames, shape_wrapping_and_floating_tables). |
| 2.9.209 | Prc | incomplete | 1 | 0 | Prc values are read (props.rs or text.rs); no test covers them. |
| 2.9.210 | PrcData | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.211 | PrDrvr | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.212 | PrEnvLand | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.213 | PrEnvPort | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.214 | Prm | implemented | 1 | 1 | A piece's Prm is read (test read.rs text_matches_libreoffice). |
| 2.9.215 | Prm0 | incomplete | 2 | 1 | Prm0 values are read (props.rs or text.rs); no test covers them. |
| 2.9.216 | Prm1 | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.217 | PropRMark | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.218 | PropRMarkOperand | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.219 | ProtectionType | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.220 | PRTI | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.221 | PTIstdInfoOperand | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.222 | Rca | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.223 | RecipientBase | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.224 | RecipientDataItem | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.225 | RecipientInfo | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.226 | RecipientTerminator | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.227 | Rfs | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.228 | RgCdb | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.229 | RgxOcxInfo | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.230 | RmdThreading | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.231 | Rnc | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.232 | RouteSlip | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.233 | RouteSlipInfo | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.234 | RouteSlipProtectionEnum | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.235 | SBkcOperand | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.236 | SBOrientationOperand | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.237 | SClmOperand | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.238 | SDmBinOperand | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.239 | SDTI | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.240 | SDTT | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.241 | SDxaColSpacingOperand | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.242 | SDxaColWidthOperand | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.243 | Sed | implemented | 1 | 1 | Sed entries give each section's SEPX offset (test read.rs sections_and_headers). |
| 2.9.244 | Selsf | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.245 | Sepx | implemented | 1 | 1 | SEPX grpprls give section properties (test read.rs sections_and_headers). |
| 2.9.246 | SFpcOperand | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.247 | Shd | incomplete | 1 | 1 | Shd values are read, their pattern mixed as the Ipat row says (props.rs shd, test props.rs shading_patterns_mix_their_colors). |
| 2.9.248 | Shd80 | incomplete | 1 | 2 | Shd80 values are read, their pattern mixed as the Ipat row says (props.rs shd80, tests props.rs shading_patterns_mix_their_colors, read.rs word95_tables_merge_and_shade_their_cells). |
| 2.9.249 | SHDOperand | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.250 | SLncOperand | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.251 | SmartTagData | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.252 | SortColumnAndDirection | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.253 | Spa | implemented | 2 | 2 | Spa entries give floating shape anchors, ids, the bx and by origins of each axis, and wr and wrk the wrapping; fBelowText counts only when wr is 3 (document.rs shapes, tests read.rs floating_picture_and_text_box, shape_wrapping_and_floating_tables). |
| 2.9.254 | SpellingSpls | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.255 | SPgbPropOperand | implemented | 1 | 1 | pgbApplyTo, pgbPageDepth and pgbOffsetFrom are read from sprmSPgbProp (props.rs apply_sep; test props.rs page_borders_from_section_sprms). |
| 2.9.256 | SPLS | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.257 | SPPOperand | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.258 | STD | implemented | 2 | 1 | STD entries give each style's kind, base, next, name and UPXs (test read.rs character_and_paragraph_formatting). |
| 2.9.259 | Stdf | implemented | 1 | 1 | Stdf fields give each style's kind and links (test read.rs character_and_paragraph_formatting). |
| 2.9.260 | StdfBase | implemented | 1 | 1 | StdfBase is read with the size STSHI states (test read.rs character_and_paragraph_formatting). |
| 2.9.261 | StdfPost2000 | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.262 | StdfPost2000OrNone | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.263 | StkCharGRLPUPX | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.264 | StkCharLPUpxGrLPUpxRM | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.265 | StkCharUpxGrLPUpxRM | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.266 | StkListGRLPUPX | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.267 | StkParaGRLPUPX | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.268 | StkParaLPUpxGrLPUpxRM | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.269 | StkParaUpxGrLPUpxRM | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.270 | StkTableGRLPUPX | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.271 | STSH | implemented | 3 | 1 | The STSH is read into model styles (test read.rs character_and_paragraph_formatting). |
| 2.9.272 | STSHI | implemented | 1 | 1 | STSHI gives the style count, base size and default fonts (test read.rs character_and_paragraph_formatting). |
| 2.9.273 | STSHIB | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.274 | Stshif | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.275 | StshiLsd | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.276 | SttbfAssoc | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.277 | SttbfAtnBkmk | implemented | 1 | 1 | SttbfAtnBkmk names comment range bookmarks (test read.rs notes_comments_fields_bookmarks). |
| 2.9.278 | SttbfAutoCaption | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.279 | SttbfBkmk | implemented | 1 | 1 | SttbfBkmk gives bookmark names (test read.rs notes_comments_fields_bookmarks). |
| 2.9.280 | SttbfBkmkBPRepairs | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.281 | SttbfBkmkFactoid | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.282 | SttbfBkmkFcc | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.283 | SttbfBkmkProt | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.284 | SttbfBkmkSdt | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.285 | SttbfCaption | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.286 | SttbfFfn | implemented | 1 | 1 | SttbfFfn is read into FontEntry values (test read.rs font_table). |
| 2.9.287 | SttbfGlsy | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.288 | SttbFnm | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.289 | SttbfRfs | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.290 | SttbfRMark | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.291 | SttbGlsyStyle | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.292 | SttbListNames | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.293 | SttbProtUser | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.294 | SttbRgtplc | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.295 | SttbSavedBy | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.296 | SttbTtmbd | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.297 | SttbW6 | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.298 | StwUser | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.299 | Sty | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.300 | TabJC | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.301 | TabLC | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.302 | TableBordersOperand | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.303 | TableBordersOperand80 | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.304 | TableBrc80Operand | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.305 | TableBrcOperand | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.306 | TableCellWidthOperand | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.307 | TableSel | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.308 | TableShadeOperand | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.309 | TBC | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.310 | TBD | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.311 | TBDelta | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.312 | Tbkd | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.313 | TC80 | implemented | 4 | 2 | TC80 gives each cell's merge flags, width and borders (test read.rs tables_with_merges_and_nesting). |
| 2.9.314 | TCellBrcTypeOperand | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.315 | Tcg | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.316 | Tcg255 | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.317 | TCGRF | implemented | 2 | 3 | TCGRF gives horizontal and vertical merge flags and the text flow (tests read.rs tables_with_merges_and_nesting, table.rs cells_take_their_text_flow). |
| 2.9.318 | TcgSttbf | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.319 | TcgSttbfCore | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.320 | Tch | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.321 | TDefTableOperand | implemented | 2 | 2 | TDefTableOperand gives cell edges and TC80s (test read.rs tables_with_merges_and_nesting). |
| 2.9.322 | TDxaColOperand | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.323 | TextFlow | implemented | 2 | 1 | grpfTFtbrl and grpfTFtbrlv turn a cell's text top to bottom, grpfTFbtlr bottom to top; the East Asian variants are read as the plain flows (table.rs text_direction, test table.rs cells_take_their_text_flow). |
| 2.9.324 | TInsertOperand | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.325 | TIQ | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.326 | TLP | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.327 | ToggleOperand | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.328 | Tplc | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.329 | TplcBuildIn | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.330 | TplcUser | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.331 | Ttmbd | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.332 | UFEL | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.333 | UID | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.334 | UidSel | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.335 | UIM | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.336 | UpxChpx | implemented | 1 | 1 | UpxChpx gives a style's character grpprl (test read.rs character_and_paragraph_formatting). |
| 2.9.337 | UPXPadding | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.338 | UpxPapx | implemented | 1 | 1 | UpxPapx gives a style's paragraph grpprl (test read.rs character_and_paragraph_formatting). |
| 2.9.339 | UpxRm | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.340 | UpxTapx | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.341 | VerticalAlign | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.342 | VerticalMergeFlag | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.343 | VertMergeOperand | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.344 | Vjc | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.345 | WHeightAbs | implemented | 1 | 1 | sprmPWHeightAbs gives a frame's height and whether it is a minimum (props.rs apply_frame_prl). |
| 2.9.346 | WKB | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.347 | Wpms | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.348 | Wpmsdt | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.349 | XAS | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.350 | XAS_nonNeg | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.351 | XAS_plusOne | implemented | 1 | 2 | sprmPDxaAbs and sprmTDxaAbs are read as XAS_plusOne, their special values as alignments (props.rs plus_one_position, test read.rs shape_wrapping_and_floating_tables). |
| 2.9.352 | XSDR | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.353 | Xst | implemented | 2 | 1 | Xst strings give comment authors (test read.rs notes_comments_fields_bookmarks). |
| 2.9.354 | Xstz | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.355 | YAS | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.356 | YAS_nonNeg | not implemented | 0 | 0 | No reader code cites this structure; it is not read, or is read only inside a structure whose row names it. |
| 2.9.357 | YAS_plusOne | implemented | 1 | 2 | sprmPDyaAbs and sprmTDyaAbs are read as YAS_plusOne, their special values as alignments and 0 as inline (props.rs plus_one_position, test read.rs shape_wrapping_and_floating_tables). |
[MS-CFB]: Compound File Binary File Format
2 Structures
| Clause | Feature | Status | Code citations | Test citations | Note |
|---|---|---|---|---|---|
| 2.1 | Compound File Sector Numbers and Types | implemented | 1 | 1 | FREESECT, ENDOFCHAIN, FATSECT and DIFSECT end or skip chains; a chain that loops or runs past the file is cut and reported (tests cfb.rs walks_the_directory_of_a_word_file and fat_loops_are_cut). |
| 2.2 | Compound File Header | implemented | 5 | 4 | Signature, version, sector shifts, the FAT, directory, mini FAT and DIFAT locations and the first 109 DIFAT entries are read for v3 and v4 files (lib.rs parse, test cfb.rs walks_the_directory_of_a_word_file). |
| 2.3 | Compound File FAT Sectors | implemented | 2 | 2 | FAT sectors are read and chains followed with loop detection (tests cfb.rs walks_the_directory_of_a_word_file and fat_loops_are_cut). |
| 2.4 | Compound File Mini FAT Sectors | implemented | 2 | 1 | The mini FAT and the mini stream held by the root entry serve streams below the cutoff (test cfb.rs walks_the_directory_of_a_word_file). |
| 2.5 | Compound File DIFAT Sectors | implemented | 2 | 1 | DIFAT sectors after the header's 109 entries are followed to find every FAT sector (lib.rs parse, test cfb.rs walks_the_directory_of_a_word_file). |
| 2.6 | Compound File Directory Sectors | implemented | 8 | 5 | Directory sectors are read into entries with names, types, sizes and sibling and child links (test cfb.rs walks_the_directory_of_a_word_file). |
| 2.6.1 | Compound File Directory Entry | implemented | 3 | 1 | Directory entries are read with their name, object type, links, start sector and size (directory.rs, test cfb.rs walks_the_directory_of_a_word_file). |
| 2.6.2 | Root Directory Entry | implemented | 1 | 1 | The root entry's start sector and size locate the mini stream (test cfb.rs walks_the_directory_of_a_word_file). |
| 2.6.3 | Other Directory Entries | implemented | 1 | 1 | Storage and stream entries are read and opened by path (test cfb.rs walks_the_directory_of_a_word_file). |
| 2.6.4 | Red-Black Tree | implemented | 2 | 1 | Children are walked through the sibling tree in order and names compare case-insensitively (lib.rs children, test cfb.rs lookup_ignores_case). |
| 2.7 | Compound File User-Defined Data Sectors | out of scope | 0 | 0 | User-defined data sectors are ordinary sectors of their stream's chain; nothing more to read. |
| 2.8 | Compound File Range Lock Sector | out of scope | 0 | 0 | The range lock sector is never read. |
| 2.9 | Compound File Size Limits | not implemented | 0 | 0 | The size limits are not enforced; reads are bounded by the file's length. |
[MS-OLEPS]: Object Linking and Embedding (OLE) Property Set Data Structures
2 Structures
| Clause | Feature | Status | Code citations | Test citations | Note |
|---|---|---|---|---|---|
| 2.1 | PropertyIdentifier | implemented | 1 | 1 | Property identifiers 2 to 19 map to metadata fields (property.rs read_metadata, test cfb.rs reads_summary_metadata). |
| 2.2 | PropertyType | implemented | 1 | 1 | The property type selects the value decoder (property.rs parse_value, test cfb.rs reads_summary_metadata). |
| 2.3 | CURRENCY (Packet Version) | not implemented | 0 | 0 | Not read: the metadata docboss models uses none of it. |
| 2.4 | DATE (Packet Version) | not implemented | 0 | 0 | Not read: the metadata docboss models uses none of it. |
| 2.5 | CodePageString | implemented | 1 | 1 | CodePageString values decode through the set's code page, with 874, 1250 to 1258, Mac Roman, UTF-8, UTF-16 and the CJK code pages supported (codepage.rs, test cfb.rs reads_summary_metadata). |
| 2.6 | DECIMAL (Packet Version) | not implemented | 0 | 0 | Not read: the metadata docboss models uses none of it. |
| 2.7 | UnicodeString | incomplete | 1 | 0 | UnicodeString values decode (property.rs parse_value); no test file stores one. |
| 2.8 | FILETIME (Packet Version) | implemented | 1 | 1 | FILETIME values become ISO 8601 dates (time.rs, unit test filetime_epoch_and_known_dates). |
| 2.9 | BLOB | not implemented | 0 | 0 | Not read: the metadata docboss models uses none of it. |
| 2.10 | IndirectPropertyName | not implemented | 0 | 0 | Not read: the metadata docboss models uses none of it. |
| 2.11 | ClipboardData | not implemented | 0 | 0 | Not read: the metadata docboss models uses none of it. |
| 2.12 | GUID (Packet Version) | not implemented | 0 | 0 | Not read: the metadata docboss models uses none of it. |
| 2.13 | VersionedStream | not implemented | 0 | 0 | Not read: the metadata docboss models uses none of it. |
| 2.14 | Vector and Array Property Types | not implemented | 0 | 0 | Not read: the metadata docboss models uses none of it. |
| 2.14.1 | Property Types in Variable-Typed Vectors and Arrays | not implemented | 0 | 0 | Not read: the metadata docboss models uses none of it. |
| 2.14.2 | VectorHeader | not implemented | 0 | 0 | Not read: the metadata docboss models uses none of it. |
| 2.14.3 | ArrayDimension | not implemented | 0 | 0 | Not read: the metadata docboss models uses none of it. |
| 2.14.4 | ArrayHeader | not implemented | 0 | 0 | Not read: the metadata docboss models uses none of it. |
| 2.15 | TypedPropertyValue | incomplete | 4 | 2 | VT_I2, VT_I4, VT_UI4, VT_BOOL, VT_FILETIME, VT_LPSTR and VT_LPWSTR decode; other types are kept as Value::Other and reported (property.rs parse_value). |
| 2.16 | DictionaryEntry | not implemented | 0 | 0 | Not read: the metadata docboss models uses none of it. |
| 2.17 | Dictionary | not implemented | 0 | 0 | Not read: the metadata docboss models uses none of it. |
| 2.18 | Special Properties | incomplete | 1 | 1 | Only the CodePage property is read among the special properties. |
| 2.18.1 | Dictionary Property | not implemented | 0 | 0 | Not read: the metadata docboss models uses none of it. |
| 2.18.2 | CodePage Property | implemented | 1 | 1 | The CodePage property selects the decoding of the set's strings (test cfb.rs reads_summary_metadata). |
| 2.18.3 | Locale Property | not implemented | 0 | 0 | Not read: the metadata docboss models uses none of it. |
| 2.18.4 | Behavior Property | not implemented | 0 | 0 | Not read: the metadata docboss models uses none of it. |
| 2.19 | PropertyIdentifierAndOffset | implemented | 1 | 1 | Property identifier and offset pairs locate each value (test cfb.rs reads_summary_metadata). |
| 2.20 | PropertySet | implemented | 2 | 2 | A property set's size, count and pairs are read with bounds checks (property.rs parse_set, test cfb.rs reads_summary_metadata). |
| 2.21 | PropertySetStream | incomplete | 2 | 2 | The stream header and the first property set are read (test cfb.rs reads_summary_metadata); the user-defined second set of DocumentSummaryInformation is not. |
| 2.22 | Non-Simple Property Set Storage Format | not implemented | 0 | 0 | Not read: the metadata docboss models uses none of it. |
| 2.23 | Property Set Stream and Storage Names | implemented | 1 | 1 | The summary streams are opened by their names with the 0x05 prefix (test cfb.rs reads_summary_metadata). |
| 2.24 | Standard Bindings | not implemented | 0 | 0 | Not read: the metadata docboss models uses none of it. |
| 2.24.1 | Compound File Binding | not implemented | 0 | 0 | Not read: the metadata docboss models uses none of it. |
| 2.24.2 | Alternate Stream Binding | not implemented | 0 | 0 | Not read: the metadata docboss models uses none of it. |
| 2.24.3 | Control Stream | not implemented | 0 | 0 | Not read: the metadata docboss models uses none of it. |
| 2.24.4 | Simple Property Set Stream | not implemented | 0 | 0 | Not read: the metadata docboss models uses none of it. |
| 2.24.5 | Non-Simple Property Set Storage | not implemented | 0 | 0 | Not read: the metadata docboss models uses none of it. |
| 2.25 | Well-Known Property Set Formats | incomplete | 1 | 1 | SummaryInformation and the DocumentSummaryInformation fields docboss models are read; PropertyBag is not. |
| 2.25.1 | SummaryInformation | implemented | 1 | 1 | Title, subject, author, keywords, comments, last author, revision, application, dates and counts are read into Metadata (test cfb.rs reads_summary_metadata). |
| 2.25.2 | PropertyBag | not implemented | 0 | 0 | Not read: the metadata docboss models uses none of it. |
[MS-OSHARED]: Office Common Data Types and Objects Structures
2 Structures
| Clause | Feature | Status | Code citations | Test citations | Note |
|---|---|---|---|---|---|
| 2.1 | Common ABNF Definitions | not implemented | 0 | 0 | Not used by the DOC reader. |
| 2.2 | Data Types | incomplete | 1 | 1 | MSONFC list number formats map to model formats (lists.rs, test read.rs list_labels); the other data types are not used. |
| 2.3 | Common Objects | not implemented | 0 | 0 | Not used by the DOC reader. |
| 2.4 | Common Algorithms | not implemented | 0 | 0 | Not used by the DOC reader. |
[MS-ODRAW]: Office Drawing Binary File Format
2 Structures
| Clause | Feature | Status | Code citations | Test citations | Note |
|---|---|---|---|---|---|
| 2.1 | Custom OfficeArt Types | not implemented | 0 | 0 | Not read. |
| 2.2 | OfficeArt Record Types | incomplete | 14 | 7 | Record headers, containers, BLIP records and the BLIP store are read for pictures, shape ids for text boxes, the OfficeArtFSP shape type and flips for drawn shapes, and group containers with their OfficeArtFSPGR coordinate space and the OfficeArtChildAnchor of each member, nested groups included (picture.rs shape_groups, story.rs group_members; tests read.rs inline_picture, floating_picture_and_text_box and group_members_and_shaded_fill, picture.rs shape_type_flips_rotation_and_line_ends); shapes that are neither pictures, text boxes, preset shape types nor groups are dropped and reported. |
| 2.3 | Properties | incomplete | 43 | 35 | The pib property, the fill, line and text frame properties, lineDashing, lineJoinStyle and lineEndCapStyle, the line end properties, rotation, the shaded fills (fillType msofillShade to msofillShadeTitle with fillBackColor, fillAngle and fillFocus, drawn as gradients; test read.rs group_members_and_shaded_fill), txflTextFlow (test picture.rs shape_format_reads_fill_line_insets_and_anchor), adjustValue to adjust8Value for the shape types whose preset guides take them as the same fraction (inline.rs Geometry::from_shape_type_adjusted; tests picture.rs shape_type_flips_rotation_and_line_ends, inline.rs shape_type_adjust_values_carry_over), posh, posrelh, posv and posrelv, and the wrap distances dxWrapDistLeft, dyWrapDistTop, dxWrapDistRight and dyWrapDistBottom (test read.rs shape_wrapping_and_floating_tables) of OfficeArtFOPT and OfficeArtTertiaryFOPT are read (picture.rs); the others are not. |
| 2.4 | Enumerations | incomplete | 11 | 10 | MSOLINEDASHING, MSOLINEJOIN, MSOLINECAP, MSOLINEEND, MSOLINEENDWIDTH and MSOLINEENDLENGTH are read for shape outlines, MSOFILLTYPE for shaded fills, MSOTXFL for text box flow, and MSOSPT maps shape types to DrawingML preset geometries for DOC shapes and VML (picture.rs line_dashing, shape_format and line_end, inline.rs Geometry::from_shape_type; tests picture.rs shape_format_reads_line_dashing_join_and_cap and shape_type_flips_rotation_and_line_ends, inline.rs shape_types_name_presets); the other enumerations are not. |
| 2.5 | Algorithms | not implemented | 0 | 0 | Not read. |
[MS-WMF]: Windows Metafile Format
2 Structures
| Clause | Feature | Status | Code citations | Test citations | Note |
|---|---|---|---|---|---|
| 2.1 | WMF Constants | incomplete | 1 | 1 | RecordType, BinaryRasterOperation (R2_BLACK, R2_WHITE, R2_NOP and copy; other mix modes are drawn as copy), BrushStyle, CharacterSet (the symbol character set maps to the symbol-font private-use codes), MapMode, PenStyle (styles, caps and joins), PolyFillMode, TernaryRasterOperation (SRCCOPY, SRCPAINT and SRCAND as black or white keyed out, NOTSRCCOPY, PATCOPY, BLACKNESS, WHITENESS; others noted), ExtTextOutOptions and TextAlignmentMode are read (docboss-metafile dc.rs, wmf.rs); the other enumerations are not needed for drawing or are ignored. |
| 2.2 | WMF Objects | incomplete | 4 | 1 | Brush, Font and Pen objects, the DeviceIndependentBitmap with BitmapCoreHeader, BitmapInfoHeader, BitmapV4Header and BitmapV5Header (1 to 32 bits, bit fields, RLE4 and RLE8; bitmap.rs, tests bitmap.rs), LogBrush, PolyPolygon, PointS and Rect are read. Palette and Region objects only hold their table slot; Bitmap16 pattern brushes fill grey; DIB pattern brushes fill with the bitmap's average color. |
| 2.3 | WMF Records | incomplete | 20 | 3 | Records are played through a device context model into paths, text and bitmaps that the layout scales into the picture's rectangle (docboss-metafile wmf.rs, dc.rs; docboss-layout metafile.rs; tests tests/play.rs). What is left out is listed per record class below and reported as a diagnostic per picture. |
| 2.3.1 | Bitmap Record Types | incomplete | 1 | 0 | META_DIBBITBLT, META_DIBSTRETCHBLT and META_STRETCHDIB are drawn, with or without a bitmap (without one they paint the brush); META_BITBLT and META_STRETCHBLT with a Bitmap16 and META_SETDIBTODEV are reported and not drawn. |
| 2.3.2 | Control Record Types | implemented | 3 | 1 | META_PLACEABLE gives the frame and its units per inch; a file without it takes its frame from the first window origin and extent. META_HEADER is checked and META_EOF ends playback (wmf.rs; test tests/play.rs wmf_records_draw_the_same_shapes). |
| 2.3.3 | Drawing Record Types | incomplete | 9 | 0 | META_ARC, META_CHORD, META_ELLIPSE, META_EXTTEXTOUT (advances, opaque and clip rectangles), META_LINETO, META_PATBLT, META_PIE, META_POLYLINE, META_POLYGON, META_POLYPOLYGON, META_RECTANGLE, META_ROUNDRECT, META_SETPIXEL and META_TEXTOUT are drawn. The region records (META_FILLREGION, META_FRAMEREGION, META_INVERTREGION, META_PAINTREGION) and the flood fills are reported and not drawn. |
| 2.3.4 | Object Record Types | incomplete | 4 | 0 | Pens, brushes and fonts are created into the lowest free slot of the object table, selected and deleted; palettes and regions only hold their slot, META_SELECTCLIPREGION clears the clip and META_SELECTPALETTE is ignored. |
| 2.3.5 | State Record Types | incomplete | 1 | 0 | Window origin, extent, offset and scale, the map mode, background mode and color, text color and alignment, fill mode, mix mode, the current position, META_INTERSECTCLIPRECT and META_SAVEDC and META_RESTOREDC are played. The viewport stays the picture's frame, so the viewport records are ignored; META_EXCLUDECLIPRECT and META_OFFSETCLIPRGN are reported and ignored; palette, layout, mapper flag, text character extra and justification records are ignored. |
| 2.3.6 | Escape Record Types | incomplete | 1 | 2 | META_ESCAPE_ENHANCED_METAFILE: when the escape records carry a whole EMF it is played in place of the WMF records (wmf.rs embedded_emf; test tests/play.rs wmf_plays_the_emf_its_escapes_carry). The other escapes are printer driver requests and are ignored. |
[MS-EMF]: Enhanced Metafile Format
2 Structures
| Clause | Feature | Status | Code citations | Test citations | Note |
|---|---|---|---|---|---|
| 2.1 | EMF Enumerations | incomplete | 3 | 1 | RecordType, ArcDirection, BackgroundMode, ExtTextOutOptions (opaque, clipped, glyph index, PDY), MapMode, ModifyWorldTransformMode, PenStyle, PolygonFillMode, RegionMode (and, or and copy; xor and diff are reported), StockObject and the text alignment flags are read (docboss-metafile dc.rs, emf.rs); the color, ICM, font description and OpenGL enumerations are not needed for drawing. |
| 2.2 | EMF Objects | incomplete | 4 | 0 | Header (with HeaderExtension1 and HeaderExtension2's micrometre size), EmrText, LogBrushEx, LogFont (height, escapement, weight, italic, underline, strike-out, character set, face; the width is not honoured), LogPen, LogPenEx (user dash styles), RegionData (as the bounds of its rectangles) and XForm are read. Palettes, color spaces, PixelFormatDescriptor, the design vector and gradient objects are not. |
| 2.3 | EMF Records | incomplete | 32 | 8 | Records are played through a device context model into paths, text and bitmaps that the layout scales from the frame into the picture's rectangle (docboss-metafile emf.rs, dc.rs; docboss-layout metafile.rs; tests tests/play.rs). What is left out is listed per record class below and reported as a diagnostic per picture. |
| 2.3.1 | Bitmap Record Types | incomplete | 3 | 1 | EMR_ALPHABLEND (constant and per-pixel alpha), EMR_BITBLT, EMR_SETDIBITSTODEVICE, EMR_STRETCHBLT and EMR_STRETCHDIBITS are drawn, those without a bitmap as brush fills; EMR_MASKBLT, EMR_PLGBLT and EMR_TRANSPARENTBLT are reported and not drawn. |
| 2.3.2 | Clipping Record Types | incomplete | 2 | 0 | EMR_INTERSECTCLIPRECT is exact; EMR_EXTSELECTCLIPRGN and EMR_SELECTCLIPPATH clip to the bounds of the region or path. EMR_EXCLUDECLIPRECT and EMR_OFFSETCLIPRGN are reported and ignored. |
| 2.3.3 | Comment Record Types | incomplete | 1 | 0 | EMR_COMMENT_EMFPLUS is only detected: every EMF+ picture in the test corpus is EMF+ dual, so its EMF records are played and the EMF+ records skipped; an EMF+ only picture is reported and drawn as a placeholder. The other comments carry no drawing and are skipped. |
| 2.3.4 | Control Record Types | implemented | 1 | 1 | EMR_HEADER gives the frame, the reference device size and its millimetre or micrometre size; EMR_EOF ends playback (emf.rs; test tests/play.rs emf_shapes_fill_with_their_brushes_on_the_frame). |
| 2.3.5 | Drawing Record Types | incomplete | 12 | 3 | EMR_ANGLEARC, EMR_ARC, EMR_ARCTO, EMR_CHORD, EMR_ELLIPSE, EMR_EXTTEXTOUTA, EMR_EXTTEXTOUTW, EMR_FILLPATH, EMR_LINETO, EMR_PIE, the POLYBEZIER, POLYGON, POLYLINE, POLYPOLYGON and POLYPOLYLINE records in both widths, EMR_RECTANGLE, EMR_ROUNDRECT, EMR_STROKEANDFILLPATH and EMR_STROKEPATH are drawn. Text given as glyph indices, EMR_EXTFLOODFILL, EMR_FILLRGN, EMR_FRAMERGN, EMR_PAINTRGN, EMR_GRADIENTFILL, EMR_POLYDRAW, EMR_POLYTEXTOUT, EMR_SETPIXELV and EMR_SMALLTEXTOUT are reported and not drawn. |
| 2.3.6 | Escape Record Types | not implemented | 0 | 0 | Printer escapes carry no drawing and are skipped. |
| 2.3.7 | Object Creation Record Types | incomplete | 6 | 1 | EMR_CREATEBRUSHINDIRECT, EMR_CREATEPEN, EMR_EXTCREATEPEN and EMR_EXTCREATEFONTINDIRECTW are read; EMR_CREATEDIBPATTERNBRUSHPT and EMR_CREATEMONOBRUSH fill with their bitmap's average color and hatched brushes with a tint of their color. Palettes and color spaces are skipped. |
| 2.3.8 | Object Manipulation Record Types | incomplete | 2 | 0 | EMR_SELECTOBJECT (table and stock objects) and EMR_DELETEOBJECT are played; the palette and color space records are skipped. |
| 2.3.9 | OpenGL Record Types | not implemented | 0 | 0 | OpenGL records are skipped. |
| 2.3.10 | Path Bracket Record Types | incomplete | 1 | 0 | EMR_BEGINPATH, EMR_ENDPATH, EMR_CLOSEFIGURE and EMR_ABORTPATH bracket the figures that the path records fill, stroke or clip to; EMR_FLATTENPATH and EMR_WIDENPATH are reported and ignored, and text inside a bracket is not drawn. |
| 2.3.11 | State Record Types | incomplete | 1 | 1 | Window and viewport origins, extents and their scaling, the map mode, arc direction, background mode and color, text color and alignment, fill mode, mix mode, EMR_MOVETOEX, EMR_SAVEDC and EMR_RESTOREDC (relative and absolute) are played. Brush origin, color adjustment, ICM, layout, linked fonts, mapper flags, miter limit, stretch mode and text justification are skipped. |
| 2.3.12 | Transform Record Types | implemented | 2 | 1 | EMR_SETWORLDTRANSFORM and EMR_MODIFYWORLDTRANSFORM in all four modes (dc.rs world; test dc.rs world_transform_modes_compose_in_order). |
APPNOTE.TXT: .ZIP File Format Specification (PKWARE)
4 ZIP Files
| Clause | Feature | Status | Code citations | Test citations | Note |
|---|---|---|---|---|---|
| 4.1 | What is a ZIP file | incomplete | 1 | 1 | Stored and deflated entries are read and written with CRC-32 checks; encryption, other compression methods, split archives and manifest files are not supported. |
| 4.1.1 | ZIP files MAY be identified by the standard .ZIP file extension although use of… | out of scope | 0 | 0 | Introductory statement; the requirements it summarizes have their own rows under 4.3 to 4.5. |
| 4.1.2 | ZIP files SHOULD contain at least one file and MAY contain multiple files | out of scope | 0 | 0 | Introductory statement; the requirements it summarizes have their own rows under 4.3 to 4.5. |
| 4.1.3 | Data compression MAY be used to reduce the size of files placed into a ZIP… | out of scope | 0 | 0 | Introductory statement; the requirements it summarizes have their own rows under 4.3 to 4.5. |
| 4.1.4 | Data encryption MAY be used to protect files within a ZIP file | not implemented | 0 | 0 | Encrypted entries are refused with Error::Encrypted (crates/docboss-zip/src/lib.rs); nothing is decrypted. |
| 4.1.5 | Data integrity MUST be provided for each file using CRC32 | implemented | 1 | 1 | Every entry read is checked against its CRC-32; a mismatch is an error from Archive::entry and a flag from Archive::read (test archive.rs corrupted_bytes_fail_the_crc_check). |
| 4.1.6 | Additional data integrity MAY be included through the use of digital signatures | out of scope | 0 | 0 | Introductory statement; the requirements it summarizes have their own rows under 4.3 to 4.5. |
| 4.1.7 | Files MAY be placed within a ZIP file uncompressed or stored | out of scope | 0 | 0 | Introductory statement; the requirements it summarizes have their own rows under 4.3 to 4.5. |
| 4.1.8 | Each data file placed into a ZIP file MAY be compressed, stored, encrypted or… | out of scope | 0 | 0 | Introductory statement; the requirements it summarizes have their own rows under 4.3 to 4.5. |
| 4.1.9 | ZIP files MAY be streamed, split into segments (on fixed or on removable media)… | not implemented | 0 | 0 | Split and spanned archives are not read; only the last segment's central directory would be found. |
| 4.1.10 | Extensibility is provided for platform or application specific needs through… | out of scope | 0 | 0 | Introductory statement; the requirements it summarizes have their own rows under 4.3 to 4.5. |
| 4.1.11 | Common uses for ZIP MAY also include the use of manifest files | out of scope | 0 | 0 | Introductory statement; the requirements it summarizes have their own rows under 4.3 to 4.5. |
| 4.1.12 | ZIP files MAY be placed within other ZIP files | out of scope | 0 | 0 | Introductory statement; the requirements it summarizes have their own rows under 4.3 to 4.5. |
| 4.2 | ZIP Metadata | out of scope | 0 | 0 | Introductory statement; the record types have their own rows under 4.3. |
| 4.2.1 | ZIP files are identified by metadata consisting of defined record types… | out of scope | 0 | 0 | Introductory statement; the record types have their own rows under 4.3. |
| 4.3 | General Format of a .ZIP file | incomplete | 19 | 14 | Local headers, file data, data descriptors, the central directory, the ZIP64 records and the end record are read and written; the archive decryption header, archive extra data record and digital signature are not. |
| 4.3.1 | A ZIP file MUST contain an "end of central directory record" | out of scope | 0 | 0 | Normative summary of the layout that 4.3.6 to 4.3.16 specify record by record; see those rows. |
| 4.3.2 | Each file placed into a ZIP file MUST be preceded by a "local file header"… | out of scope | 0 | 0 | Normative summary of the layout that 4.3.6 to 4.3.16 specify record by record; see those rows. |
| 4.3.3 | Files MAY be stored in arbitrary order within a ZIP file | out of scope | 0 | 0 | Normative summary of the layout that 4.3.6 to 4.3.16 specify record by record; see those rows. |
| 4.3.4 | Compression MUST NOT be applied to a "local file header", an "encryption… | out of scope | 0 | 0 | Normative summary of the layout that 4.3.6 to 4.3.16 specify record by record; see those rows. |
| 4.3.5 | File data MAY be followed by a "data descriptor" for the file | out of scope | 0 | 0 | Normative summary of the layout that 4.3.6 to 4.3.16 specify record by record; see those rows. |
| 4.3.6 | Overall .ZIP file format | implemented | 1 | 1 | Entries are located through the central directory and read at their local header offsets (crates/docboss-zip/src/lib.rs central_directory, test archive.rs reads_stored_and_deflated_entries). |
| 4.3.7 | Local file header | implemented | 3 | 2 | Local headers give each entry's data offset and, when the central directory cannot be read, are scanned to recover the entries, which is reported as a diagnostic (test archive.rs recovers_from_a_missing_central_directory); the writer emits one per entry. |
| 4.3.8 | File data | implemented | 1 | 1 | Stored data is borrowed from the input and deflated data inflated under the size and ratio limits of Limits (test archive.rs reads_stored_and_deflated_entries). |
| 4.3.9 | Data descriptor | implemented | 1 | 2 | General purpose bit 3 defers the CRC and sizes to a data descriptor, which recovery finds after the data (test archive.rs reads_entries_with_data_descriptors); the writer can emit descriptors (write.rs every_layout_reads_back). |
| 4.3.10 | Archive decryption header | not implemented | 0 | 0 | The archive decryption header of central directory encryption is not read; such archives do not open. |
| 4.3.11 | Archive extra data record | not implemented | 0 | 0 | The archive extra data record is not read. |
| 4.3.12 | Central directory structure | implemented | 5 | 2 | Central directory headers give each entry's name, method, flags, CRC, sizes and local header offset (test archive.rs reads_stored_and_deflated_entries); the writer emits them. |
| 4.3.13 | Digital signature | not implemented | 0 | 0 | The central directory digital signature is not read or verified. |
| 4.3.14 | Zip64 end of central directory record | implemented | 2 | 2 | The ZIP64 end of central directory record gives 64-bit entry counts, directory size and offset (test archive.rs reads_zip64_archives); the writer emits it with WriteOptions::zip64. |
| 4.3.15 | Zip64 end of central directory locator | implemented | 2 | 1 | The ZIP64 locator is followed to the ZIP64 end record (test archive.rs reads_zip64_archives); the writer emits it with WriteOptions::zip64. |
| 4.3.16 | End of central directory record | implemented | 4 | 3 | The end of central directory record is located from the end of the file and gives the directory's offset and entry count; the writer ends every archive with one (test write.rs archive_ends_with_directory_record). |
| 4.4 | Explanation of fields | incomplete | 7 | 7 | The fields needed to locate, decode and check entries are read; version, attribute, disk, date and comment fields are ignored. |
| 4.4.1 | General notes on fields | not implemented | 0 | 0 | No reader code cites this field; the reader uses it only as far as the 4.3 record rows say. |
| 4.4.2 | version made by (2 bytes) | not implemented | 0 | 0 | No reader code cites this field; the reader uses it only as far as the 4.3 record rows say. |
| 4.4.3 | version needed to extract (2 bytes) | not implemented | 0 | 0 | No reader code cites this field; the reader uses it only as far as the 4.3 record rows say. |
| 4.4.4 | general purpose bit flag | incomplete | 3 | 2 | Bit 0 refuses an encrypted entry, bit 3 defers sizes to a data descriptor and bit 11 selects UTF-8 names (tests archive.rs reads_entries_with_data_descriptors and decodes_name_encodings); the other bits are ignored. |
| 4.4.5 | compression method | incomplete | 1 | 1 | Methods 0 (stored) and 8 (deflated) are read and written; any other method is Error::UnsupportedMethod. |
| 4.4.6 | date and time fields | not implemented | 0 | 0 | Entry dates and times are not read; the writer stores 1980-01-01 00:00 so its output does not depend on the clock. |
| 4.4.7 | CRC-32 | implemented | 2 | 3 | Slicing-by-8 CRC-32 over the reflected polynomial (crates/docboss-zip/src/crc.rs), held to 40 vectors computed by the Lean reference (tests/ledger_vectors.rs). |
| 4.4.8 | compressed size | not implemented | 0 | 0 | No reader code cites this field; the reader uses it only as far as the 4.3 record rows say. |
| 4.4.9 | uncompressed size | not implemented | 0 | 0 | No reader code cites this field; the reader uses it only as far as the 4.3 record rows say. |
| 4.4.10 | file name length | not implemented | 0 | 0 | No reader code cites this field; the reader uses it only as far as the 4.3 record rows say. |
| 4.4.11 | extra field length | not implemented | 0 | 0 | No reader code cites this field; the reader uses it only as far as the 4.3 record rows say. |
| 4.4.12 | file comment length | not implemented | 0 | 0 | No reader code cites this field; the reader uses it only as far as the 4.3 record rows say. |
| 4.4.13 | disk number start | not implemented | 0 | 0 | No reader code cites this field; the reader uses it only as far as the 4.3 record rows say. |
| 4.4.14 | internal file attributes | not implemented | 0 | 0 | No reader code cites this field; the reader uses it only as far as the 4.3 record rows say. |
| 4.4.15 | external file attributes | not implemented | 0 | 0 | No reader code cites this field; the reader uses it only as far as the 4.3 record rows say. |
| 4.4.16 | relative offset of local header | not implemented | 0 | 0 | No reader code cites this field; the reader uses it only as far as the 4.3 record rows say. |
| 4.4.17 | file name | implemented | 1 | 1 | Names decode as UTF-8 when bit 11 is set, else as code page 437 (crates/docboss-zip/src/cp437.rs, test archive.rs decodes_name_encodings). |
| 4.4.18 | file comment | not implemented | 0 | 0 | No reader code cites this field; the reader uses it only as far as the 4.3 record rows say. |
| 4.4.19 | number of this disk | not implemented | 0 | 0 | No reader code cites this field; the reader uses it only as far as the 4.3 record rows say. |
| 4.4.20 | number of the disk with the start of the central directory | not implemented | 0 | 0 | No reader code cites this field; the reader uses it only as far as the 4.3 record rows say. |
| 4.4.21 | total number of entries in the central dir on this disk | not implemented | 0 | 0 | No reader code cites this field; the reader uses it only as far as the 4.3 record rows say. |
| 4.4.22 | total number of entries in the central dir | not implemented | 0 | 0 | No reader code cites this field; the reader uses it only as far as the 4.3 record rows say. |
| 4.4.23 | size of the central directory | not implemented | 0 | 0 | No reader code cites this field; the reader uses it only as far as the 4.3 record rows say. |
| 4.4.24 | offset of start of central directory with respect to the starting disk number | not implemented | 0 | 0 | No reader code cites this field; the reader uses it only as far as the 4.3 record rows say. |
| 4.4.25 | ZIP file comment length | not implemented | 0 | 0 | No reader code cites this field; the reader uses it only as far as the 4.3 record rows say. |
| 4.4.26 | ZIP file comment | not implemented | 0 | 0 | No reader code cites this field; the reader uses it only as far as the 4.3 record rows say. |
| 4.4.27 | zip64 extensible data sector (variable size) | not implemented | 0 | 0 | No reader code cites this field; the reader uses it only as far as the 4.3 record rows say. |
| 4.4.28 | extra field | not implemented | 0 | 0 | No reader code cites this field; the reader uses it only as far as the 4.3 record rows say. |
| 4.5 | Extensible data fields | incomplete | 2 | 1 | Only the ZIP64 extended information extra field (0x0001) is read; every other extra field is skipped by its length. |
| 4.5.1 | In order to allow different programs and different types of information to be… | not implemented | 0 | 0 | Extra fields are walked as Header ID and size pairs within their declared length; only ID 0x0001 is interpreted (lib.rs zip64_extra). |
| 4.5.2 | The current Header ID mappings defined by PKWARE are | not implemented | 0 | 0 | Of the PKWARE Header IDs only 0x0001 is interpreted; the rest are skipped by their length. |
| 4.5.3 | Zip64 Extended Information Extra Field (0x0001) | implemented | 2 | 1 | The ZIP64 extra field supplies 64-bit sizes and offsets when the 32-bit fields are saturated (test archive.rs reads_zip64_archives); the writer emits it with WriteOptions::zip64. |
| 4.5.4 | OS/2 Extra Field (0x0009) | not implemented | 0 | 0 | This extra field is skipped by its length. |
| 4.5.5 | NTFS Extra Field (0x000a) | not implemented | 0 | 0 | This extra field is skipped by its length. |
| 4.5.6 | OpenVMS Extra Field (0x000c) | not implemented | 0 | 0 | This extra field is skipped by its length. |
| 4.5.7 | UNIX Extra Field (0x000d) | not implemented | 0 | 0 | This extra field is skipped by its length. |
| 4.5.8 | PATCH Descriptor Extra Field (0x000f) | not implemented | 0 | 0 | This extra field is skipped by its length. |
| 4.5.9 | PKCS#7 Store for X.509 Certificates (0x0014) | not implemented | 0 | 0 | This extra field is skipped by its length. |
| 4.5.10 | X.509 Certificate ID and Signature for individual file (0x0015) | not implemented | 0 | 0 | This extra field is skipped by its length. |
| 4.5.11 | X.509 Certificate ID and Signature for central directory (0x0016) | not implemented | 0 | 0 | This extra field is skipped by its length. |
| 4.5.12 | Strong Encryption Header (0x0017) | not implemented | 0 | 0 | This extra field is skipped by its length. |
| 4.5.13 | Record Management Controls (0x0018) | not implemented | 0 | 0 | This extra field is skipped by its length. |
| 4.5.14 | PKCS#7 Encryption Recipient Certificate List (0x0019) | not implemented | 0 | 0 | This extra field is skipped by its length. |
| 4.5.15 | MVS Extra Field (0x0065) | not implemented | 0 | 0 | This extra field is skipped by its length. |
| 4.5.16 | OS/400 Extra Field (0x0065) | not implemented | 0 | 0 | This extra field is skipped by its length. |
| 4.5.17 | Policy Decryption Key Record Extra Field (0x0021) | not implemented | 0 | 0 | This extra field is skipped by its length. |
| 4.5.18 | Key Provider Record Extra Field (0x0022) | not implemented | 0 | 0 | This extra field is skipped by its length. |
| 4.5.19 | Policy Key Data Record Record Extra Field (0x0023) | not implemented | 0 | 0 | This extra field is skipped by its length. |
| 4.6 | Third Party Mappings | not implemented | 0 | 0 | Third-party extra fields are skipped by their length. |
| 4.6.1 | Third party mappings commonly used are | not implemented | 0 | 0 | Third-party extra fields are skipped by their length. |
| 4.6.2 | Third-party Extra Fields MUST include a Header ID using the format defined in… | not implemented | 0 | 0 | Third-party extra fields are skipped by their length. |
| 4.6.3 | In case two different programs appropriate the same Header ID value, it is… | not implemented | 0 | 0 | Third-party extra fields are skipped by their length. |
| 4.6.4 | ZipIt Macintosh Extra Field (long) (0x2605) | not implemented | 0 | 0 | This extra field is skipped by its length. |
| 4.6.5 | ZipIt Macintosh Extra Field (short, for files) (0x2705) | not implemented | 0 | 0 | This extra field is skipped by its length. |
| 4.6.6 | ZipIt Macintosh Extra Field (short, for directories) (0x2805) | not implemented | 0 | 0 | This extra field is skipped by its length. |
| 4.6.7 | FWKCS MD5 Extra Field (0x4b46) | not implemented | 0 | 0 | This extra field is skipped by its length. |
| 4.6.8 | Info-ZIP Unicode Comment Extra Field (0x6375) | not implemented | 0 | 0 | This extra field is skipped by its length. |
| 4.6.9 | Info-ZIP Unicode Path Extra Field (0x7075) | not implemented | 0 | 0 | This extra field is skipped by its length. |
| 4.6.10 | Microsoft Open Packaging Growth Hint (0xa220) | not implemented | 0 | 0 | This extra field is skipped by its length. |
| 4.6.11 | Data Stream Alignment (Apache Commons-Compress) (0xa11e) | not implemented | 0 | 0 | This extra field is skipped by its length. |
| 4.7 | Manifest Files | out of scope | 0 | 0 | Manifest files are application data; docboss reads OPC parts by name instead. |
| 4.7.1 | Applications using ZIP files MAY have a need for additional information that… | out of scope | 0 | 0 | Manifest files are application data; docboss reads OPC parts by name instead. |
| 4.7.2 | A manifest file is a file created for the application process that requires… | out of scope | 0 | 0 | Manifest files are application data; docboss reads OPC parts by name instead. |
| 4.7.3 | Manifest files MAY be compressed or encrypted as needed for application… | out of scope | 0 | 0 | Manifest files are application data; docboss reads OPC parts by name instead. |
5 Explanation of compression methods
| Clause | Feature | Status | Code citations | Test citations | Note |
|---|---|---|---|---|---|
| 5.1 | UnShrinking - Method 1 | not implemented | 0 | 0 | Method 1 is not read; such entries fail with Error::UnsupportedMethod. |
| 5.2 | Expanding - Methods 2-5 | not implemented | 0 | 0 | Method 2 to 5 is not read; such entries fail with Error::UnsupportedMethod. |
| 5.3 | Imploding - Method 6 | not implemented | 0 | 0 | Method 6 is not read; such entries fail with Error::UnsupportedMethod. |
| 5.4 | Tokenizing - Method 7 | not implemented | 0 | 0 | Method 7 is not read; such entries fail with Error::UnsupportedMethod. |
| 5.5 | Deflating - Method 8 | implemented | 1 | 1 | Deflate streams are inflated and written through flate2's zlib-rs backend, a truncated stream keeping what it inflated (tests archive.rs truncated_deflate_keeps_the_readable_prefix and write.rs every_layout_reads_back). |
| 5.6 | Enhanced Deflating - Method 9 | not implemented | 0 | 0 | Method 9 is not read; such entries fail with Error::UnsupportedMethod. |
| 5.7 | BZIP2 - Method 12 | not implemented | 0 | 0 | Method 12 is not read; such entries fail with Error::UnsupportedMethod. |
| 5.8 | LZMA - Method 14 | not implemented | 0 | 0 | Method 14 is not read; such entries fail with Error::UnsupportedMethod. |
| 5.9 | WavPack - Method 97 | not implemented | 0 | 0 | Method 97 is not read; such entries fail with Error::UnsupportedMethod. |
| 5.10 | PPMd - Method 98 | not implemented | 0 | 0 | Method 98 is not read; such entries fail with Error::UnsupportedMethod. |
| 5.11 | AE-x Encryption marker - Method 99 | not implemented | 0 | 0 | Method 99 is not read; such entries fail with Error::UnsupportedMethod. |
| 5.12 | JPEG variant - Method 96 | not implemented | 0 | 0 | Method 96 is not read; such entries fail with Error::UnsupportedMethod. |
| 5.13 | PKWARE Data Compression Library Imploding - Method 10 | not implemented | 0 | 0 | Method 10 is not read; such entries fail with Error::UnsupportedMethod. |
| 5.14 | Reserved - Method 11 | out of scope | 0 | 0 | Reserved method number with nothing to implement. |
| 5.15 | Reserved - Method 13 | out of scope | 0 | 0 | Reserved method number with nothing to implement. |
| 5.16 | Reserved - Method 15 | out of scope | 0 | 0 | Reserved method number with nothing to implement. |
| 5.17 | IBM z/OS CMPSC Compression - Method 16 | not implemented | 0 | 0 | Method 16 is not read; such entries fail with Error::UnsupportedMethod. |
| 5.18 | Reserved - Method 17 | out of scope | 0 | 0 | Reserved method number with nothing to implement. |
| 5.19 | IBM TERSE - Method 18 | not implemented | 0 | 0 | Method 18 is not read; such entries fail with Error::UnsupportedMethod. |
| 5.20 | IBM LZ77 z Architecture - Method 19 | not implemented | 0 | 0 | Method 19 is not read; such entries fail with Error::UnsupportedMethod. |