OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.


Help: OASIS Mailing Lists Help | MarkMail Help

dita message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]

Subject: DIR attribute proposal

This is the most full-fledged proposal that I've seen. It was buried in an attachment to an attachment to one of Joanne's emails. It is from Gershon Joseph.

 Dir Attribute Proposal

1. Background

While most languages are written in text where characters flow from left to right, Hebrew and many Arabic languages are written from right to left. In some languages, including Hebrew and Arabic, numbers and other content is written left to right. Also, a multilingual document containing, for example, English and Hebrew, contains some text that flows left to right and other text that flows right to left.

Text directionality is controlled by the following:

  1. xml:lang attribute on the document element or, if not specified, default language assumed by the processor. Directionality is determined by the Unicode bidirectional algorithm for this language.

  2. xml:lang attribute on any element that overrides the inherited language. Again, directionality is determined by the Unicode bidirectional algorithm for the specified language.

  3. dir="ltr|rtl" attribute on an element that overrides the inherited direction (as determined by dir on a parent element or either specified or inferred xml:lang on a parent element). The specified direction overrides the Unicode bidirectional algorithm only on neutral Unicode characters (e.g. spaces and punctuation) in the element's content.

  4. dir="lro|rlo" attribute on an element. The specified direction overrides the Unicode bidirectional algorithm on all Unicode characters in the element's content.

In most cases, authors need to use dir="rtl|ltr" to ensure punctuation surrounding a RTL phrase inside a LTR element is rendered correctly. In order to override the direction of strongly typed Unicode characters (most characters that apply to a language except for punctuation, spaces and digits), the author would need to use dir="lro|rlo". The use of the dir attribute and the Unicode algorithm is clearly explained in the article [REF 1]. The referenced article has several examples on the use of dir="rtl|ltr". There is no example on the use of dir="lro|rlo", though it can be inferred from the example using the bdo element (the old W3C way of overriding the entire Unicode bidirectional algorithm; the now favor using the override values on the dir attribute).

Text direction cannot be sufficiently specified by the xml:lang attribute alone, because numeric and punctuation characters are input, and rendered, according to the Unicode bidirectional algorithm, which often cannot correctly determine the correct direction of the characters.

From the HTML 4.0 spec:

The dir attribute specifies the directionality of text: left-to-right (dir="ltr", the default) or right-to-left (dir="rtl"). Characters in Unicode are assigned a directionality, left-to-right or right-to-left, to allow the text to be rendered properly. For example, while English characters are presented left-to-right, Hebrew characters are presented right-to-left. Unicode defines a bidirectional algorithm that must be applied whenever a document contains right-to-left characters. While this algorithm usually gives the proper presentation, some situations leave directionally neutral text and require the dir attribute to specify the base directionality. Text is often directionally neutral when there are multiple embeddings of content with a different directionality. For example, an English sentence that contains a Hebrew phrase that contains an English quotation would require the dir attribute to define the directionality of the Hebrew phrase. The Hebrew phrase, including the English quotation, would be contained within a ph element with dir="rtl".

2. Specification changes

Add a new attribute called "dir", as follows:


This attribute, when set to "ltr" or "rtl", overrides the default Unicode bidirectional algorithm on neutral characters (such as spaces and punctuation). These values are usually used to ensure punctuation is applied correctly in a phrase.

This attribute, when set to "lro" or "rlo", overrides the default Unicode bidirectional algorithm on all characters. These values are usually used to force a direction on all characters contained in a phrase.

This attribute is usually used in conjunction with the xml:lang attribute, to override the default Unicode bidirectional algorithm that applies to the specified language.

This attribute is available on all elements within DITA.

Additional rules to be documented:

  • When the dir attribute is set on an element, it remains in effect for the duration of the element and all child elements. Setting the dir attribute on a nested element overrides the inherited value.

  • If the document element does not specify the dir attribute, then if the document element specifies the xml:lang attribute, the Unicode Bidirectional Algorithm must be applied to the specified language. If neither xml:lang nor dir attributes are set on the document element, the processor must assume a language and the direction must be inferred from the Unicode Bidirectional Algorithm applied to the default language.

  • The dir attribute can also be used to specify the direction of non-textual content, such as tables and lists. In the case of <table dir="rtl">, the columns flow from right to left. In the case of <ul dir="rtl"> or <ol dir="rtl">, the list decoration (bullets or numbers) appear on the right of the screen/page and the <li> content flows from right to left.


<p dir="ltr">
The Hebrew word for "Hebrew" is <ph xml:lang="he-il">עברית</ph>,
but since Hebrew letters have intrinsic right-to-left directionality,
I had to type the word starting from the letter "ע",
i.e. <ph xml:lang="he-il" dir="lro">תירבע</ph>.

Many good examples are provided in [REF 1].

While many of the issues can be resolved using the so-called Unicode control characters (hidden characters with strong directionality of either LTR or RTL), the W3C discourages use of the control characters (see [REF 1]). Our documentation of the dir attribute should probably include something like "When directionality issues can be resolved by either use of the dir attribute or use of Unicode control characters (LRM, RLM) , use of the dir attribute is strongly recommended."


[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]