This rule is important to make the markup comfortable and versatile.
There are several classes of characters to be avoided, each of the for different reasons.
Characters not on the keyboard should be avoided, because they are hard to type (usually you need to find the character in the character map or some sample text, copy it and paste into your text). The sets of characters available are different for different keybord layouts, which makes this rule especially hard to follow.
Examples:
~ | {} [] <> ` # ^ & @ \
Characters treated specially by editing software are often transformed in "smart" ways into other characters, or even whole parts of text are changed.
Examples:
- "'" single quote, often transformed into apostrophe or unicode quoting characters
- """ quotation mark, transformed into unicode (or Windows-specific) quoting characters
- "\t" interpreted by most browsers as a command, and thus hard to type in the textarea
Invisible characters are obviously to be avoided in ReadableMarkup. They can be used if their presence is obvious (e.g. indentation), but it should never be required to count them, as this makes them InvisibleMarkup.
Examples:
- " " space, invisible at the ends of lines and also in runs of more than one space
- "\n" newline, invisible when the editing are is narrow and the text is wrapped
- "\t" tab, basically same as space, has an additional problem of no "standard" width defined
Characters easy to confuse with other characters. Should be avoided especially in context where both characters fit.
Examples:
"'" and "`", ":" and ";", "," and ".", "!" and "|"
There are several techniques of avoiding the special characters: