L2/07-341 Date: Sat, 6 Oct 2007 Source: "Mark Davis Subject: Deprecating Stateful Controls ========= Section 5.20 is woefully out of date. In the subsection "Stateful Format Controls" (p 194), it recommends that software always maintain stateful controls in pairs. However, in practice, I know of no software anywhere that checks every deletion for tag characters or other stateful controls and does a fixup as Section 5.20 requires. Moreover, if a process doesn't support character X, it is certainly certainly not going to look for stateful matching pairs for X and do the fixup. So anytime a process that doesn't support stateful controls handles text, the stateful controls can be broken. So there is no way that we can expect software to do the advice in Section 5.20. We made the annotation and bidi controls robust in terms of specifying behavior that allows for "broken blocks", exactly because of this issue. The other stateful controls are still at issue: some of them are already deprecated, and the others should be. We should: 1. Retract the advice in subsection "Stateful Format Controls" (p 194), and replace it by recommendations to 1. avoid any stateful controls except for bidi and annotation characters, and 2. if the others are used despite that advice, then the software needs to be cognizant of the fact that unmatched pairs will occur. 2. At long last, deprecate the tag characters. This does not mean that people can't use them, but does allow software to detect them using Unicode properties (http://unicode.org/Public/UNIDATA/PropList.txt, see "Deprecated"). -- Mark