- From: fantasai <fantasai.lists@inkedblade.net>
- Date: Tue, 20 Aug 2013 17:08:59 -0700
- To: www-style@w3.org
On 06/14/2013 02:56 AM, fantasai wrote:
> There was an open issue on whether 'text-align-last' has an effect
> when 'text-align: justify' or not. IIRC in IE, it only works when
> 'text-align: justify', whereas in Gecko it works any time.
> [...]
> Having the two properties be independent creates this cascading problem.
> IE dealt with it by only triggering on 'text-align: justify'.
>
> An alternate way to deal with it is by making 'text-align' a shorthand
> of 'text-align-last'. This has a few benefits:
>
> 1. Solves cascading problem 100%, even for more complex
> cases that involve a return to 'text-align: justify'.
>
> 2. Allows nice shorthanding of common case with e.g.
> text-align: justify-all;
>
> 3. Behaves the way authors would expect given 'text-align' is a
> prefix of 'text-align-last'.
> [...]
> Full proposal would be:
>
> text-align: <alignment-values>{1,2} | justify-all;
> -> text-align-all: <alignment-values>;
> -> text-align-last: auto | <alignment-values>;
>
> (Alternatively, in this level, we could only allow a single position
> instead of two.)
>
> The poetry use case that currently uses two values
> text-align: start end; /* start-align first line, end-align rest */
> would become
> text-align: start-first end;
> which is probably more understandable anyway. Or we could defer it
> to L4 in case we want to consider a 'text-align-first' property
> instead.
Based on discussion from the last telecon
http://lists.w3.org/Archives/Public/www-style/2013Aug/0242.html
and Bert's email:
http://lists.w3.org/Archives/Public/www-style/2013Jul/0706.html
Here's the full proposal for L4:
<alignment> := left | right | center | start | end | justify
text-align: <'text-align-all'> <'text-align-last'>? | justify-all
-> text-align-all: start-first end | <alignment>
-> text-align-last: auto | <alignment>
* If a line is both first and last, it follows the "first line"
rule if there's a special one, otherwise it follows the
"last line" rule.
* A missing 'text-align-last' value in the shorthand becomes 'auto'.
(Note: Alternately, we can create a text-align-first property,
instead of putting 'start-first' as part of text-align-all.
But I can't think of any reason to want them to cascade
separately. The text-align-last property has the useful and
interesting property of controlling unjustifiable lines,
however, and might have reasons to cascade separately.)
For the subset we'll take for L3, I suggest we leave out the
'start-first' keyword. It lets us think a bit longer about
exactly the right syntax for that.
text-align: <'text-align-all'> <'text-align-last'>? | justify-all
-> text-align-all: <alignment>
-> text-align-last: auto | <alignment>
These match up to Bert's cases as follows:
1. text-align: start-first end;
First line start-aligned (left for LTR), subsequent lines end-aligned.
2. See #1. (Unless someone has a use case for end-aligning the first line,
in which case we can add text-align: end-first start.)
3. text-align: left;
All lines left-aligned.
4. text-align: right;
All lines right-aligned.
5. text-align: center;
All lines centered.
6. text-align: justify;
All lines justified, last (and unjustifiable) lines start-aligned.
7. text-align: justify left;
All lines justified, last (and unjustifiable) lines left-aligned.
8. text-align: justify right;
All lines justified, last (and unjustifiable) lines right-aligned.
9. text-align: justify center;
All lines justified, last (and unjustifiable) lines centered.
10. text-align: justify-all;
All lines justified.
11-15. Not adding top/bottom. I think we've covered all vertical-text
use cases with just left/right/start/end.
~fantasai
p.s. For the pedants, I'm ignoring the inherit | initial | match-parent
values for the purposes of this discussion.
Received on Wednesday, 21 August 2013 00:09:29 UTC