DEV Community

Cover image for Mastering CSS unicode-bidi Property

Posted on

Mastering CSS unicode-bidi Property

Mastering CSS unicode-bidi Property

I've encountered numerous CSS properties that often require a deeper understanding to use effectively. One such property is unicode-bidi, an essential tool for managing text directionality, especially when dealing with bidirectional text on the web.

Understanding unicode-bidi

The unicode-bidi property in CSS allows developers to control how bidirectional text is displayed within block-level elements. Bidirectional text combines left-to-right and right-to-left languages, such as English and Arabic, often leading to display issues without proper handling.

Available Values of unicode-bidi

  1. normal - Default value, which allows elements to inherit the directionality of their parent elements.
  2. embed - Specifies that the element itself determines the text direction, overriding the parent's directionality.
  3. bidi-override - Forces the text direction based on the first strong directionality found in the text, useful for resolving conflicts.
  4. isolate - Creates a new text embedding context within the element, ensuring text directionality isolation.
  5. isolate-override - Combines the features of both isolate and bidi-override, giving explicit control over directionality.
  6. plaintext - Treats the text as plain text without any directional formatting, suitable for code snippets and similar content.

Classifying Characters: Strong vs. Weak

In the context of bidirectional text, characters are classified as either strong or weak. Strong characters, such as letters and symbols, possess inherent directionality, while weak characters, like numbers and punctuation, adapt to the surrounding text direction.

Examples of Strong and Weak Characters:

  • Strong Character: Arabic text (strongly right-to-left direction)
  • Weak Character: English numbers and punctuation (adapts to surrounding direction)

Impact of Inline Elements on Text Directionality

Consider a scenario where a parent block element has a left-to-right direction (direction: ltr;), and an inline child element like a <span> requires right-to-left directionality (unicode-bidi: embed; direction: rtl;). The result may seem counterintuitive due to the interaction of text direction and display properties.

Example Implementation:

<div style="direction: ltr;">
  This text is left-to-right.
  <span style="unicode-bidi: embed; direction: rtl;">اجتهد بكل قلبك وتوكل على الله، فسيساعدك الله في تحقيق أحلامك</span>
Enter fullscreen mode Exit fullscreen mode

In this example, the <span> element, despite having right-to-left directionality, will appear aligned to the left within the parent block that is left-to-right. This discrepancy showcases the influence of text direction and the behavior of inline elements.

tay tuned for more in-depth explorations of CSS concepts and best practices in web development!


By mastering the nuances of the unicode-bidi property and understanding the distinctions between strong and weak characters in bidirectional text, you can enhance the readability and consistency of text content on your web pages.

Stay tuned for more in-depth explorations of CSS concepts and best practices in web development!

Feel free to incorporate additional examples or refine the content further to suit your needs!

Top comments (0)