From: Ben C on
On 2008-03-29, removeps-groups(a)yahoo.com <removeps-groups(a)yahoo.com> wrote:
> How to wrap text in <p> tag if the text has no spaces and is very
> long? Here is an example:
>
><p>VeryVeryLongVeryVeryLongVeryVeryLongVeryVeryLongVeryVeryLongVeryVeryLongVeryVeryLongVeryVeryLongVeryVeryLongVeryVeryLongVeryVeryLongVeryVeryLongVeryVeryLongVeryVeryLongVeryVeryLongVeryVeryLongVeryVeryLongVeryVeryLong</
> p>
>
> The above line is so long that it ought to wrap. But because it has
> no spaces, it does not wrap. Instead the entire text is really on one
> line. In Dreamweaver they show you the text going on and on to the
> right, about 3 screen lengths. But in Firefox, the text past the div
> boundary (ie. to the right of the boundry) does not show up.

The only way to make it wrap in browsers is to put zero-width breaking
spaces in.

This should work:

VeryVeryLongVery&#8203;Longword

Put the &#8203; characters in wherever you think the browser should
break the text. It doesn't make it break there and then (use <br> for
that), it just creates a breaking opportunity.

An alternative to &#8203; is the non-standard <wbr> element:

VeryVeryLongVery<wbr>Longword

It's non-standard but some browsers may support <wbr> that don't support
&#8203; I'm not sure.
From: dorayme on
In article <slrnfutir6.hgt.spamspam(a)bowser.marioworld>,
Ben C <spamspam(a)spam.eggs> wrote:

> On 2008-03-29, removeps-groups(a)yahoo.com <removeps-groups(a)yahoo.com> wrote:
> > How to wrap text in <p> tag if the text has no spaces and is very
> > long? Here is an example:
> >
> ><p>VeryVeryLongVeryVeryLongVeryVeryLongVeryVeryLongVeryVeryLongVeryVeryLongVe
> >ryVeryLongVeryVeryLongVeryVeryLongVeryVeryLongVeryVeryLongVeryVeryLongVeryVer
> >yLongVeryVeryLongVeryVeryLongVeryVeryLongVeryVeryLongVeryVeryLong</
> > p>
> >
> > The above line is so long that it ought to wrap. But because it has
> > no spaces, it does not wrap. Instead the entire text is really on one
> > line. In Dreamweaver they show you the text going on and on to the
> > right, about 3 screen lengths. But in Firefox, the text past the div
> > boundary (ie. to the right of the boundry) does not show up.
>
> The only way to make it wrap in browsers is to put zero-width breaking
> spaces in.
>
> This should work:
>
> VeryVeryLongVery&#8203;Longword
>
> Put the &#8203; characters in wherever you think the browser should
> break the text. It doesn't make it break there and then (use <br> for
> that), it just creates a breaking opportunity.
>
> An alternative to &#8203; is the non-standard <wbr> element:
>
> VeryVeryLongVery<wbr>Longword
>
> It's non-standard but some browsers may support <wbr> that don't support
> &#8203; I'm not sure.

There is a table of what browsers do with wbr, &#8203;, and &shy; at:
<http://www.quirksmode.org/oddsandends/wbr.html>

--
dorayme
From: Jukka K. Korpela on
Scripsit Ben C:

>><p>VeryVeryLongVeryVeryLongVeryVeryLongVeryVeryLongVeryVeryLongVeryVeryLongVeryVeryLongVeryVeryLongVeryVeryLongVeryVeryLongVeryVeryLongVeryVeryLongVeryVeryLongVeryVeryLongVeryVeryLongVeryVeryLongVeryVeryLongVeryVeryLong</
>> p>

This first question is: why would anyone write such a monstrosity? The
second question is: if you would like it to be broken by a browser,
should the browser read your mind to decide whether it should hyphenate
or just break it?

> The only way to make it wrap in browsers is to put zero-width breaking
> spaces in.

No it isn't, as you describe later. Besides, it is up to browsers to
decide whether they automatically hyphenate words. Currently they have
decided not to. There is nothing in CSS as currently defined to suggest
either hyphenation or breaking strings without hyphenation-

> This should work:
>
> VeryVeryLongVery&#8203;Longword

Should it? By which specification? Beware that HTML specifications do
not require Unicode conformance or support to particular Unicode
characters.

