- From: Silvia Pfeiffer <silviapfeiffer1@gmail.com>
- Date: Wed, 18 Apr 2012 11:17:56 +1000
- To: Glenn Maynard <glenn@zewt.org>
- Cc: Frank Olivier <Frank.Olivier@microsoft.com>, "public-texttracks@w3.org" <public-texttracks@w3.org>
On Wed, Apr 18, 2012 at 10:15 AM, Glenn Maynard <glenn@zewt.org> wrote: > On Tue, Apr 17, 2012 at 4:45 PM, Silvia Pfeiffer <silviapfeiffer1@gmail.com> > wrote: >> >> I've had a bit of a chat with some people on the Chrome team that work >> on CSS and the balanced text wrapping mode that we are after indeed is >> not easy to implement using CSS. It basically requires a new CSS >> algorithm. > > > Right, it belongs in CSS. (I found the earlier discussion: > http://lists.whatwg.org/pipermail/whatwg-whatwg.org/2011-December/034026.html > "basic algorithm should be ...".) > > It shouldn't be difficult--at least, no more difficult than any other > wrapping algorithm. > >> We're considering this to be a new value for text-wrap - something >> like "text-wrap: balance;". It would states something along the lines >> of what you outlined - basically that it minimizes white space in the >> last line of a multi-line paragraph by re-distributing this white >> space over all lines and thus making the individual lines shorter. How >> a browser implements this would be up to the browser. >> >> What we likely need to do is: write a proposal (in a wiki page or so) >> for this new mode, explaining our use case. We should then send it out >> to the www-style list for general discussion. If you are keen, do go >> ahead with preparing such a proposal. > > > I don't know if I'll have the bandwidth to explain this from scratch to yet > another audience. I'll try to get to it eventually if someone else doesn't > get to it first... > > The suggested algorithm is: > > 1: Wrap the text using the ordinary word-wrapping algorithm, and let L be > the resulting number of lines. > 2: For each possible width W, starting at 1 and ending at the maximum > wrapping width, do the following: > 2.1. Wrap the text to width W, using the ordinary word-wrapping algorithm. > 2.2. If the resulting number of lines is less than or equal to than L, > return the wrapped text. Otherwise, continue to the next possible width. > > This simply finds the narrowest width that doesn't require additional lines > than ordinary wrapping. This runs in linear time on the size of the input > text. (Of course, this can be optimized without changing the results, by > performing a binary search on W instead of a linear one, but that's an > implementation detail.) > > This may not produce great results for large paragraphs, but it should work > well for caption-size text, where the common case is only a few lines. > > (Apparently this has been tried before, but it was attempting to find the > *optimal* solution, which turns out to be O(n^2). I believe this solution > is more than adequate for WebVTT's needs, and good enough to be of general > use; Ian mentioned headings, which this should work well for too.) Sounds good to me! I don't have the bandwidth right now to do this, but will put it on my list for after the current task. Cheers, Silvia.
Received on Wednesday, 18 April 2012 01:18:49 UTC