- From: Aharon (Vladimir) Lanin <aharon@google.com>
- Date: Sun, 26 Sep 2010 02:01:23 +0200
- To: Matitiahu Allouche <matial@il.ibm.com>
- Cc: fantasai <fantasai.lists@inkedblade.net>, "Phillips, Addison" <addison@lab126.com>, Adil Allawi <adil@diwan.com>, Behdad Esfahbod <behdad@behdad.org>, Ehsan Akhgari <ehsan@mozilla.com>, public-i18n-bidi@w3.org, public-i18n-bidi-request@w3.org, Shachar Shemesh <shachar@shemesh.biz>
- Message-ID: <AANLkTim8ZkqOQo4qNepS5Gc_=jb5LcEyhFgZV9F6q+pO@mail.gmail.com>
Here is an updated spec for dir=auto and for autodirmethod=first-strong|any-rtl|plaintext, attempting to reflect discussion that has taken place since the previous attempt. Please respond! - The autodirmethod attribute value inherits if not explicitly specified. For the root element, it's first-strong by default. - Re dir attribute value inheritance, it is unchanged from current browser behavior (which is not exactly to HTML 4 spec). The current behavior can be specified in two alternative forms: - (In terms of CSS) The dir attribute value does not inherit. For the root element, it is "ltr" by default. In the absence of the dir attribute and an explicit CSS direction property, the CSS direction property inherits, but this only affects elements that place their contents in a separate UBA paragraph or embedding level, e.g. elements with CSS display other than "inline", elements with CSS unicode-bidi other than "normal", <textarea> and <input type="text">. Setting the dir attribute not only updates the CSS direction property but also sets the CSS unicode-bidi property to a value other than "normal", thus making sure that the direction property has an effect. - (More independent of CSS) For elements that place their contents in a separate UBA paragraph or embedding level, e.g. elements with CSS display other than "inline", elements with CSS unicode-bidi other than "normal", <textarea>, and <input type="text">, the dir attribute inherits from the closest ancestor with a value (or "ltr" if none). For elements that do not place their contents in a separate UBA paragraph or embedding level, the dir attribute is not inherited and has no default value. - Using dir=auto on an element with autodirmethod=first-strong|any-rtl would: - Make the default value for the ubi attribute ubi (i.e. on), as described elsewhere. - Set the CSS direction to ltr or rtl according to the indicated algorithm. - Invoke the indicated algorithm on the in-order traversal of the descendent text nodes, with the following exceptions: - Text nodes under a descendant element with an explicit dir attribute (including dir=auto). - The part of the text after the first 100 (*still no agreement on the value to use here...)* characters (where the text in nodes excluded above are not part of the count). - Parts of the text between an LRE, RLE, LRO, RLO, and its matching PDF. - The first-strong algorithm returns the direction of the first strong (L, AL, or R) character it encounters. If it does not encounter any, it returns ltr if it encounters any weak ltr characters (EN or AN). If it does not encounter any of those either, it returns the inherited direction. - The any-rtl algorithm returns rtl if it encounters any strong RTL character, or ltr otherwise. - For <textarea> and <pre>, dir=auto with autodirmethod=plaintext would set unicode-bidi to "plaintext" and direction according to first-strong. *Alternatively, we can just leave the direction at the inherited value. The advantage of doing that is simplicity. The advantage of setting direction according to first-string is that this makes the all-neutral paragraphs in the element use the same direction as the first paragraph that is not all-neutral. Please indicate what you prefer.* - For elements other than <textarea> and <pre>, dir=auto with autodirmethod=plaintext is treated the same as dir=auto autodirmethod=first-strong. - unicode-bidi:plaintext definition (updated from current spec!): - For display:inline elements, the element is directionally isolated in a separate UBA paragraph, just like unicode-bidi:isolate. - For all UBA paragraphs that get their paragraph level (i.e. base direction) from this element, their paragraph level is determined not by the element's computed 'direction' property as usual, but by following rules P1, P2, and P3 of the Unicode bidirectional algorithm, i.e. their content. However, if no direction-determining character is found in step P2, then the value of the ‘direction’ property is used instead. Thus, different UBA paragraphs within the element may have different paragraph levels. - If the element's text-align or text-align-last is start or end, for every line box contained completely within the element, the alignment is determined by the paragraph level of the containing UBA paragraph that got its paragraph level from this element. *Is this a reasonable formulation? If we get rid of this bullet, the direction can be per-paragraph, but alignment can't.* Aharon On Tue, Sep 14, 2010 at 5:39 PM, Aharon (Vladimir) Lanin <aharon@google.com>wrote: > I second Mati's proposal. As Ehsan has pointed out <textarea readonly> can > be used to display plain text (as opposed to edit it), even though somewhat > awkwardly. And if we work out a bigger proposal, we can tweak the bugs filed > on HTML5 and CSS3. Right now it is imperative to produce a new draft of the > proposal and file the bugs (October 1 deadline for HTML5..., apparently). > > I do want to put dir=uba under the dir=auto umbrella, via > autodirmethod=first-strong|any-rtl|uba. autodirmethod inherits; dir does > not. The default would probably be first-strong. > > Is this agreeable to everyone? Please respond. > > Here is a quick spec for dir=auto: > > - Using dir=auto with autodirmethod=first-strong|any-rtl would: > - Make the default value for the ubi attribute ubi (i.e. on), as > described elsewhere. > - Set the CSS direction to ltr or rtl according to the indicated > algorithm. > - Invoke the indicated algorithm on the in-order traversal of the > descendent text nodes, with the following exceptions: > - Text nodes under a descendant element with an explicit dir > attribute (including dir=auto). > - The part of the text after the first X characters (where the > text in nodes excluded above are not part of the count). *Do we > need this? If so, what's a good X value? 100?* > - Parts of the text between an LRE, RLE, LRO, RLO, and its > matching PDF. > - The first-strong algorithm returns the direction of the first > strong (L, AL, or R) character it encounters. If it does not encounter any, > it returns ltr if it encounters any weak ltr characters (EN or AN). If it > does not encounter any of those either, it returns the inherited direction. > - The any-rtl algorithm returns rtl if it encounters any strong RTL > character, or ltr otherwise. > - Using dir=auto with autodirmethod=uba would (by default) set > unicode-bidi to "uba" and direction according to first-strong. (Note that > this includes leaving direction at the inherited value if the content is > neutral.) > - For elements other than <textarea>, unicode-bidi:uba is treated as > unicode-bidi:isolate. > - On <textarea>, unicode-bidi:uba means that: > - The UBA on the textarea content is invoked specifying only a > default paragraph level (in icu4j terminology, either LEVEL_DEFAULT_LTR or > LEVEL_DEFAULT_RTL), based on the the element's own direction value as > calculated above. (This makes the all-neutral paragraphs use the same > direction as the first paragraph that is not all-neutral.) > - Each UBA paragraph’s lines’ alignment is determined by the > paragraph’s resolved base level when the element's text-align is start or > end. > > > Aharon > > > On Tue, Sep 14, 2010 at 2:21 PM, Matitiahu Allouche <matial@il.ibm.com>wrote: > >> I don't feel competent enough to find the magic solution for all the >> questions that dir=uba seems to raise. This discussion has been going on >> for a while, and there is real danger that the whole item be shelved if a >> consensus is not found soon. >> >> However, based on the discussion on the list, I think that the following >> points are more or less agreeable to all: >> 1) dir=uba is mostly needed for <pre> and <textarea> elements. >> 2) All or most of the problems are related to using dir=uba with <pre>. >> 3) There are alternatives to using dir=uba with <pre> for multiple >> paragraphs, like separating the text in distinct paragraphs. >> 4) There is no problem related to using dir=uba with <textarea>. >> 5) There is no other way than dir=uba to achieve paragraph-based direction >> for <textarea>. >> >> Given the above, I am suggesting to at least allow dir=uba for <textarea>, >> even if its use for other types of elements is postponed or abandoned >> altogether. >> >> >> Shalom (Regards), Mati >> Bidi Architect >> Globalization Center Of Competency - Bidirectional Scripts >> IBM Israel >> Phone: +972 2 5888802 Fax: +972 2 5870333 Mobile: +972 52 >> 2554160 >> > >
Received on Sunday, 26 September 2010 00:02:43 UTC