Ускоряющая клавиша n предназначена для пропусков при навигации по страницам. Пропуск для перехода на начало контента.

Данный документ является переводом. В случае каких-либо несоответствий и ошибок последняя версия документа на английском языке должна рассматриваться в качестве официальной. Первоначальное авторское право принадлежит W3C, как то указано ниже.

Переводчик: Alexandr Shlapak (Александр Шлапак)

s_gotoW3cHome Internationalization
 

CSS или разметка для поддержки bidi

Предполагаемая аудитория: шифровальщики XML и XHTML/HTML (используя редакторы или скрипты), разработчики скриптов (PHP, JSP, и т.д.), шифровальщики CSS, разработчики схем (DTDs, XML Schema, RelaxNG, и т.д.), и каждый, кто реализует HTML используя скрипты с выравниванием справа налево.

Вопрос

Стоит ли использовать CSS или разметку для корректного форматирования основанного на Unicode bidi текста в основанных на HTML и XML языках разметки?

Вводная информация

Текст написанный на Арабском языке или Ивритских скриптах выравнивается преимущественно справа налево (RTL), тогда как текст в других скриптах выравнивается слева право (LTR). Большинство времени Unicode bidi алгоритм заботится о направленности текста, основанного на свойствах используемых символов. Тем не менее, необходимы некоторые способы ее указания:

Мы показываем примеры используя текст, написанный на реальных скриптах, которые выравнивается справа налево и, так как ASCII визуально расположена версия сразу же после этого, показывает Английский текст в нижнем регистре и Иврит или Арабский язык в верхнем регистре. Порядок и позиция символов отображает отличие от оригинала.

Пример:

Чтобы прояснить третий пункт выше, это предложение обеспечивает пример того, что вы можете получить, если будете полагаться только на двунаправленный алгоритм. Это неправильно. Потому что вся цитата на Иврите, и, следовательно, выравнивается справа налево, текст "W3C" и запятая должны появиться слева (т.е. после) текста на Иврите.

Название на Иврите будет "פעילות הבינאום, W3C".

ASCII версия:
Название на Иврите будет "YTIVITCA NOITAZILANOITANRETNI, w3c".

Правильный результат при отображении будет выглядеть следующим образом:

Название на Иврите будет "פעילות הבינאום, W3C".

ASCII версия:
Название на Иврите будет "w3c ,YTIVITCA NOITAZILANOITANRETNI".

XHTML/HTML обеспечивает разметку для достижения этих целей. К ним относятся:

Разметка Эффект
dir атрибут Устанавливает направленность для элемента, к которому он подключен и ниже. Возможные значения включают: rtl и ltr.
bdo элемент Переопределяет направленность текста, как это определено Unicode bidi алгоритмом.

Также следующим образом CSS обеспечивает поддержку для направленности текста:

Собственность Значение Эффект
unicode-bidi embed Предположим, что в тексте с которым это применяется направление выравнивания определяется свойством direction.
bidi-override Текст к которому это применяется переопределит Unicode bidi алгоритм согласно направлению выравнивания, которое определено свойством direction.
direction ltr Устанавливает основное направление LTR для текста, к которому применено свойство unicode-bidi.
rtl Устанавливает основное направление RTL для текста, к которому применено свойство unicode-bidi.

Вопрос о том должны ли вы использовать разметку или CSS для указания направленности в языках разметки основанных на XML и HTML.

Ответ

Вы всегда должны использовать специализированное bidi разметку для описания контента там где есть разметка. Затем CSS может понадобиться или не понадобиться для описания значения той разметки. Это зависит от того имеете ли вы дело с контентом, который обрабатывается клиентским приложением как HTML или XML. (Обратите внимание, что XHTML может обслуживаться в обоих случаях!)

Всегда помните, что ни разметка, ни CSS не должны использоваться если они не нужны. Наш вопрос касается ситуаций, когда Unicode bidi алгоритм не является достаточным сам по себе, или ‎ и ‏ не могут быть использованы для установления направленности.

Давайте рассмотрим это еще более детально.

Использование специализированной разметки

