# Compatibility and implementation boundaries

RichTextWeb 0.5 is an independent flow-document engine, reusable controls, format converters and WebView hosts. This matrix records supported behavior, not a percentage estimate or a claim of complete Word/WPF parity. All new editing commands use the shared model and history rather than sample-only document manipulation.

| Area | Implemented | Remaining boundaries |
| --- | --- | --- |
| Flow model and properties | Owned FlowDocument trees, paragraphs/runs/spans, lists, tables/columns, images, Equation and Figure/Floater stories; dependency-property owners/metadata, read-only keys, validation/coercion, inheritance notifications, styles/triggers, local/current values and value-source inspection | Exhaustive System.Windows.Documents overloads, animation/expression precedence, dispatcher/routed events, native visual trees/templates and binary compatibility |
| Text positions and editing | Live UTF-16 positions, gravity, snapshots, grapheme navigation and structural-symbol traversal; rich transactions, compact reversible patches, stable object identity and direct single-Run typing | Edit offsets remain UTF-16 rather than native WPF symbol positions. General structural operations and index maintenance still scale with document size; no persistent rope or universal constant-time typing guarantee |
| Review | Authored text, formatting, rich moves and table/list/fragment structural revisions; conflict-aware rejection, atomic reject-all, comments and bookmarks | Exhaustive overlapping/nested Word revision semantics and author-identity services; inverse patches can conflict with later or remote changes |
| Collaboration | Protocol-2 rich transactions, per-Run character merging, deterministic moves, causal queues, snapshots and acknowledged checkpoint epochs | Character identity is scoped to stable Runs; structural splits do not preserve every Word coauthoring intent. Hosts supply authentication, persistence, membership and trustworthy checkpoint acknowledgements. Remote synchronization clears stale local undo |
| Continuous rendering | Keyed retained DOM, browser shaping/bidi, optional top-level block virtualization, distant selection materialization and composition protection | One enormous section/table is not subdivided; model traversal remains document-size work; physical assistive technology and OS IME qualification is separate |
| Views and navigation | PrintLayout, WebLayout, ReadMode, Outline and Draft; SinglePage, TwoPages, Vertical and MultiplePages; PageWidth/WholePage/TwoPages fitting, numbered-page navigation and binary offset lookup | Outline is not Word's complete master-document/outlining subsystem. One live editing surface is used; other realized pages are mirrors activated by pointer/keyboard |
| Page realization and performance | Measurement cache survives selection/page/zoom navigation; font/image/document changes invalidate geometry; visible sheets are prioritized before overscan; sparse page-slot containers retain only visible/overscan plus the live sheet; pagination statistics expose passes/cache hits/duration/realized slots | Finite-page layout measures the complete body. Mirrors clone body content and have a hard 128-sheet realization ceiling. This is not a fully virtualized incremental typesetting engine |
| Pagination and printing | Measured finite sheets/columns, keep/break/widow behavior, physical page versus column breaks, headers/footers/notes and overflow diagnostics; printing uses measured sheets and validated page ranges without a trailing blank page | Not Word-identical glyph layout. Section-dependent paper geometry, per-page footnote balancing, interacting anchors, legacy compatibility switches and arbitrary documents need additional work. Direct headless PDF export remains a different layout path |
| Floating layout | Figure/Floater rich stories, positioned/wrapped images and text boxes, move/resize handles and nested story editing | Complex nested exclusions and interacting Word anchors are not exhaustively reproduced |
| Document features | Validated per-margin page setup, preferred/fixed columns, page numbering, first/even/default rich story sessions with conflict detection/cancel, notes, fields, TOC, page references and mail merge through shared commands/history | Exhaustive field codes, automatic dependency scheduling, all drawing tools, native line grids and complex section rules |
| Equations | Atomic editable LaTeX/presentation-MathML nodes; private MathJax SVG pipeline, 42 templates, token selection/replacement/insertion/deletion, fraction/root/script tools, rectangular matrix row/column editing, alternative text and undo/redo | TeX input is bounded to 16 KiB with restricted packages/macros. MathML uses an allowlist/depth/node budget. Not complete Word UnicodeMath keyboard grammar or all structural/semantic math. Matrix editing supports non-spanning rectangular matrices up to 32 by 32 and rejects deleting the last row/column |
| Equation format conversion | Valid equations convert through presentation MathML; replacement drafts can switch interpretation only after target validation; unsupported conversion preserves source/history | Advanced spacing/structures without a supported LaTeX representation fail rather than silently changing meaning. Format property assignment is explicit reinterpretation; ConvertFormat performs validated conversion |
| Reusable controls | RichTextBox, RichTextPageEditor, viewers, toolbar, EquationEditor and PDFEditorControl; React/MVVM/bridge APIs; isolated toolbar dialog lifetimes prevent queued-close disposal races | Framework-native themes and physical input/accessibility certification require target-specific qualification |
| DOCX and other formats | Native Office Math for supported structures; exact equation-source metadata in hash-bound extensions; native story variant flags/distances, preferred/fixed column geometry, notes, fields, TOC, comments/bookmarks/review and anchored stories; HTML/Markdown/XAML equation interchange | No universal lossless Office round trip. Unsupported Office math/drawings may remain opaque. Advanced spacing/styling can change across applications. Generic review reversibility uses extensions ignored after external document changes. No macros or active OLE |
| PDF | Vector equation export, selectable flow text, PDF.js preview/search/reconstruction, page/overlay/history tools, supported original Tj/TJ/quote editing, encoding/advance preservation and isolated shared-Form edits | Equation outlines are not searchable/tagged math. Unsupported font encodings, vertical text, ActualText or content streams are rejected/diagnosed. Operator edits are not arbitrary semantic paragraph reflow. No OCR, secure redaction, tagged-PDF/PDF-UA or PDF/A certification |
| Native and Blazor hosts | Shared C#/Node protocol checks; real WPF, WinUI and Avalonia Windows applications with rendering/editing/history/MVVM checks; Blazor package consumers on .NET 8/10 in WebAssembly and Server | All hosts execute the JavaScript engine. Windows smoke does not establish Avalonia macOS/Linux runtime coverage or physical IME/screen-reader/device qualification. Blazor NuGet versions are independent of npm/native adapter archives |
| Sample ecosystem | RibbonWeb commands, Dockyard panels, TreeDataGridWeb explorer, DynamicDataWeb reactive collections, ReactiveWeb view model, RBushWeb hit testing and QuikGraphWeb reference traversal | These are sample development dependencies, not mandatory core-runtime dependencies. Their separate licenses/notices accompany sample distribution |
| Distribution | ESM/CJS/types/maps, standalone bundles, installed consumers, native archives, validation-gated releases, npm provenance/checksums and GitHub Pages | Passing tests establish documented behavior in the tested environments, not Microsoft-engine conformance |

## Migration

Keep FlowDocument at application boundaries. Convert explicitly between UTF-16 offsets and structural symbols. Use RichTextPageEditor for finite-page authoring and RichTextBox with continuous virtualization for large block documents. View changes keep the same engine/history. Floating stories are separate scoped documents; equations occupy one object-replacement position in their containing story.

Use browser printing when visible measured-sheet geometry matters. Direct `toPDF` uses independent headless layout. Use canonical JSON for exact RichTextWeb state; other formats preserve their supported subsets. Test representative document/font fixtures before depending on interchange fidelity.

See [rich page-authoring APIs](PAGE-AUTHORING.md), [authoring and equations](AUTHORING.md), [verification](VERIFICATION.md), [property semantics](WPF-PROPERTY-SYSTEM.md), [review/history](ENGINE.md), [collaboration](COLLABORATION.md), [formats](FORMATS.md), [PDF](PDF.md) and [integration](INTEGRATION.md).
