Reply to: Typeing 2 spacesFebruary 14, 2013 at 8:42 pm
Sorry, my assumption was that you meant 0020, 000a/000d and 0007 (space, carriage return/linefeed and tab). They will all collapse (unless you do what I said previously).
All other characters, including the “no-break space” character, are considered “significant” so XMetaL should render them (using the current font so there may still be a few characters that will not render if designed as such in the font).
— but I think we're getting off track here, I think your real issue is this:
DITA defines the character entity in the DTD (it is the only named character entity defined) so it is legal to have it in your DITA files and XMetaL will tell you they are valid, because they are. Newer versions of the DITA OT such as the one included with XMetaL Author Enterprise 7.0 don't like them to be there (or more specifically the XSLT engine is told by the DITA OT to run in a mode that causes an error when this entity is encountered). There's a detailed thread about that here: http://forums.xmetal.com/index.php/topic,2724.0.html
There is a shortcut (which is a legacy feature from HoTMetaL actually) for inserting a “no-break space”: Ctrl+Shift+spacebar. However, that is exactly what you don't want. It's behaviour is to insert the named character entity if it is defined in the DTD. For DTDs where it is not defined that shortcut does nothing.
Your change (inserting the actual no-break space character in place of the ) is the right thing to do for DITA given that it causes errors with the DITA OT today and that this entity has been deprecated in the DITA DTDs and may be removed in the future (so that your files may become invalid when using future versions of the DTDs). However, I think a script would be needed if you want to automate that change or make it easier for a user to do.