Sebastian Backstone'; // translator(s) and their affiliation - a elements allowed, but use double quotes for attributes $enVersion = '2007-08-29 12:27'; // date of the English original on which the translation is based (see last substantive change date at bottom of file) $additionalLinks = ''; ?>
Czy w językach HTML i opartych na składni XML do poprawnego formatowania tekstu w algorytmie dwukierunkowym (bidi) Unicode należy stosować style CSS czy znaczniki?
W tekstach pisanych po arabsku lub hebrajsku zapis czytany jest przeważnie od prawej do lewej (RTL), pozostałe sposoby zapisu są odzyczytywane od lewej do prawej (LTR). Większość pracy algorytm Unicode bidi poświęca odpowiedniemu ukierunkowaniu tekstu, w oparciu o właściwości zastosowanych znaków. Niemniej musi też istnieć możliwość zaznaczenia:
że ogólne zorientowanie zawartości i układu strony (jak np. kierunek w komórkach tabeli) powinien mieć wartość RTL (LTR jest wartościa domyślną), ponieważ dany dokument jest w znacznej części napisany pismem arabskim lub hebrajskim
że część dokumentu oznaczona jako LTR należy traktować jako RTL i vice versa
jakiego ukierunkowanie tekstu oczekuje się, jeśli dwukierunkowy algorytm Unicode nie jest w stanie poprawnie ułożyć przyległych linii tektu biegnącego w różnych kierunkach
że ukierunkowanie określone przez algorytm bidi Unicode należy obejść.
Prezentujemy przykłady użycia tekstu w zapisie od prawej do lewej oraz jednocześnie w zapisie ASCII (agielski tekst zapisany jest małymi literami, a arabaski i hebrajski dużymi). Kolejność i pozycja znaków odwierciedla kolejność i pozycje oryginału.
Aby lepiej objaśnić trzeci punkt poniższy przykład przedstawia wynik, jaki można otrzymać opierając się wyłącznie na algorytmie dwukierunkowym. Wynik ten jest niepoprawny. Ponieważ cały cytat jest po hebrajsku, więc czyta się go od prawej do lewej, to tekst "W3C" oraz przecinek powinny pojawić się po lewej stronie (tzn. na końcu) tekstu hebrajskiego.
Tytuł po hebrajsku "פעילות הבינאום, W3C".
Wersja ASCII:
Tytuł po hebrajsku "YTIVITCA NOITAZILANOITANRETNI, w3c"
Poprawny rezultat powinien po wyświetleniu wyglądać tak:
Tytuł po hebrajsku "פעילות הבינאום, W3C".
Wersja ASCII:
Tytuł po hebrajsku "w3c ,YTIVITCA NOITAZILANOITANRETNI".
Język XHTML/HTML posiada znaczniki, które można stosować w takich przypadkach. Są to:
Znacznik | Działania |
---|---|
dir atrybut |
Ustawia kierunek zapisu dla elementu, do którego jest dołączony oraz dalszch elementów. Możliwe wartości atrybutu to: rtl oraz
ltr . |
bdo element |
Umożliwia obejście ukierunkowania tekstu określonego przez algorytm bidi Unicode. |
Możliwości obsługi ukierunkowania tekstu w CSS:
Właściwość | Wartości | Działanie |
---|---|---|
unicode-bidi |
embed |
Tekst przyjmie ukierunkowanie określone przez właściwość direction . |
bidi-override |
W tekście nastąpi obejście algorytmu bidi Unicode zgodnie z wartością wskazaną przez właściwość direction . |
|
direction |
ltr |
Kierunek tekstu określanego przez właściwość unicode-bidi ustawiony zostaje na LTR. |
rtl |
Kierunek tekstu określanego przez właściwość unicode-bidi ustawiony zostaje na RTL. |
Należy zadać sobie pytanie czy powinno się stosować znaczniki lub style CSS do określania kierunku tekstu w języku HTML oraz w językach opartych na składni XML.
Jeżeli tylko jest to możliwe, w opisie zawartości należy stosować dedykowane znaczniki bidi. Style CSS mogą, choć nie muszą, być wtedy wymagane do opisania znacznika. Wszystko zależy od tego, czy pracuje się nad zawartością obsługiwaną przez agenta użytkownika taką jak kod HTML lub XML. (Uwaga: XHTML może być obsługiwany jako obydwa!)
‎
i ‏
.Przyjżyjmy się temu problemowi dokładniej.
Ponieważ kierunek tekstu stanowi integralny element struktury dokumentu, do określenia kierunku tekstu w całym dokumencie lub jego fragmencie, a także do identyfikacji miejsc w tekście, w których dwukierunkowy algorytm Unicode jest niewystarczający do uzyskania oczekiwanych rezultatów należy stosować znaczniki.
Niektórzy ludzie, aby uzyskać oczekiwany kierunek tekstu z prawej do lewej lub jego dwukierunkowość, stosują po prostu style CSS do każdego akapitu lub wcięcia tekstu zawierających dany tekst. Jednak style określone przez CSS nie są stałe. Można je obejść, wyłączyć, zmienić/zamienić w różnych kontekstach, a nawet mogą zostać całkowicie nierozpoznane. Chociaż znaczniki bidi wymagane są tylko przy wyświetlaniu graficznym tekstu, to nie pełnią one jedynie funkcji dekoracyjnej. Znaczniki pozostają na stałe zintegrowane z zawartością dokumentu. Dodatkowo stosowanie dedykowanych znaczników bidi pozwala na uzyskanie większej czytelności zawartości.
Należy zatem stosować dedykowane znaczniki bidi tam, gdzie jest to możliwe. Błedem jest uzyskiwanie oczekiwanych rezultatów poprzez zwykłe przypisanie stylów CSS do wybranych elementów.
Warto zauważyć, że zakładamy tu, iż dokumenty napisane w językach znacznikowych zawsze odwołują się do znaczników dedykowanych specjalnie do obslugi tekstu w zmiennych kierunkach zapisu. Osoby stosujące DTD lub Schema mogą śmiało dodawać elementy i atrybuty z tym związane.
text/html
Należy stosować wyłącnie znaczniki. Rekomendacja CSS2 zaleca użycie znaczników do formatowania tekstu bidi w dokumentach HTML. W rzeczywistości można nawet powiedzieć, że zgodny ze standardami agent użytkownika HTML może zignorować właściwości bidi stylów CSS. Dzieje się tak, ponieważ specyfikacja HTML wyraźnie określa oczekiwane zachowania agenta użytkownika związane ze znacznikami bidi.
application/xhtml+xml
XHTML 1.0 obsługiwany jako application/xhtml+xml
powinien wykorzystywać tą samą semantykę co HTML. Sensowne jest więc stosowanie wyłącznie znaczników i nie używanie stylów CSS.
application/xml
lub
text/xml
Zazwyczaj agent użytkownika nie będzie w stanie automatycznie rozpoznać ani przetworzyć jakiegokolwiek znacznika bidi użytego w dokumentach XML. Do określenia oczekiwanego formatowania tekstu w dokumencie należy więc zastosować właściwości stylów CSS.
Style CSS powinny jednak zawsze być połączone z dedykowanymi znacznikami bidi w tekście.
XHTML obsługiwany jako application/xml
lub text/xml
jest przez agenta użytkownika traktowany jako XML a nie HTML.
Poniższy przykład pokazuje dlaczego style CSS powinno się wykorzystać przy zbiorze znaczników dostępnych w XHTML:
*[dir="ltr"] { direction: ltr; unicode-bidi: embed }
*[dir="rtl"] { direction: rtl; unicode-bidi: embed }
bdo[dir="ltr"] { direction: ltr; unicode-bidi: bidi-override }
bdo[dir="rtl"] { direction: rtl; unicode-bidi: bidi-override }
W językach XHTML/HTML i zapewne innych językach opartych na składni XML mogą zdarzyć się sytuacje, w których tekst pojawia się w obrębie atrybutu lub elementu obsługującego wyłącznie dane w postaci znaków. Do modyfikowania kierunku tekstu atrybutu lub lub części tekstu w elemencie obsługującym wyłącznie dane w postaci znaków nie można wykorzystywać ani znaczników ani stylów CSS. W takich przypadkach należy zastosować kody kierunkowego foramtowanie Unicode. (Patrz FAQ (X)HTML & bidi formatting codes vs. markup)
W językach opartych na składni XML style bidi powinny być zdefiniowane w oddzielnym arkuszy stylów, a sam arkusz należy dołączycdo innych arkuszy stylów w dokumencie. Upraszcza to późniejsze prace nad arkuszami i podkreśla różnicę pomiędzy bidi a innymi stylami. Dobrze jest myśleć o arkuszu stylów bidi jako o części schematu informacji, który definiuje znaczenie konkretnych znaczników bidi, a nie pełni tylko funkcję dekoracji, które mogą istnieć w wielu różnych wariantach.