Re: text-oveflow for _multiline_ texts

15.01.2012, 22:54, "Brad Kemper" <brad.kemper@gmail.com>:
> On Jan 15, 2012, at 6:54 AM, Marat Tanalin | tanalin.com <mtanalin@yandex.ru> wrote:
>
>> šHello. It would be nice to be able to use text-overflow property for _multiline_ (and _multiword_) texts sothat _last_ visible line of text would be clipped same way as it currently happens with single-line texts.
>>
>> šThis could be done by specifying maximum number of _lines_ to display (in addition to text-overflow type like 'ellipsis') _without_ making text unwrappable with {white-space: nowrap}:
>>
>> šPossible syntax:
>>
>> šššš/* 'ln' unit means 'line' */
>> ššššDIV {text-overflow: 3ln ellipsis; }
>>
>> šThis could be splitted/expanded to following subproperties:
>>
>> ššššDIV {
>> šššššššštext-overflow-limit: 3ln;
>> šššššššštext-overflow-style: ellipsis;
>> šššš}
>
> It seems odd to me to have the text clipping done by something other than an edge of the content box. If you have a measure for number of lines (3ln, above), then why not use that for box height (height: 3ln;)? Then you could have something like 'text-overflow-lines: single | multi', and use it in a shorthand that defaults to 'single'. A new unit based on the height of line-boxes is not strictly necessary for this, and is really a separate issue. Until then, this would suffice to accomplish your main goal, I think:
>
> DIV {
> šššline-height: 1.5em;
> šššheight: 4.5em;
> šššoverflow: clip;
> ššštext-overflow: ellipsis multi;
> }

Thanks for the comment, Brad.

Need for calculating height/line-height ratio is redundant and harmful since we could then be forced to change height each time we change line-height. Also, browser's rounding accuracies could result in wrong/inconsistent rendering.

Even worse, real line height is not always equal to specified one -- for example, if text has inline image which height is greater than specified line-height.

Moreover, required height of a block is not always equal to total height of text lines we want to display. It would be unreasonable to force web-developers to add extra-wrapper if we could do the same without extra-wrapper and with more smart CSS feature.

So instead, we could just set number of lines, and browser could do the rest for us. Such automation is quite reasonable and handy.

> A new unit based on the height of line-boxes is not strictly necessary for this, and is really a separate issue.

New unit just gives us some flexibility as for adding another type of limit in future. For example, if we'll want to clip by number of characters, we could use 'ch' unit:

    DIV {text-overflow: 10ch ellipsis; }

This would mean that not more than 10 characters should be shown (this would make sense at least for monospace fonts).

In abstraction from such flexibility, we could have just dedicated text-overflow subproperty such as text-overflow-lines without need for new unit at all:

    DIV {
        text-overflow-lines: 3;
        text-overflow-style: ellipsis;
    }


Exact way to specify number of lines is subject to discuss. The main point is much more fundamental: add ability to clip text by number of lines to be able to use text-overflow with multiline texts which is (AFAIK) currently impossible thus making text-overflow almost useless in real practice.

Received on Sunday, 15 January 2012 19:50:30 UTC