W3C home > Mailing lists > Public > www-style@w3.org > August 2014

Re: [css-text] A proposal to replace 'tab-size' with 'tabstop-widths'

From: Nick Gravgaard <me@nickgravgaard.com>
Date: Tue, 26 Aug 2014 18:01:20 +0000
Message-Id: <1409076056.1028997.156997189.6953CA20@webmail.messagingengine.com> (sfid-20140826_180126_355316_75844F71)
To: Christoph Päper <crissov@icloud.com>, "www-style list" <www-style@w3.org>
On Thu, 21 Aug 2014, at 13:16, Christoph Päper wrote:
> Since I recently considered proposing something similar myself, I’m
> responding to an older thread.
> 
> Nick Gravgaard 2012-12-22:
> > 
> > 
> > I'm the inventor of elastic tabstops
> > (http://nickgravgaard.com/elastictabstops/) […]
> > 
> > I would like to suggest something which is more powerful than 'tab-size'
> > (http://www.w3.org/TR/css3-text/#tab-size) but should be easily
> > implementable and would work like ''tab-size' when given one value. I
> > propose a new attribute called 'tabstop-widths' which takes a list of
> > widths measured in em and/or px values.
> 
> As others have pointed out back in early 2013, 
> that could be handled by overloading ‘tab-size’.
> 
> > The default would be [8]
> 
> CSS has a unit for character widths: ‘ch’.
> 
> > It would however be possible to specify 
> > values for the new 'tabstop-widths' attribute like '8em 70px 4em 30px' 
> > which would mean the first tabstop should be positioned at a distance of 
> > 8 'm's (in the current font) from the left, then at an additional 70 
> > pixels, then a further 4 'm' character widths, and then a further 30 
> > pixels. The last value would be repeated which would mean in the example 
> > I gave the value of '30px' would be repeated for the length of the 
> > element.
> 
> There’s a small i18n problem with tabbing the way you proposed: 
> It’s not possible to specify the start edge. 
> The default one of the box will do, though, most of the time.

Fair enough.

> If you really wanted to emulate horizontal tabulator stops and rulers 
> as in word processors, you would also have to support alignment. 
> Tabstops can mark left ‘⌊’, center ‘⊥’, right ‘⌋’ and decimal axes. 
> In Word et alii, they’re also used for leaders (compare 
> <http://dev.w3.org/csswg/css-gcpm/#leaders>) and vertical lines. 
> <http://office.microsoft.com/en-us/word-help/set-tab-stops-or-clear-them-HA101854821.aspx>

Yes, that would be nice I suppose.

> Are the repeated tabstops, 30px in you example, measured 
> from the end of the preceding one (12em+70px) or from the start edge? 
> How would you reinstate the default 8ch to match other lines?
> 
> Why do you prefer relative, incremental tabstops 
> over absolute ones measured from the start edge? 
> Should both be possible to specify?

If we overload ‘tab-size’ I think incremental tabstop positions would
make more sense to the user, since at the moment 'tab-size' is all about
the distance between tabstops. Ultimately I don't mind though, as long
as we get something!

> A popular use of tabstops in word processors and other software 
> is in running headers and footers, even in browsers print output. 
> It would suggest something like this for CSS:
> 
>   @pageheader {
>     tab-position: 0% start, 50% center, 100% end; /* alias ‘tabstops’ …
>     */
>     content: string(heading, first) "\t" string(title) "\t"
>     counter(page);
>   }
> 
> The approach actually taken in GCPM is quite different, though. 
> <http://dev.w3.org/csswg/css-gcpm/#running-headers-and-footers>
> 
>   @page {
>     @top-left       {content: string(heading, first);}
>     @top-center     {content: string(title);}
>     @top-right      {content: counter(page);}
>   }
> 
> The whole thing could be part of the ‘text-align’ property, 
> <http://dev.w3.org/csswg/css-text/#text-align-property>
> 
>   text-align:  0% start, 50% center, 100% end;
> 
> or the ‘text-indent’ property, as well. 
> <http://dev.w3.org/csswg/css-text/#text-indent-property>
> 
>   text-indent: 0% start, 50% center, 100% end;
> 
> Although the latter already supports percentages, 
> it is really just about various types of first lines. 
> Therefore, as a first step, ‘text-align’ could gain percentages 
> as an allowed value, where ‘0%’ = ‘start’, 
> but ‘50%’ ≠ ‘center’ and ‘100%’ ≠ ‘end’.
> That’s looking a bit like ‘padding-start’, of course, 
> if you only consider ‘start’ alignment for tabstops.

That sounds more complicated than just overloading ‘tab-size’.

Are you going to try to implement any of this? I'd love to see some
movement on this issue.

Nick
Received on Friday, 29 August 2014 16:30:21 UTC

This archive was generated by hypermail 2.4.0 : Friday, 25 March 2022 10:08:45 UTC