> It's non-standard but some browsers may support <wbr> that don't
> support &#8203; I'm not sure.

I am. The <wbr> markup is far better supported and it is not know to
cause any trouble, unlike &#8203; which may in fact be rendered using a
glyph for unsupported characters.

More info: http://www.cs.tut.fi/~jkorpela/html/nobr.html#suggest

--
Jukka K. Korpela ("Yucca")
http://www.cs.tut.fi/~jkorpela/

From: Ben C on
On 2008-03-30, Jukka K. Korpela <jkorpela(a)cs.tut.fi> wrote:
> Scripsit Ben C:
>
>>><p>VeryVeryLongVeryVeryLongVeryVeryLongVeryVeryLongVeryVeryLongVeryVeryLongVeryVeryLongVeryVeryLongVeryVeryLongVeryVeryLongVeryVeryLongVeryVeryLongVeryVeryLongVeryVeryLongVeryVeryLongVeryVeryLongVeryVeryLongVeryVeryLong</
>>> p>
>
> This first question is: why would anyone write such a monstrosity?

Often because it's a URL generated by something like a content
management system that requires at least one unique URL for each atom in
the universe.

> The second question is: if you would like it to be broken by a
> browser, should the browser read your mind to decide whether it should
> hyphenate or just break it?
>
>> The only way to make it wrap in browsers is to put zero-width breaking
>> spaces in.
>
> No it isn't, as you describe later. Besides, it is up to browsers to
> decide whether they automatically hyphenate words. Currently they have
> decided not to. There is nothing in CSS as currently defined to
> suggest either hyphenation or breaking strings without hyphenation-

Well, in the sense that CSS doesn't define exactly what a "line-breaking
opportunity" is. But it does imply that browsers should only ever break
lines at line-breaking opportunities, and that what counts as a
line-breaking opportunity doesn't change just because there is less
space available.

In fact Unicode specifications do define a lot of stuff about line
breaking and most browsers either implement that or a simplification of
it although as we know they aren't required to.

>> This should work:
>>
>> VeryVeryLongVery&#8203;Longword
>
> Should it? By which specification? Beware that HTML specifications do
> not require Unicode conformance or support to particular Unicode
> characters.

I did know that, since you have pointed it out previously. I just meant
"should work" in the sense of "probably will".
From: Jukka K. Korpela on
Scripsit Ben C:

>> This first question is: why would anyone write such a monstrosity?
>
> Often because it's a URL generated by something like a content
> management system that requires at least one unique URL for each atom
> in the universe.

Then this problem should be fixed instead of trying to make the display
of a monstrous URL wrapped. URLs are to be used in attribute values in
HTML, not as textual content (except when you _discuss_ URLs as strings,
and then you should be competent enough in HTML matters and "URL in
context" rules).

>> There is nothing in CSS as currently defined to
>> suggest either hyphenation or breaking strings without hyphenation-
>
> Well, in the sense that CSS doesn't define exactly what a
> "line-breaking opportunity" is.

It doesn't define it at all. It would be appropriate to say that _HTML_
doesn't define it exactly (but makes, unline CSS, some vague feeble
attempts at making notes that remotely resemble excuses for parts of
draft definitions).

> But it does imply that browsers
> should only ever break lines at line-breaking opportunities, and that
> what counts as a line-breaking opportunity doesn't change just
> because there is less space available.

Huh, what, where? I don't see such things in CSS specs. The statement
"browsers should only ever break lines at line-breaking opportunities"
is more or less a truism (line break opportunities are line break
opportunities), but I don't think CSS says even that.

In CSS 3 drafts, there are attempts at defining properties for line
breaking control, but they are incomplete sketches that have made little
if any progress during the last few years, and they are neither
normative or even proposed normative document nor implemented even
experimentally in available browsers, except for some properties.

> In fact Unicode specifications do define a lot of stuff about line
> breaking

Quite a lot indeed, with many oddities.

> and most browsers either implement that or a simplification
> of it although as we know they aren't required to.

I don't think any browser even tries to get close to implementing
Unicode line breaking rules or even a simplification of them. Rather,
browsers may apply some of those rules, typically in a poor way they
were never meant to be used. The rules say that you may break after a
hyphen, but it's just stupid to do so in a string like " -x ".

--
Jukka K. Korpela ("Yucca")
http://www.cs.tut.fi/~jkorpela/