- From: David Perrell <davidp@earthlink.net>
- Date: Mon, 2 Dec 1996 12:12:39 -0800
- To: <www-style@w3.org>, "Bert Bos" <bert@w3.org>
Bert Bos wrote:-----------
Not all cases can be done with tables.
1. when the element should start at a position that is already
occupied,
it moves to the next line:
>short >second column
>longer than the first column
>second column
(didn't I see that one in a different discussion before...:-) )
2. columns can `overlap', when left/right tabs are alternated:
>left short a longer text aligned on the right<
>a longer text on the left a short text right<
-------------------------
Either case should be doable with 'float: right' blocks of text (deja
vu?), #1 using an explicit width:
.t1 { float: right;
width: nn% }
short <SPAN CLASS=t1>second column</SPAN>
longer than the first column <SPAN CLASS=t1>second column</SPAN>
#2 with:
.t2 { float: right;
align: right }
left short <SPAN CLASS=t2>a longer text aligned on the right</SPAN>
a longer text on the left <SPAN CLASS=t2>a short text right</SPAN>
------------------------
...before discussing the proposal, we should answer a few questions
about tabs:
A. Does the tab *character* (Unicode 9) have any meaning in HTML
(outside of preformatted text)?
- no, it is just white space
- yes, it is a SHORTREF for <SPAN STYLE="something">
-----------------------
Why should *any* entity names/numbers collapse? What then would be the
point of the SGML '&sp;' and '&tab;' entity names? The only reason for
collapsing white space is to allow readable markup. Collapsing entity
names simply imposes artificial constraints.
-----------------------
B. Is it easier to set a position on an element (as I did in the
proposal below), or to set a couple of (numbered) positions on
the
parent element, which are then inherited?
- the former needs less syntax in CSS
- the latter introduces an indirection, which may be easier to
maintain in the long run
- we could have both, but that might be too complicated
-----------------------
I suspect most authors would prefer the simplicity and familiarity of
tab positions, as in:
P { tab-default: .5in blank left fixed;
tab-stops: 5em left 30em "_" right 32em left 52em "_" right}
<P>&tab;Column1&tab;&tab;Column3&tab;
Column1__________________ Column3_____________
Your proposal seems more consistent with existing HTML tag behavior,
but it requires a lot of markup. The markup for a TOC could be greater
than the content.
-----------------------
C. What is the better behaviour when a tab position is already
occupied?
- skip to the next line (as I did in the example above, and as
Scott Preece suggested)
- go backward and overwrite existing text (as TeX does it)
- both, subject to a CSS property
-----------------------
CSS property: [ flow | fixed | column ]. Flow would be standard word
processor behavior (use the next tab stop -- to the next line if
necessary). Fixed would force overwrite. Column would move to the
correct position on the next line, with any leader being rendered
normally:
First item second item going too long
............third w/column property and leader
-----------------------
D. What kinds of tabs are there? left, right, center, decimal, any
others? Does `decimal' need an argument, or is the language's
default decimal character good enough?
-----------------------
Best to be able to define the alignment character. But the effect of
using other characters would doable if two tab stops could occupy the
same position -- one with align right and the other with align left.
Such as:
P { tab-stops: 40% right 40% left }
<P>rendered as:&tab;2000;&tab;3000<BR>
&tab;40;&tab;50
rendered as: 2000;3000
40;50
----------------------
E. What kinds of leaders are there? Is a small set good enough or do
we need arbitrary characters (or images?)? If a small set, what
is
that set?
----------------------
Arbitrary character. Repeating image doesn't sound useful enough to
warrant implementation and could be done with floats or tables with a
background url.
----------------------
F. How does tabbed text wrap? Like this:
left >tabbed text that is
too long wraps but
stays behind the tab
Like this:
left >tabbed text that is
too long wraps without
considering that tab anymore
Or like this:
left >tabbed text never wraps at all, no matter how...
----------------------
Could depend on the positioning behavior property. Wrap as the first
example if 'column', as the second if 'flow', as the third if 'fixed'.
----------------------
G. If a tab stop is outside the current margins, does it have any
effect?
----------------------
Not if using the tab stop model. With your proposal, tabs could be
defined as a special kind of float and as such be 'outside the normal
flow' and extend outside the parent element. But in that case it would
be difficult to explain how a wrap to the beginning of the next line
fits into the CSS formatting model.
----------------------
H. What are the internationalization pitfalls? The proposal below
has
at least one: it says that decimal tabs act as right tabs when
there is no decimal separator. It should probably say that it
acts
as right or left, depending on the current writing direction.
----------------------
No comment.
David Perrell
Received on Monday, 2 December 1996 15:21:31 UTC