Câte feluri de „text direction”

3 views
Skip to first unread message

DanMatei

unread,
May 16, 2009, 5:16:35 AM5/16/09
to Diacritice
Frații

Iar cer o lecție (pe gratis) :-(

Am ambâțul să bag într-o schema XML (pe lângă limbă și alfabet) și
direcția textului. Ca să tratez și text bidirecțional. Lăudabil, nu ?

Natural: am bagat valorile: "left-to-right" și "right-to-left".

Dar în XHTML 2.0 (și pe la Unicode), găsesc și valori cu „override”.
Iaca:

<citat>
dir = "ltr|rtl|lro|rlo"
This attribute allows the author to specify the direction of the
element's text content. This direction affects the display of
characters as defined in Unicode Standard Annex #9: The Bidirectional
Algorithm [UAX9], and defines directional properties of text as
defined by CSS2 [CSS2]. The default value of this attribute is ltr.
Possible values are:
ltr: Left-to-right text. The effect of this attribute is defined by
the CSS2 rule:
*[dir="ltr"] { unicode-bidi: embed; direction: ltr}
rtl: Right-to-left text. The effect of this attribute is defined by
the CSS2 rule:
*[dir="rtl"] { unicode-bidi: embed; direction: rtl}
lro: Left-to-right override. The effect of this attribute is defined
by the CSS2 rule:
*[dir="lro"] { unicode-bidi: bidi-override; direction: ltr}
rlo: Right-to-left override. The effect of this attribute is defined
by the CSS2 rule:
*[dir="rlo"] { unicode-bidi: bidi-override; direction: rtl}
</citat> din http://www.w3.org/TR/xhtml2/mod-bidi.html#s_bidimodule

Nu reușesc să mă lămuresc ce-i aia „override” (în acest context).
Cine, ce cotropește ? Ori e în sensul de a anula ? De ce ar fi ?
Primele două se anulează reciproc destul de bine.

Mulțam,

Dan Matei

PS. Și că veni vorba: văd în diverse exemple, la unele elemente
simultan atributele lang și xml:lang. Ce haz are ? Lang zice limba
atributelor, iar xml:lang zice limba conținutului ?

Strainu

unread,
May 16, 2009, 5:52:57 AM5/16/09
to diacr...@googlegroups.com
Salut,

Fără să fiu vreun guru în d-astea, m-am lovit de problemele astea când încercam să-mi fac o semnătură în arabă în Wikipedia. Ce-am înţeles eu:
* fiecare caracter unicode are o direcţie implicită
* dacă nu există alte markere de direcţie, algoritmul bidirecţional va inversa literele care ştie că se scriu de la stânga la dreapta.

  Ex: Să zicem că avem textul ăsta (ordinea e cea din fişier, literele mari se presupune că trebuie afişate rtl):
           romana1 ARABA1 romana2
        Pe ecran, asta va apărea ca:
           romana1 1ABARA romana2

Până aici e clar, zic eu. E, acu să zicem că vrei, ca în exemplul ăla de la link, să arăţi ordinea literelor în fişier, adică vrei să apară ceva de genul:
      În fişier, cuvantul 1ABARA este scris în ordinea ARABA1.

Ca să afişezi ARABA1 (adică să scrii literele arabe de la stânga la dreapta), trebuie să "cotropeşti" setarea implicită, deci ai nevoie de lro.

Un exemplu mai bun mi se pare cel dat în standardul HTML4.01: http://www.w3.org/TR/html401/struct/dirlang.html#h-8.2.4

E mai clar acu' sau e şi mai rău? (că fix la fel n-are cum să fie :P)

Andrei Cipu

2009/5/16 DanMatei <DanMa...@gmail.com>

Sorin Paliga

unread,
May 16, 2009, 8:19:47 AM5/16/09
to diacr...@googlegroups.com
Da, există domenii Unicode unde direcția LTR și/sau RTL este implicită și inclusă în codul caracterului. Sînt însă și situații cînd dorești LTR și/sau RTL pentru domenii care nu au codificat acest lucru, cum ar domeniul Old Italic, ceea ce înseamnă, în esență, etrusca. În varianta sa „clasică”, se scria de la dreapta la stînga, ulterior, prin influența latină, de la stînga la dreapta, odată cu evoluția caracterelor. Fonturile bine făcute, cum ar fi Alphabetum ori Code 2001, scriou frumos RTL, numai să poată aplicația să facă un soi de „custom RTL”. Unele nu știu, altele știu. Pentru lucrul cu asemenea domenii, e un șpil, care ar trebui codificat și extins la orice domeniu (teoretic), chiar dacă uneori este tot LTR.


Sorin Paliga
University of Bucharest 
Department of Slavic Languages 
Str. Pitar Moș 7–13, et. 1
010451 Bucharest
Romania






Dan Matei

unread,
May 16, 2009, 2:37:58 PM5/16/09
to diacr...@googlegroups.com
-----Original Message-----
From: Strainu <stra...@gmail.com>
Date: Sat, 16 May 2009 12:52:57 +0300

Salve


> * dacă nu există alte markere de direcţie, algoritmul bidirecţional va
> inversa literele care ştie că se scriu de la stânga la dreapta.

Aha ! Înțeleg acum că UNICODE e „bidirecțional” de felul lui. Așadar, în mod normal, n-am nevoie de impus nimic cu dir.
Doar dacă vreau să fac perversități de genul: text ebraic sau arab în ordine left-to-right.

Cam așa cum zici:

>
> Ex: Să zicem că avem textul ăsta (ordinea e cea din fişier, literele mari
> se presupune că trebuie afişate rtl):
> romana1 ARABA1 romana2
> Pe ecran, asta va apărea ca:
> romana1 1ABARA romana2
>
> Până aici e clar, zic eu. E, acu să zicem că vrei, ca în exemplul ăla de la
> link, să arăţi ordinea literelor în fişier, adică vrei să apară ceva de
> genul:
> În fişier, cuvantul 1ABARA este scris în ordinea ARABA1.
>
> Ca să afişezi ARABA1 (adică să scrii literele arabe de la stânga la
> dreapta), trebuie să "cotropeşti" setarea implicită, deci ai nevoie de lro.

Păi atunci, pentru mine atributul dir e un moft: în înregistrările mele nu apar sofisticării de astea. Îl abandonez !

> E mai clar acu' sau e şi mai rău? (că fix la fel n-are cum să fie :P)

Sper c-am înțeles (ar fi o performanța pentru un ardelean ca mine să priceapă din prima :-)

>
> Andrei Cipu

Mersi,

Dan Matei

Strainu

unread,
May 16, 2009, 7:17:41 PM5/16/09
to diacr...@googlegroups.com
2009/5/16 Dan Matei <D...@cimec.ro>

>
> -----Original Message-----
> From: Strainu <stra...@gmail.com>
> Date: Sat, 16 May 2009 12:52:57 +0300
>
> Păi atunci, pentru mine atributul dir e un moft: în înregistrările mele nu apar sofisticării de astea. Îl abandonez !

Totul depinde de ce combinaţii ai acolo, şi numai tu ştii asta :)

După cum scrie şi în standard:
"[...]in the case of bidirectional text, there are circumstances where
an implicit bidirectional ordering is not sufficient to produce
comprehensible text. To deal with these cases, a minimal set of
directional formatting codes is defined to control the ordering of
characters when rendered. This allows exact control of the display
ordering for legible interchange and also ensures that plain text used
for simple items like filenames or labels can always be correctly
ordered for display."
http://www.unicode.org/reports/tr9/tr9-15.html#3.1_Bidirectional_Behavior

Andrei

Reply all
Reply to author
Forward
0 new messages