Потому что направленность является неотъемлемой частью структуры документа, разметка должна быть использована для установки направленности документа или части информации, или для определения места в тексте, где двунаправленный алгоритм Unicode сам по себе недостаточен для достижения желаемой направленности.

Для получения желаемого выравнивания справа налево или двунаправленного эффекта, некоторые люди просто применяют CSS к любому общему пункту или окружают соответствующий текст встроенными элементами. Тем не менее, стилизация, которая применена с помощью CSS не является постоянной. Ее можно отключить, отменить, не обнаружить или изменить/заменить в различных контекстах. Хотя bidi разметка необходима только для визуальной подачи текста, это не просто декоративная функция. Модным остается интеграция разметки с контентом документа. Она также вносит значительную ясность в контент, если используется специализированная bidi разметка.

Поэтому вы должны использовать специализированную bidi разметку всякий раз, когда это возможно. Не просто прикрепить CSS стиль к общему элементу для достижения эффекта.

Обратите внимание, что это предполагает, что документы, написанные на языках разметки всегда обращаются к разметке, которая специально предназначена для поддержки текста смешанного направления. Людей, которые проектируют DTD или схемы следует поощрять, чтобы они добавляли элементы или атрибуты.

HTML или XHTML, которые обслуживаются как text/html

Используйте только разметку. Рекомендация CSS2 рекомендует использовать разметку для bidi текста в HTML. На самом деле это доходит до того, если бы сказать, что соответствующие HTML клиентские приложения могут игнорировать CSS bidi свойства. Это потому, что спецификация HTML четко определяет ожидаемое поведение клиентских приложений в отношении bidi разметки.

XHTML, которая обслуживается как application/xhtml+xml

XHTML 1.0, которая обслуживается как application/xhtml+xml будет использовать ту же семантику что и HTML. Таким образом, также имеет смысл использовать только разметку и не использовать для этого CSS.

Общая XML разметка и XHTML, которая обслуживается как application/xml или text/xml

Обычно клиентское приложение не будет автоматически распознавать или знать что делать с любой bidi разметкой, которую вы используете в XML документах. Поэтому CSS свойства следует использовать для того, чтобы указать ожидаемое визуальное поведение текста в документе.

Однако, CSS всегда должна быть связана с специализированной bidi разметкой в тексте.

XHTML, которая обслуживается как application/xml или text/xml рассматривает клиентскими приложениями как XML, а не HTML.

Ниже показано CSS, которая была бы целесообразной для набора разметки доступной в 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 }

Кстати говоря

Есть ситуации в XHTML/HTML и, возможно, другие языки разметки на основе XML, где текст появляется в атрибуте или элементе, который поддерживает только символьные данные. Ни разметка, ни CSS не может использоваться для изменения направленности или атрибутов текста или части текста в элементе, который поддерживает только символьные данные. В этих случаях необходимо использовать Unicode коды форматирования направленности. (Для получения подробной информации смотрите FAQ (часто задаваемые вопросы) (X)HTML и bidi коды форматирования или разметка.)

Для языков разметки на основе XML, bidi стайлинг должен быть определен в отдельную таблицу стилей, и та таблица стилей включена в другие ваши таблицы стилей или в ваш документ. Это упрощает разработку таблиц стилей и усиливает разницу между bidi и другим стайлингом. Думайте о таблице стилей bidi, как о части информации схемы, которая определяет значение специфической bidi разметки, а не как о декоративном стайлинге, который может существовать в различных вариантах.

Выскажите своё мнение (по-английски).

Подпишитесь на ленту новостей RSS.

Новые публикации

Новости главной страницы

Twitter (Новости главной страницы)

‎@webi18n

Дополнительные материалы

Автор: Richard Ishida, W3C. Переводчик: Alexandr Shlapak (Александр Шлапак).

Допустимый XHTML 1.0!
Допустимый CSS!
Кодировка UTF-8!

Перевод с английского: 2007-08-29. Последнее внесение изменений в перевод: 2011-10-24 14:30 GMT

Для просмотра истории внесения изменений нажмите qa-bidi-css-markup в блоге i18n.