Cum se configurează smartphone-uri și PC-uri. Portal informativ
  • Acasă
  • Windows Phone
  • Direcția de ieșire a textului: proprietățile „direcție” și „unicode-bidi”.

Direcția de ieșire a textului: proprietățile „direcție” și „unicode-bidi”.

În limbile europene, textul este citit de la stânga la dreapta, în timp ce există limbi în care textul este citit de la dreapta la stânga. Atunci când amestecați caractere de diferite ortografii (rusă cu ebraică, de exemplu) în sistemul Unicode într-un singur document, direcția acestora este determinată de browser în funcție de caracteristicile și conținutul textului. Proprietățile unicode-bidi și direcția specifică modul în care trebuie poziționat textul limbii utilizate.

informatie scurta

Denumiri

DescriereExemplu
<тип> Indică tipul valorii.<размер>
A && BValorile trebuie să fie afișate în ordinea specificată.<размер> && <цвет>
A | BIndică faptul că trebuie să selectați o singură valoare dintre cele propuse (A sau B).normal | litere mici
A || BFiecare valoare poate fi folosită independent sau împreună cu altele în orice ordine.lățime || numara
Grupează valori.[ recolta || cruce ]
* Repetați de zero sau de mai multe ori.[,<время>]*
+ Repetați una sau mai multe ori.<число>+
? Tipul, cuvântul sau grupul specificat este opțional.medalion?
(A, B)Repetați cel puțin A, dar nu mai mult de B ori.<радиус>{1,4}
# Repetați o dată sau de mai multe ori, separate prin virgule.<время>#
×

Valori

normal Browserul determină modul în care ar trebui să afișeze textul pe baza caracterelor Unicode. încorporare Suprascrie setările de text, poziționându-l așa cum este specificat în proprietatea direcție. bidi-override Similar cu embed , dar modifică și ordinea caracterelor din text, în funcție de valoarea direcției.

Cutie cu nisip

Winnie the Pooh nu s-a împotrivit întotdeauna la o mică răcoritoare, mai ales la unsprezece dimineața, pentru că la acea oră micul dejun se terminase de mult, iar prânzul încă nu începuse. Și, bineînțeles, a fost teribil de bucuros să vadă că Iepurele scoate cești și farfurii.

div ( direcția: rtl; unicode-bidi: normal ; )

Exemplu

unicode-bidi

Și trandafirul a căzut pe laba lui Azor.

Lesha a găsit un ferăstrău lângă tei.

Și orașul prețuiește o grădină de legume lângă drum.

Nu mai tricot mături.

Argentina îi face semn negru.

Este minunat, un palindrom - și nu se văd nici botul, nici labele.

Dar arhanghelul este invizibil, gerul se așterne ca un model pe templu și este minunat.

Lesha a găsit un bug pe raft.

Nu sunt bătrân, frate Senya.

Rezultat acest exemplu prezentat în Fig. 1. Deoarece este utilizată valoarea bidi-override a proprietății unicode-bidi, ordinea caracterelor din text este inversată. Și anume cel indicat de proprietatea direcție. Observați că textul este poziționat de-a lungul marginii din dreapta a ferestrei, cu punctul din propoziție în stânga textului.

Orez. 1. Rezultatul utilizării unicode-bidi și direcția

Model obiect

Un obiect.style.unicodeBidi

Specificație

Fiecare specificație trece prin mai multe etape de aprobare.

  • Recomandare - Specificația a fost aprobată de W3C și este recomandată ca standard.
  • Recomandarea candidatului ( Recomandare posibilă ) - grupul responsabil de standard este mulțumit că își îndeplinește obiectivele, dar necesită ajutor din partea comunității de dezvoltare pentru implementarea standardului.
  • Recomandare propusă Recomandare sugerată) - în această etapă documentul este înaintat Consiliului Consultativ W3C pentru aprobare finală.
  • Proiect de lucru - O versiune mai matură a unui proiect care a fost discutat și modificat pentru revizuire comunitară.
  • Schița redactorului ( Proiect editorial) - o versiune preliminară a standardului după ce au fost făcute modificări de către editorii de proiect.
  • Ciornă ( Proiect de specificație) - prima versiune a standardului.
×

Caracterele din unele tipuri de scriere sunt scrise de la dreapta la stânga. În unele documente, în special în arabă și ebraică, și în unele contexte de amestecare a limbilor, textul dintr-un singur bloc (afișat vizual) poate apărea cu o direcție mixtă de scriere. Acest fenomen se numește bidirectionality\bidirectionality, sau prescurtat ca „bidi”.

