- From: Sylvain Galineau <sylvaing@microsoft.com>
- Date: Fri, 11 Feb 2011 01:40:06 +0000
- To: Stephen Zilles <szilles@adobe.com>, Håkon Wium Lie <howcome@opera.com>
- CC: "www-style@w3.org" <www-style@w3.org>
[Stephen Zilles:] > I find this whole discussion focusing on finding the "right" algorithm > rather than focusing on what would a user want. That is, what is most > important to preserve as the size of the area in which columns are to go > changes (more explicitly shrinks). +1. [snip] > For example, I would like to understand the use case for allowing column- > widths to go to zero. That means that no content would show. If one is not > allowed to set a column-width of zero, then the system should not give > that result in a fall back situation. +2! > In the long term, it seems reasonable to have a property that sets the > minimum column-width. But, in the short term, it would be reasonable to > establish a default value for that property, say 5 characters or 10 > characters. Yes, I know that that will cause some words to break in an > arbitrary way, but that seems far less worse than losing any form of > comprehensible text. > > I would then argue that the rules that reduce the number of columns be > used when the minimum column-width is hit and not when zero is hit. > > I would interpret Sylvain's point as saying that the ratio of area used > for column gaps to that used of column content should also be used to > trigger a reduction in the number of columns. I do not, however, have a > suggestion on how to use that ratio in the algorithm. Actually, my suggestion is that column-gap is always a maximum gap width. So in overconstrained situations, gaps are shrunk to preserve as much content as possible. (The minimum amount of gap to preserve is where I would tentatively suggest hardcoding a value) My first aim was simpler though: to point out that Hakon's proposal has such an effect and understand why it constitutes an improvement beyond its mathematical ability to produce a column count closer to that which was specified and 'less abrupt changes'. The latter are implicitly assumed to be 'better' and I don't yet understand why. > > So, lets first agree on what makes sense from the author (and viewer)'s > point of view and then decide on the algorithm. > > Steve Zilles > > > > -----Original Message----- > > From: www-style-request@w3.org [mailto:www-style-request@w3.org] On > > Behalf Of Sylvain Galineau > > Sent: Thursday, February 10, 2011 4:23 PM > > To: Håkon Wium Lie > > Cc: www-style@w3.org > > Subject: RE: [css3-multicol] pseudo-algorithm > > > > > I've run a simulation to compare the two. > > I know, I saw the earlier results. But it doesn't measure how much > > surface goes to content vs. gap in the element. The exercise seems to > > assume that the more columns, the better even though the result is a > > large increase in the amount of the multicol element's surface > > dedicated to honoring the gap. While it can be argued to be what the > > author wanted - the column-width is auto but column-count and > > column-gap are explicitly specified so the algorithm makes every > > effort to honor the author's request - I'm not sure this is helpful as > > it means column-width:auto might yield poorer result when, for > > instance, the user snaps/tiles his window to half the screen space. > > > > In the results below, I go from > > > 1200 to 0 in width. The resulting number of columns and their widths > > > are shown in the comments to the right (with a "/" between > > > them: > > > > > > width: 1200; column-gap: 125; column-count: 6; /* current: 6/95 > > > revised > > > 6/95 */ > > > width: 1180; column-gap: 125; column-count: 6; /* current: 6/92 > > > revised > > > 6/92 */ > > > width: 1160; column-gap: 125; column-count: 6; /* current: 6/89 > > > revised > > > 6/89 */ > > > width: 1140; column-gap: 125; column-count: 6; /* current: 6/85 > > > revised > > > 6/85 */ > > > width: 1120; column-gap: 125; column-count: 6; /* current: 6/82 > > > revised > > > 6/82 */ > > > width: 1100; column-gap: 125; column-count: 6; /* current: 6/79 > > > revised > > > 6/79 */ > > > width: 1080; column-gap: 125; column-count: 6; /* current: 6/75 > > > revised > > > 6/75 */ > > > width: 1060; column-gap: 125; column-count: 6; /* current: 6/72 > > > revised > > > 6/72 */ > > > width: 1040; column-gap: 125; column-count: 6; /* current: 6/69 > > > revised > > > 6/69 */ > > > width: 1020; column-gap: 125; column-count: 6; /* current: 6/65 > > > revised > > > 6/65 */ > > > width: 1000; column-gap: 125; column-count: 6; /* current: 6/62 > > > revised > > > 6/62 */ > > > width: 980; column-gap: 125; column-count: 6; /* current: 6/59 > > > revised > > > 6/59 */ > > > width: 960; column-gap: 125; column-count: 6; /* current: 6/55 > > > revised > > > 6/55 */ > > > width: 940; column-gap: 125; column-count: 6; /* current: 6/52 > > > revised > > > 6/52 */ > > > width: 920; column-gap: 125; column-count: 6; /* current: 6/49 > > > revised > > > 6/49 */ > > > width: 900; column-gap: 125; column-count: 6; /* current: 6/45 > > > revised > > > 6/45 */ > > > width: 880; column-gap: 125; column-count: 6; /* current: 6/42 > > > revised > > > 6/42 */ > > > width: 860; column-gap: 125; column-count: 6; /* current: 6/39 > > > revised > > > 6/39 */ > > > width: 840; column-gap: 125; column-count: 6; /* current: 6/35 > > > revised > > > 6/35 */ > > > width: 820; column-gap: 125; column-count: 6; /* current: 6/32 > > > revised > > > 6/32 */ > > > width: 800; column-gap: 125; column-count: 6; /* current: 6/29 > > > revised > > > 6/29 */ > > > width: 780; column-gap: 125; column-count: 6; /* current: 6/25 > > > revised > > > 6/25 */ > > > width: 760; column-gap: 125; column-count: 6; /* current: 6/22 > > > revised > > > 6/22 */ > > > width: 740; column-gap: 125; column-count: 6; /* current: 6/19 > > > revised > > > 6/19 */ > > > width: 720; column-gap: 125; column-count: 6; /* current: 6/15 > > > revised > > > 6/15 */ > > > width: 700; column-gap: 125; column-count: 6; /* current: 6/12 > > > revised > > > 6/12 */ > > > width: 680; column-gap: 125; column-count: 6; /* current: 6/9 > > > revised 6/9 */ > > > width: 660; column-gap: 125; column-count: 6; /* current: 6/5 > > > revised 6/5 */ > > > width: 640; column-gap: 125; column-count: 6; /* current: 6/2 > > > revised 6/2 */ > > > width: 620; column-gap: 125; column-count: 6; /* current: 4/61 > > > revised > > > 5/24 */ > > > width: 600; column-gap: 125; column-count: 6; /* current: 4/56 > > > revised > > > 5/20 */ > > > width: 580; column-gap: 125; column-count: 6; /* current: 4/51 > > > revised > > > 5/16 */ > > > width: 560; column-gap: 125; column-count: 6; /* current: 4/46 > > > revised > > > 5/12 */ > > > width: 540; column-gap: 125; column-count: 6; /* current: 4/41 > > > revised > > 5/8 > > > */ > > > width: 520; column-gap: 125; column-count: 6; /* current: 4/36 > > > revised > > 5/4 > > > */ > > > width: 500; column-gap: 125; column-count: 6; /* current: 4/31 > > > revised > > 5/0 > > > */ > > > width: 480; column-gap: 125; column-count: 6; /* current: 3/76 > > > revised > > > 4/26 */ > > > width: 460; column-gap: 125; column-count: 6; /* current: 3/70 > > > revised > > > 4/21 */ > > > width: 440; column-gap: 125; column-count: 6; /* current: 3/63 > > > revised > > > 4/16 */ > > > width: 420; column-gap: 125; column-count: 6; /* current: 3/56 > > > revised > > > 4/11 */ > > > width: 400; column-gap: 125; column-count: 6; /* current: 3/50 > > > revised > > 4/6 > > > */ > > > width: 380; column-gap: 125; column-count: 6; /* current: 3/43 > > > revised > > 4/1 > > > */ > > > width: 360; column-gap: 125; column-count: 6; /* current: 2/117 > > > revised > > > 3/36 */ > > > width: 340; column-gap: 125; column-count: 6; /* current: 2/107 > > > revised > > > 3/30 */ > > > width: 320; column-gap: 125; column-count: 6; /* current: 2/97 > > > revised > > > 3/23 */ > > > width: 300; column-gap: 125; column-count: 6; /* current: 2/87 > > > revised > > > 3/16 */ > > > width: 280; column-gap: 125; column-count: 6; /* current: 2/77 > > > revised > > > 3/10 */ > > > width: 260; column-gap: 125; column-count: 6; /* current: 2/67 > > > revised > > 3/3 > > > */ > > > width: 240; column-gap: 125; column-count: 6; /* current: 1/240 > > > revised > > > 2/57 */ > > > width: 220; column-gap: 125; column-count: 6; /* current: 1/220 > > > revised > > > 2/47 */ > > > width: 200; column-gap: 125; column-count: 6; /* current: 1/200 > > > revised > > > 2/37 */ > > > width: 180; column-gap: 125; column-count: 6; /* current: 1/180 > > > revised > > > 2/27 */ > > > width: 160; column-gap: 125; column-count: 6; /* current: 1/160 > > > revised > > > 2/17 */ > > > width: 140; column-gap: 125; column-count: 6; /* current: 1/140 > > > revised > > > 2/7 */ > > > width: 120; column-gap: 125; column-count: 6; /* current: 1/120 > > > revised > > > 1/120 */ > > > width: 100; column-gap: 125; column-count: 6; /* current: 1/100 > > > revised > > > 1/100 */ > > > width: 80; column-gap: 125; column-count: 6; /* current: 1/80 > > > revised > > 1/80 > > > */ > > > width: 60; column-gap: 125; column-count: 6; /* current: 1/60 > > > revised > > 1/60 > > > */ > > > width: 40; column-gap: 125; column-count: 6; /* current: 1/40 > > > revised > > 1/40 > > > */ > > > width: 20; column-gap: 125; column-count: 6; /* current: 1/20 > > > revised > > 1/20 > > > */ > > > width: 0; column-gap: 125; column-count: 6; /* current: 1/0 revised > > > 1/0 > > */ > > > > > > In both cases, we will have to deal with very narrow colunmns. > > That is a rather generous statement given cases like this: > > > > > width: 360; column-gap: 125; column-count: 6; /* current: 2/117 > > > revised > > > 3/36 */ > > > > The revised algorithm shrinks the column width by 70% ! In general, > > the proposed revision is worst as the number of columns goes down as > > the extra gap added by the new column is substracted from fewer > > columns. > > > > > > > I doubt that there's much to gain. > > I'm not worried about gaining right now. I'm worried about losing > > quite a bit of Content space for a poorer result. > > > > > > > > However, I agree it's one of the options. Let's try list the options: > > > > > > 1) keep the current algorithm > > > > > > + easy > > > - gives us abrupt changes (6 -> 4) in #columns > > > > I don't understand why abrupt changes in number of columns is an > > issue. The solution you propose can result in drastic changes in the > > amount of space available for content. > > Why isn't that a relevant factor ? > > > > > > > > 2) revise line 24 (by adding 1) > > > > > > + no abrupt changes in #columns > > > + more consistant column widths > > > - more situations where columns are narrow > > > > See above. The result is less space available for content. > > > > > 3) always honor column-count > > > > > > + that'll teach'em > > > + easy > > > - more situationw where column widths are zero > > > > I'll assume this is here for completeness. > > > > > 4) go to 1 column as soon as column-width reaches zero > > > > > > + easy > > > - abrupt chance > > > > So by abrupt you really mean, 'furthest from specified column-count'. > > > > > 5) try adjust column-gap as the width decreases > > > > > > + smooth, if we find the right formula > > > - complex? > > > - doesn't honor 'column-gap' > > > > Agree with those. My suggestion was to treat column-gap as a > > max-column- gap. > > I assume the content of the multicol is the most important part for > > the author and the user, so when available space is scarce column-gap > > always loses. > > > > > 6) introduce min-column-width (probably in combination with 2) > > > > > > + fewer narrow columns > > > - would bring us back to last call > > > - more complex to implement > > > - there would still be lots of clipping > > > > Definitely more complex; #5 seems less complex and achieve some of > > this by allowing column-gaps to shrink. >
Received on Friday, 11 February 2011 02:07:55 UTC