Add read+write support for .rtf, Microsoft's Rich Text Format. RTF is the cleanest pivot fit of any format documents.js doesn't yet support: it's structurally wordprocessing (paragraphs, runs, character properties, paragraph properties, tables, lists, images all have direct ContentDocument equivalents), and it can express more of the wordprocessing variant than markdown can (colour, font family/size, alignment) — no document-schema.js model changes needed.
The codec itself is a real, multi-week hand-written undertaking: RTF is tokenised plain text, not XML, so none of the existing XML-parser plumbing (ooxml.js, odf.js) is reusable. It needs its own destination/group state machine, \uN/\ucN unicode handling with codepage fallback, and parsers for five header mini-formats (fonttbl/colortbl/stylesheet/listtable/listoverridetable).
Previously closed as not-planned for niche demand under the hand-write-no-third-party-library stance; reopened as full support is now wanted.
Add read+write support for
.rtf, Microsoft's Rich Text Format. RTF is the cleanest pivot fit of any format documents.js doesn't yet support: it's structurally wordprocessing (paragraphs, runs, character properties, paragraph properties, tables, lists, images all have directContentDocumentequivalents), and it can express more of the wordprocessing variant than markdown can (colour, font family/size, alignment) — nodocument-schema.jsmodel changes needed.The codec itself is a real, multi-week hand-written undertaking: RTF is tokenised plain text, not XML, so none of the existing XML-parser plumbing (
ooxml.js,odf.js) is reusable. It needs its own destination/group state machine,\uN/\ucNunicode handling with codepage fallback, and parsers for five header mini-formats (fonttbl/colortbl/stylesheet/listtable/listoverridetable).Previously closed as not-planned for niche demand under the hand-write-no-third-party-library stance; reopened as full support is now wanted.