Standardul Unicode (secțiunea 3.11) oferă un algoritm complex pentru determinarea direcției textului. Acest algoritm constă dintr-o parte implicită bazată pe proprietățile simbolurilor, precum și o parte explicită care controlează implementările și suprascrierile. CSS2 apelează la acest algoritm pentru a obține afișarea bidirecțională adecvată. Proprietățile „direcție” și „unicode-bidi” permit autorilor să specifice modul în care elementele și atributele limbajului documentului sunt mapate la acest algoritm.

Dacă un document conține caractere de la dreapta la stânga și dacă agentul utilizator redă acele caractere cu glifele adecvate (în loc de înlocuitori arbitrari, cum ar fi ghilimele, hexazecimal, cutie neagră etc.), atunci agentul utilizator trebuie să utilizeze un algoritm bidirecțional . Această cerință aparent unilaterală reflectă faptul că, deși nu fiecare document ebraic sau arab conține textul directii diferite, există șanse mari ca aceste documente să conțină text de la stânga la dreapta (de exemplu, numere, text din alte limbi).

Deoarece direcția textului depinde de structura și semantica documentului, aceste proprietăți ar trebui, în cele mai multe cazuri, să fie utilizate numai de designerii sau autorii Document Type Description (DTD). documente speciale. Dacă foaia de stil implicită specifică aceste proprietăți, atunci autorii și utilizatorii nu trebuie să specifice reguli pentru a le înlocui. O excepție tipică ar fi redefinire comportamentul bidi într-un agent de utilizator, dacă acest agent de utilizator translitera idișul (scris de obicei cu litere ebraice) în latină la cererea utilizatorului.

Specificația HTML 4.0 (secțiunea 8.2) definește comportamentul bidirecțional pentru elemente HTML. Agenții utilizatori HTML conformi pot ignora, prin urmare, proprietățile „direcție” și „unicode-bidi” din foile de stil ale autorului și ale utilizatorului. Regulile foii de stil care trebuie aplicate pentru comportamentul bidi, care sunt specificate în „Anexa F. Indexul proprietăților”, sunt date în „Anexa A. Exemplu de foaie de stil pentru HTML 4.0”. Specificația HTML 4.0 conține și Informații suplimentare despre problemele de bidirecţionalitate.

"direcţie"

Înțeles: ltr | rtl | moşteni

Inițial: ltr

Moștenit: da

Interes: N/A

Mediu: vizual

Această proprietate specifică direcția de scriere de bază a blocurilor și direcția injectărilor și suprascrierilor (vezi „unicode-bidi”) pentru algoritmul bidirecțional Unicode. În plus, specifică direcția pentru coloana tabelului, direcția depășirii orizontale și poziția ultimei linii incomplete a blocului în cazul „text-align: justify”.

Direcție de la stânga la dreapta.

De la dreapta la stânga.

Pentru ca proprietatea „direcție” să funcționeze pe elemente de nivel inline, valoarea proprietății „unicode-bidi” trebuie să fie „încorporat” sau „override”.

Notă. Proprietatea „direcție” specificată pentru elementele coloanei tabelului nu este moștenită de celulele coloanei deoarece coloanele nu există în arborele documentului. Prin urmare, CSS nu poate utiliza regulile de moștenire a atributului „dir” descrise în „Anexa F. Indexul proprietăților”, secțiunea 11.3.2.1.

"unicode-bidi"

Valoare: normal | încorpora | bidi-override | moşteni

Inițial: normal

Se aplică pentru: toate elementele, dar vezi text

Moștenit: nu

Interes: N/A

Mediu: vizual

Valorile acestei proprietăți au următoarea semnificație:

Elementul nu introduce un strat suplimentar de încorporare în raport cu algoritmul bidirecțional. Pentru elementele la nivel inline, reordonarea implicită operează în afara granițelor elementului.

Dacă elementul este inline, această valoare deschide un strat suplimentar de încorporare în raport cu algoritmul bidirecțional. Direcția în acest nivel de încorporare este specificată de proprietatea „direcție”. În cadrul unui element, reordonarea se face implicit. Aceasta corespunde umpluturii LRE (U+202A; pentru „direcția: ltr”) sau RLE (U+202B; pentru „direcția: rtl”) la începutul elementului și PDF (U+202C) la sfârșitul elementul.

bidi-override

Dacă elementul este la nivel de bloc sau inline și conține doar elemente de nivel inline, această valoare se creează redefinire. Aceasta înseamnă că în cadrul unui element, reordonarea se face strict conform proprietății „direcție”; partea implicită a algoritmului bidirecțional este ignorată. Aceasta corespunde umpluturii LRO (U+202D; pentru „direcția: ltr”) sau RLO (U+202E; pentru „direcția: rtl”) la începutul elementului și un PDF (U+202C) la sfârșit a elementului.

