Bug 70373
Summary: | Putting a dir attribute on a bdi element makes it lose isolation | ||
---|---|---|---|
Product: | WebKit | Reporter: | Aharon (Vladimir) Lanin <aharon> |
Component: | CSS | Assignee: | Nobody <webkit-unassigned> |
Status: | RESOLVED FIXED | ||
Severity: | Normal | CC: | aharon, amir.aharoni, eric, leviw, playmobil, rniwa, shanestephens |
Priority: | P2 | ||
Version: | 528+ (Nightly build) | ||
Hardware: | All | ||
OS: | All | ||
Bug Depends on: | 63903 | ||
Bug Blocks: | 50910 |
Aharon (Vladimir) Lanin
This is true whether you say dir=ltr, dir=rtl, or even dir=auto (even though dir=auto is in fact supposed to imply isolation on any element - see https://bugs.webkit.org/show_bug.cgi?id=63903). Please note that <bdi dir="ltr|rtl"> is very useful - IMO, it should replace <span dir="ltr|rtl"> as the usual way of indicating an inline direction change: isolation extremely rarely hurts, and is often quite necessary. This is bad enough, but given that <bdi> currently does not have dir=auto by default (https://bugs.webkit.org/show_bug.cgi?id=68773), <bdi> is currently completely broken.
The bug is due to the current default stylesheet, which says that specifying a dir attribute sets unicode-bidi to embed. This is incorrect in HTML5, i.e. http://dev.w3.org/html5/spec/Overview.html#bidirectional-text, which says that the default stylesheet should go like this:
:dir(ltr) { direction: ltr; }
:dir(rtl) { direction: rtl; }
[dir] { unicode-bidi: embed; }
bdi, bdi[dir], output, output[dir], [dir=auto i] { unicode-bidi: isolate; }
bdo, bdo[dir] { unicode-bidi: bidi-override; }
bdo[dir=auto i] { unicode-bidi: bidi-override isolate; }
textarea[dir=auto i], pre[dir=auto i] { unicode-bidi: plaintext; }
Implementing this trivial fix would also fix https://bugs.webkit.org/show_bug.cgi?id=63903.
Attachments | ||
---|---|---|
Add attachment proposed patch, testcase, etc. |
Aharon (Vladimir) Lanin
It would have been better if I had left out the first two lines I quoted from the HTML5 spec re the default stylesheet. They set direction, and not unicode-bidi, and are irrelevant to the bug. Furthermore, they make use of the :dir() pseudo-class, which has not been implemented yet (as far as I know); I am guessing that the direction property currently gets set by means other than the default stylesheet. In any case, the relevant lines from the HTML5 spec are:
[dir] { unicode-bidi: embed; }
bdi, bdi[dir], output, output[dir], [dir=auto i] { unicode-bidi: isolate; }
bdo, bdo[dir] { unicode-bidi: bidi-override; }
bdo[dir=auto i] { unicode-bidi: bidi-override isolate; }
textarea[dir=auto i], pre[dir=auto i] { unicode-bidi: plaintext; }
I expect that some of these, e.g. the last one, are already in the default stylesheet. The rest need to go in, and the order is important.
Ryosuke Niwa
Fixed in http://trac.webkit.org/changeset/101268.