unicode-bidi

The unicode-bidi CSS property, together with the direction property, determines how bidirectional text in a document is handled. For example, if a block of content contains both left-to-right and right-to-left text, the user-agent uses a complex Unicode algorithm to decide how to display the text. The unicode-bidi property overrides this algorithm and allows the developer to control the text embedding.

The unicode-bidi and direction properties are the only properties that are not affected by the all shorthand.

Note: This property is intended for Document Type Definition (DTD) designers. Web designers and similar authors should not override it.

/* Keyword values */
unicode-bidi: normal;
unicode-bidi: embed;
unicode-bidi: isolate;
unicode-bidi: bidi-override;
unicode-bidi: isolate-override;
unicode-bidi: plaintext;
/* Global values */
unicode-bidi: inherit;
unicode-bidi: initial;
unicode-bidi: unset;

Syntax

Values

normal
The element does not offer an additional level of embedding with respect to the bidirectional algorithm. For inline elements, implicit reordering works across element boundaries.
embed
If the element is inline, this value opens an additional level of embedding with respect to the bidirectional algorithm. The direction of this embedding level is given by the direction property.
bidi-override
For inline elements this creates an override. For block container elements this creates an override for inline-level descendants not within another block container element. This means that inside the element, reordering is strictly in sequence according to the direction property; the implicit part of the bidirectional algorithm is ignored.
isolate
This keyword indicates that the element's container directionality should be calculated without considering the content of this element. The element is therefore isolated from its siblings. When applying its bidirectional-resolution algorithm, its container element treats it as one or several U+FFFC Object Replacement Character, i.e. like an image.
isolate-override
This keyword applies the isolation behavior of the isolate keyword to the surrounding content and the override behavior of the bidi-override keyword to the inner content.
plaintext
This keyword makes the elements directionality calculated without considering its parent bidirectional state or the value of the direction property. The directionality is calculated using the P2 and P3 rules of the Unicode Bidirectional Algorithm.
This value allows the display of data that is already formatted using a tool following the Unicode Bidirectional Algorithm.

Formal definition

Initial valuenormal
Applies toall elements, though some values have no effect on non-inline elements
Inheritedno
Computed valueas specified
Animation typediscrete

Formal syntax

normal | embed | isolate | bidi-override | isolate-override | plaintext

Examples

CSS

.bible-quote {
  direction: rtl;
  unicode-bidi: embed;
}

HTML

<div class="bible-quote">
  A line of text
</div>
<div>
  Another line of text
</div>

Result

Specifications

Specification Status Comment
CSS Writing Modes Module Level 3
The definition of 'unicode-bidi' in that specification.
Proposed Recommendation Added plaintext, isolate, and isolate-override keywords.
CSS Level 2 (Revision 1)
The definition of 'unicode-bidi' in that specification.
Recommendation Initial definition.

Browser compatibility

DesktopMobile
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidFirefox for AndroidOpera for AndroidSafari on iOSSamsung Internet
unicode-bidiChrome Full support 2Edge Full support 12Firefox Full support 1IE Full support 5.5Opera Full support 9.2Safari Full support 1.3WebView Android Full support 1Chrome Android Full support 18Firefox Android Full support 4Opera Android Full support 10.1Safari iOS Full support 3.1Samsung Internet Android Full support 1.0
isolateChrome Full support 48
Full support 48
Full support 16
Prefixed Notes
Prefixed Implemented with the vendor prefix: -webkit-
Notes Avoiding using -webkit-isolate. It can lock up older versions of Safari (up to version 9) and Chrome (up to version 47).
Notes Since Chrome 19, the syntax from a previous version of the specification, where the isolate keyword could be used together with bidi-override, is allowed.
Edge Full support 79
Full support 79
Full support 79
Prefixed
Prefixed Implemented with the vendor prefix: -webkit-
Firefox Full support 50
Full support 50
No support 10 — 54
Prefixed Notes
Prefixed Implemented with the vendor prefix: -moz-
Notes From Firefox 10 to Firefox 16 (inclusive), the isolate keyword could be used together with bidi-override, which was the syntax from a previous version of the specification. From Firefox 17, only one value is allowed. Use isolate-override instead the previous isolate bidi-override.
IE No support NoOpera Full support 35
Full support 35
Full support 15
Prefixed Notes
Prefixed Implemented with the vendor prefix: -webkit-
Notes Avoiding using -webkit-isolate. It can lock up older versions of Opera (up to version 34).
Notes The syntax from a previous version of the specification, where the isolate keyword could be used together with bidi-override, is allowed.
Safari Full support 6
Prefixed Notes
Full support 6
Prefixed Notes
Prefixed Implemented with the vendor prefix: -webkit-
Notes Avoiding using -webkit-isolate. It can lock up older versions of Safari (up to version 9) and Chrome (up to version 47).
WebView Android Full support 48Chrome Android Full support 48Firefox Android Full support 50
Full support 50
No support 10 — 54
Prefixed Notes
Prefixed Implemented with the vendor prefix: -moz-
Notes From Firefox 10 to Firefox 16 (inclusive), the isolate keyword could be used together with bidi-override, which was the syntax from a previous version of the specification. From Firefox 17, only one value is allowed. Use isolate-override instead the previous isolate bidi-override.
Opera Android Full support 35Safari iOS Full support 6
Prefixed Notes
Full support 6
Prefixed Notes
Prefixed Implemented with the vendor prefix: -webkit-
Notes Avoiding using -webkit-isolate. It can lock up older versions of Safari (up to version 9) and Chrome (up to version 47).
Samsung Internet Android Full support 5.0
isolate-overrideChrome Full support 48Edge Full support 79Firefox Full support 50
Full support 50
No support 17 — 54
Prefixed
Prefixed Implemented with the vendor prefix: -moz-
IE No support NoOpera Full support 35Safari No support NoWebView Android Full support 48Chrome Android Full support 48Firefox Android Full support 50
Full support 50
No support 17 — 54
Prefixed
Prefixed Implemented with the vendor prefix: -moz-
Opera Android Full support 35Safari iOS No support NoSamsung Internet Android Full support 5.0
plaintextChrome Full support 48Edge Full support 79Firefox Full support 50
Full support 50
No support 10 — 54
Prefixed Notes
Prefixed Implemented with the vendor prefix: -moz-
Notes Before Firefox 50, the plaintext value was ignored for vertical writing modes (bug 1302734).
Notes Before Firefox 15, plaintext didn't do anything to an inline element. The specification changed and the implementation was changed in Firefox 15.
IE No support NoOpera Full support 35Safari No support NoWebView Android Full support 48Chrome Android Full support 48Firefox Android Full support 50
Full support 50
No support 10 — 54
Prefixed Notes
Prefixed Implemented with the vendor prefix: -moz-
Notes Before Firefox 50, the plaintext value was ignored for vertical writing modes (bug 1302734).
Notes Before Firefox 15, plaintext didn't do anything to an inline element. The specification changed and the implementation was changed in Firefox 15.
Opera Android Full support 35Safari iOS No support NoSamsung Internet Android Full support 5.0

Legend

Full support
Full support
No support
No support
See implementation notes.
See implementation notes.
Requires a vendor prefix or different name for use.
Requires a vendor prefix or different name for use.

See also