Ordinea finală a caracterelor din fiecare element la nivel de bloc este ca și cum codul de control bidi ar fi fost adăugat așa cum este descris mai sus, marcajul a fost eliminat și secvența de caractere rezultată ar fi fost transmisă la algoritm Unicode bidirecțional V text simplu, care ar produce aceleași întreruperi de linie ca și textul cu stil. În acest proces, obiectele non-textuale, cum ar fi imaginile, sunt tratate ca caractere neutre, cu excepția cazului în care proprietatea lor „unicode-bidi” are alte valori decât „normale”, caz în care sunt tratate ca caractere puternice în „direcția” specificată pentru element.

Vă rugăm să rețineți că, pentru a putea plasa casete inline într-o singură direcție (toate de la stânga la dreapta sau toate de la dreapta la stânga), poate fi necesar să creați casete inline suplimentare (inclusiv casete anonime inline), și va trebui să împărțiți și să reordonați unele dintre casetele în linie înainte de a le plasa.

Deoarece algoritmul Unicode are o limită de 15 niveluri de încorporare, cel mai bine este să nu utilizați „unicode-bidi” cu alte valori decât „normale”, decât dacă există unele adecvate. Valoarea „moștenire” trebuie utilizată cu grijă deosebită. Cu toate acestea, pentru elementele despre care se așteaptă de obicei să fie afișate ca blocuri, setarea „unicode-bidi: embed” este de preferat pentru a menține elementele împreună în cazul în care afișarea se schimbă în inline (vezi exemplul de mai jos).

ÎN exemplul următor afișate document XML cu text bidirecţional. Ea ilustrează principiu important design: designerii DTD trebuie să țină cont de bidi atât în ​​limbajul propriu-zis (elemente și atribute), cât și în foile de stil însoțitoare. Foile de stil trebuie concepute astfel încât regulile bidi să fie separate de alte reguli de stil. Regulile Bidi nu ar trebui să fie înlocuite de alte foi de stil pentru a păstra comportamentul limbajului Bidi și DTD.

Iată scrisorile litere mici sunt inerente caracterelor de la stânga la dreapta, iar literele mari sunt inerente caracterelor de la dreapta la stânga:

EBRAU1 EBRAU2 engleză3 EBRAU4 EBRAU5 EBRAICA6 EBRAICA7 EBRAICA8 engleză9 engleză10 engleză11 EBRAU12 EBRAU13 engleză14 engleză15 engleză16 engleză17 EBRAU18 engleză19 EBRAU20

Direcția de ieșire a textului: proprietățile „direcție” și „unicode-bidi”.

Caracterele definite în unele fonturi sunt scrise de la dreapta la stânga. În unele documente, în special documentele arabe sau ebraice și în unele contexte de limbi mixte, textul din același bloc (afișat vizual) poate apărea în direcții diferite. La această situație se face referire prin termenul „bidirecționalitate” sau termenul mai scurt „bidi” din limba engleză „bidirecționalitate”.

ÎN Standard Unicode este descris un algoritm complex pentru determinarea directiei exacte a textului. Algoritmul constă dintr-o parte implicită, bazată pe proprietățile simbolurilor, și o parte explicită, care controlează procesul de inserare și reatribuire. În specificația CSS2 acest algoritm folosit pentru a implementa ieșirea textului bidirecțională adecvată. Proprietățile „direcție” și „unicode-bidi” permit dezvoltatorilor să specifice modalități de a mapa mai multe elemente și atribute ale limbajului documentului la mai multe concepte într-un anumit algoritm.

Dacă un document conține caractere care sunt randate de la dreapta la stânga, iar agentul utilizator afișează acele caractere (folosind simboluri adecvate, mai degrabă decât înlocuitori arbitrari, cum ar fi semne de întrebare, coduri hexadecimale, casete negre etc.), atunci agentul trebuie să folosească un cod bidirecțional. algoritm de randare. Această cerință aparent unilaterală reflectă faptul că documentele care utilizează scrierea de la dreapta la stânga au mai multe șanse să conțină text introdus direcție opusă(de exemplu, numere sau text în altă limbă) decât acele documente în care direcția principală de scriere este de la stânga la dreapta. Cu toate acestea, trebuie remarcat faptul că nu toate documentele în arabă sau ebraică conțin direcții de text diferite.

