- From: Thomas A. Fine <fine@head.cfa.harvard.edu>
- Date: Thu, 20 Dec 2012 15:07:41 -0500
- To: www-style@w3.org
Suppose I have an interest in formatting additional space between sentences. I might want to do this because: * I want to approximate the historic norm for published works from roughly 1650 to 1950 * There is some evidence to support that such spacing is helpful for new readers, people with certain learning disabilities, and more generally people who are speed-reading or scanning. * Or just because I find it aesthetically pleasing The most popularly recommended solution is a non-CSS solution, to use the   entity to add an extra non-collapsing space. The non-breaking space messes up justification where it occurs at line wraps. Even if this is changed to some other space entity, or just a regular space together with setting white-space to pre-wrap, this is still not a CSS solution, and allows for no fine-grained control. Unfortunately CSS lacks a reasonable approach for accomplishing this seemingly simple feat. Using the box model on sentence spans does not work properly, because space added in the box model is not wrappable white space, and as such it messes up justification. One method does work, but in my opinion is not acceptable. You can set word-spacing to a wide value for your divs or paragraphs, and then reset it back to a normal value for every sentence or other contained element. This approach to me seems inverted. You are effectively setting word-spacing to an incorrect value overall and then correcting it farther down. This is confusing and error-prone. Possible CSS solutions: #1. If a sentence tag existed, then a "sentence-spacing" parameter could be used to adjust sentence spacing wherever two sentences touch. In the absence of such a tag, it could still be possible for a user to specify another CSS parameter that describes which spans should be considered sentences, e.g. "sentence-span: .sntc" would consider anything of that class to be a sentence. #2. A generic inline spacing parameter could be created for all inline elements. This would be more powerful because you could then customize spacing around any phrase or inline image or anything else, but also more complicated, as there would have to be some method for two connecting elements to negotiate the space between them (e.g. averaging, larger one wins, or that it only applies to leading or following space, etc.) #3. If an unambiguous full-stop entity (&fullstop) or unicode character existed, this could reliably be used to format sentences. Alternatively this could also be an unambiguous inter-sentence space (&sentencespace). #4 You could also put a tag only around the white space between sentences, and use CSS to control that word-spacing. This does solve the problem of inverting your model that my current word-spacing solution would have, but I'm not sure that having a piece of content consisting solely of white space makes any sense. #5. This could be handled through automatic sentence detection. Unfortunately these algorithms are not reliable because periods are ambiguous, and more generally control is not in the hands of the content creator. On the other hand, it would instantly give sentence spacing ability to every existing HTML document with only a single change. Also, "period-newline" or "period-space-space" could be used as methods of detecting sentences more reliably within the HTML source. This approach could also be a fallback option within solution #1 above (e.g. "sentence-span: auto"). Or alternatively, with automatic sentence detection there could be a method of tagging only those things the algorithm might get wrong, e.g. "<NotAFullStop>. </NotAFullStop>" For the record I prefer a sentence tag or span around actual sentences as this has the side-effect of providing semantic information on where each sentence starts and ends, and no other solution provides that. tom
Received on Thursday, 20 December 2012 20:08:13 UTC