(Sorry if I get too geeky here, I’m a web developer by trade…)
TL/DR; Rather than using RTF and word processor like formatting toolbars, Scrivener should use HTML, limited to a subset of HTML elements and user-named classes, and then use user-controlled CSS to style them. This would allow users to focus on the writing rather than manually adjusting the formatting in each text file as their preferences or needs change, and would neatly solve a whole slew of export issues related to formatting.
I’d love to see Scrivener use HTML internally rather than RTF.
The problem with styles in word processors (including Word) is that they offer both arbitrary styling and named styles simultaneously. This undisciplined approach results in an unmanageable plethora of auto-generated styles.
I’d actually love to not have menu options for directly selecting the typeface, font size, line spacing, etc. Instead, for any given block of text (at a paragraph level and at a phrase/character level) I would just select the general meaning of the text (heading level 1, heading level 2, paragraph, etc.) and a more specific meaning that relates to my document (e.g., heading 2: slugline or paragraph: dialogue).
Then, the user would have a separate interface to map each general/specific meaning (aka HTML element and class) to its formatting, and ideally be able to load and save those settings at will. As a user, I could, say, have one stylesheet for editing on my large desktop monitor, another (with a larger font) for my Macbook Air laptop, and another (with reversed colors) for writing at night.
The hardest piece to implement would be converting RTF-based text in existing Scrivener files, or text pasted into Scrivener (which will come into a WebKit or similar control as nasty style-heavy HTML). For that, I think Scrivener would need a user-controlled “format scrubbing” routine. In other words, let the user choose whether pasting will ignore certain format types (for example I would almost always ignore font name and size) or if it will attempt to match the format to an existing class (and auto-create a new P or SPAN class if there is no match).
Having that level of control would allow a user to either coalesce most of the incoming style down to the few things they care to maintain (such as bold or italic), or if they want something closer to the original, deal with the fact that it may require creating some auto-generated classes with meaningless names.
Geek-out points:
(1) It would be super-awesome if Scrivener’s UI for formatting each element/class combination also had a box to directly type in some CSS. This would allow you to focus the UI on CSS styles that correspond to current formatting options, while allowing advanced users to do fun things like making a character names always appear in uppercase (using text-transform).
(2) HTML like this would be super-easy to convert back and forth to Markdown/BBCode variants.
(3) In many situations where an HTML-based export format is needed (such as EPUB, or posting to a web site with its own style), you expressly don’t want most of your formatting choices in Scrivener to end up in the exported document, but you do want to export the difference between headers and paragraphs, or the fact that a phrase is emphasized (i.e., probably but not necessarily should be italicized).
(4) HTML is much more extensible than RTF for tagging Scrivener-specific stuff like footnotes and comments to particular blocks of text. And using fancy CSS selectors like :after, you could style in some things like icons for footnotes, paragraph symbols before line breaks (like Wordperfect “code view”), etc. without them being actually stored in the text. WebKit does all the hard work.