Deoarece Direcția textului depinde de structura și semantica limbajului documentului; aceste proprietăți ar trebui utilizate în principal de creatorii de descrieri de tip de document (DTD) sau dezvoltatorii de documente speciale. Dacă aceste proprietăți sunt specificate în foaia de stil principală, atunci dezvoltatorii și utilizatorii nu ar trebui să introducă reguli care le înlocuiesc. O excepție tipică este proprietatea bidi, care poate fi reatribuită la cererea utilizatorului și utilizată de agent pentru a translitera idișul (scris de obicei cu litere ebraice) în litere latine.

În caietul de sarcini limbaj HTML 4.0 (, Secțiunea 8.2) definește comportamentul elementelor HTML atunci când redarea textului bidirecțional. Agenții utilizatori conformi care controlează ieșirea documentelor HTML pot ignora proprietățile „direcție” și „unicode-bidi” din foile de stil pentru dezvoltatori și utilizatori. Regulile pentru foaia de stil care controlează textul bidirecțional, așa cum sunt definite în descriere, sunt prezentate în exemplul de foaie de stil. Specificația limbajului HTML 4.0 include și alte informații despre utilizarea diferitelor direcții de ieșire a textului.

"direcţie"

Valoare: ltr | rtl | moşteni
Valoarea initiala:ltr
Domeniul de aplicare: toate elementele, vezi descriere
Moștenire: da
Atribuire procentuală: N/A

Această proprietate specifică direcția de scriere primară utilizată în blocuri, direcția de inserții și redirecționări (vezi „unicode-bidi”) pentru algoritmul de ieșire bidirecțional utilizat în Unicode. De asemenea, specifică direcția coloanelor tabelului, direcția depășirii orizontale și poziția ultimei linii parțiale în bloc dacă este utilizată alinierea „text-align:justify”.

ltr

Direcție de la stânga la dreapta.

rtl

Direcția este de la dreapta la stânga.

Pentru ca proprietatea „direcție” să afecteze elementele la nivel inline, proprietatea „unicode-bidi” trebuie setată la „încorporare” sau „supracrie”.

Notă. Dacă proprietatea „direcție” este aplicată elementelor coloanei tabelului, atunci nu este moștenită de celulele coloanei, deoarece coloanele nu există în arborele documentului. Prin urmare, nu există CSS calea usoara construirea regulilor de moștenire pentru atributul „dir”.

"unicode-bidi"

Valoare: normal | încorpora | bidi-override | moşteni
Valoarea inițială: normală
Domeniul de aplicare: toate elementele, cu excepția a se vedea proza
Moștenire: nu
Atribuire procentuală: N/A
Dispozitive: formatare vizuală

Valori a acestei proprietati au urmatoarea semnificatie:

normal

Conform algoritmului de inferență bidirecțională, elementul nu creează un nou nivel suplimentar inserții. Pentru elementele la nivel de rând, rearanjarea implicită este efectuată numai în limitele sale.

încorporare

Dacă elementul este un element la nivel de rând, atunci valoare dată permite crearea unui strat de inserție suplimentar conform algoritmului de inferență bidirecțională. Direcţie acest nivel inserarea este specificată de proprietatea „direcție”. În cadrul unui element, regruparea se face implicit. Aceasta corespunde cu adăugarea LRE (U+202A; pentru „direcția: ltr”) sau RLE (U+202B; pentru „direcția: rtl”) la începutul elementului și PDF (U+202C) la sfârșitul elementului .<

bidi-override

Dacă elementul este un element la nivel de linie sau un element la nivel de bloc care conține doar elemente la nivel de linie, atunci această valoare creează o remapare. Aceasta înseamnă că în cadrul unui element, regruparea este efectuată în ordine strictă în funcție de proprietatea „direcție”, iar partea implicită a algoritmului de inferență bidirecțională este ignorată. Aceasta corespunde cu adăugarea LRO (U+202D; pentru „direcția: ltr”) sau RLO (U+202E; pentru „direcția: rtl”) la începutul elementului și adăugarea PDF (U+202C) la sfârșitul element.

În cele din urmă, ordinea caracterelor produse în fiecare element la nivel de bloc va coincide cu cea rezultată din adăugarea codurilor de control bidi așa cum s-a descris mai devreme, eliminarea marcajului și transmiterea secvenței de caractere rezultată într-un modul care implementează algoritmul bidirecțional care scoate text neformatat care folosește aceleași întreruperi de linie ca și textul formatat. Cu toate acestea, elementele non-text, cum ar fi imaginile, sunt tratate ca caractere neutre, cu excepția cazului în care proprietatea „unicode-bidi” este setată la „normal”. În acest din urmă caz, elementele vor fi tratate ca caractere în direcția specificată în proprietatea „direcție” a elementului.

Rețineți că pentru a vă asigura că blocurile inline pot fi scoase în aceeași direcție (fie întotdeauna de la stânga la dreapta, fie întotdeauna de la dreapta la stânga), poate fi necesar să creați blocuri inline suplimentare (inclusiv blocuri inline fără nume), precum și împărțirea și rearanjarea unora dintre blocurile inline.

Deoarece Deoarece algoritmul folosit în Unicode are o limită de 15 nivele de inserare, se recomandă să nu folosiți proprietatea „unicode-bidi” cu o altă valoare decât „normal” decât dacă este absolut necesar. În special, valoarea proprietății „moștenire” ar trebui folosită cu mare atenție. Totuși, pentru elementele care vor fi redate ca blocuri, este recomandat să specificați „unicode-bidi: embed” pentru a menține integritatea elementului în cazul în care acesta este redat în rânduri (vezi exemplul de mai jos).

Următorul exemplu arată un document XML cu ieșire text bidirecțională. Acesta ilustrează un principiu important: designerii DTD ar trebui să ia în considerare proprietatea bidi atât pentru elementele și atributele de limbaj valide ale documentului, cât și pentru toate foile de stil asociate. Foile de stil trebuie create astfel încât regulile bidi să fie separate de alte reguli de stil. Regulile Bidi nu ar trebui reatribuite de către alte foi de stil pentru a păstra comportamentul Bidi al limbajului documentului sau DTD.

În acest exemplu, literele mici și mari denotă caractere care moștenesc direcția de ieșire de la stânga la dreapta și, respectiv, de la dreapta la stânga:


EBRAU1 EBRAU2 Rusă3 EBRAU4 EBRAU5
EBRAICA6 EBRAICA7 EBRAICA8


rusă9 rusă10 rusă11 ebraică12 ebraică13
rusă14 rusă15 rusă16
rusă17 EBRAU18 Rusă19 EBRAU20

Deoarece acesta este XML, foaia de stil este responsabilă pentru stabilirea direcției de scriere. Este prezentat mai jos:

/* Reguli pentru bidi */
EBRAICA, HE-QUO (direcție: rtl; unicode-bidi: încorporare)
RUSĂ (direcție: ltr; unicode-bidi: încorporat) /* Reguli de prezentare */
EBRAĂ, RUSĂ, PAR (afișare: bloc)
EMPH (greutate font: bold)

Elementul EBRAU este un bloc cu direcția de scriere de la dreapta la stânga, elementul RUS este un bloc cu direcția de scriere de la stânga la dreapta. Elementele PAR sunt blocuri care moștenesc direcția de bază de scriere a elementelor lor părinte. Deci primele două elemente PAR încep din partea dreaptă sus, iar ultimele trei încep din partea stângă sus. Vă rugăm să rețineți că denumirile de elemente EBRAU și RUSĂ sunt doar cu titlu ilustrativ; Ca regulă generală, numele elementelor ar trebui să reflecte structura fără a se referi la limbaj.

Elementul EMPH este un element la nivel de linie și, deoarece proprietatea sa „unicode-bidi” este setată la „normal” (valoarea inițială), nu afectează ordonarea textului. Și elementul HE-QUO creează inserții.

Formatarea acestui text poate arăta astfel dacă linia este lungă:

5TYRVI 4TYRVI rusă3 2TYRVI 1TYRVI
8TYRVI 7TYRVI 6TYRVI
Rusă9 Rusă10 Rusă11 13TYRVI 12TYRVI
rusă14 rusă15 rusă16
Rusă17 20TYRVI Rusă19 18TYRVI

Rețineți că dacă introduceți HE-QUO, elementul HEBREW18 va fi situat în dreapta elementului Russian19.

2TYRVI 1TYRVI
-VI 4TYRVI rusă3
5TIR

VI 7TYRVI 6TYRVI
8TIR

rusă9 rusă10 rusă-
Sky11 12TYRVI
13TYRVI

rusă14 rusă15
rusă16

rusă17 18TYRVI
20TYRVI rusă19

Deoarece elementul HEBREW18 trebuie citit înaintea elementului Russian19, apoi este un rând deasupra acestuia. Simpla împărțire a unui șir lung cu formatarea anterioară nu ar produce rezultate. Este necesar să se țină seama de faptul că prima silabă a elementului Russian19 ar putea fi pe linia anterioară, dar defalcarea silabelor cuvintelor scrise de la stânga la dreapta în contextul scrierii de la dreapta la stânga și invers, de obicei nu este folosit pentru a evita apariția unei cratime la mijlocul liniei.

Cele mai bune articole pe această temă