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

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

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

s_gotoW3cHome Internationalization
 

Управляющие символы Unicode или разметка для поддержки bidi

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

Вопрос

Стоит ли вам использовать управляющие символы Unicode или разметку, чтобы правильно отформатировать bidi текст в (X) HTML или XML контенте?

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

Unicode двунаправленный алгоритм определяет направление текста на основе свойств направления каждого символа. Иногда алгоритму нужно немного помочь, чтобы определить направление объектов в тексте, который смешивает Арабские символы или Иврит с ними в других скриптах. В других случаях вам может понадобиться переопределить влияние двунаправленного алгоритма в целом. Например:

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

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

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

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

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

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

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

Unicode предоставляет специальные, невидимые коды форматирования для создания или переопределения результата двунаправленного алгоритма в виде простого текста. К ним относятся такие:

Эти символы используются в паре. Один из первых четырех знаков, что упоминались выше, используется для обозначения начала диапазона текста; в каждом конкретном случае диапазон заканчивается последним (PDF) символом. Следующий пример показывает, как эти управляющие символы можно использовать в обычном тексте:

Ниже приведен порядок символов в памяти, и добавляет два управляющие символы, которые представлены здесь как индексы: U+202B, RIGHT-TO-LEFT EMBEDDING (RLE), и U+202C, POP DIRECTIONAL FORMATTING (PDF).

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

ASCII версия:
Название на Иврите будет "RLEINTERNATIONALIZATION ACTIVITY, w3cPDF".

Это приводит к отображению правильного результата (смотрите выше).

HTML4 стандарт представил разметку для того, чтобы делать точно такие же эффекты, как и эти символы Unicode.

При использовании XHTML ранее приведенный пример будет закодирован так:

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

ASCII версия:
название на Иврите будет "<span dir="rtl">INTERNATIONALIZATION ACTIVITY, w3c</span>".

Для простоты, примеры кода показывают символы в том же порядке, в котором они хранятся в памяти - а не порядок, в котором они отображаются в редакторе.

W3C рекомендовано, что языки разметки, основанные на XML также предоставляют выделенную разметку для управления направлением. (Смотрите разметка предложенная Рекомендацией Международного Набора Тэгов.)

Вопрос о том, должны ли вы использовать разметку или управляющие символы Unicode.

Ответ

В (X)HTML и XML не используйте парные Unicode bidi символы форматирования кода, так как там доступна эквивалентная разметка.

Причины

Когда управляющие символы используются в контенте произвольного направление всегда есть вероятность перекрытия или несогласованных диапазонов - особенно потому, что сами символы не имеют видимой формы. Если атрибуты используются, это не является результатом хорошо сформированной разметки.

Кроме того, с помощью разметки намного легче управлять наследованием и эффектами разделения параграфов. Чтобы достичь того же результата при использовании результатов управляющих символов Unicode нужно сделать гораздо больше работы. Используя только управляющие символы Unicode также трудно понять как достичь таких эффектов, как переворот столбцов таблицы и выравнивание текста справа налево.

HTML 4 спецификация специально предостерегает от смешивания двух подходов за увеличения вероятности неправильного вложения. Она также рекомендует использование разметки, поскольку она "предлагает лучшие гарантии структурной целостности документа и снимает некоторые проблемы при редактировании двунаправленного HTML текста в простом текстовом редакторе". Она не запрещает использование Unicode bidi кодов форматирования.

Совместный Технический Отчет Unicode #20 и W3C Примечание, Unicode в XML и других Языках Разметки идет дальше. Оно явно рекомендует использовать только разметку. Она также рекомендует игнорировать Unicode bidi коды форматирования , если они обнаружены в контексте браузера, и заменять их соответствующей разметкой при получении в контексте, который редактируется.

Соответствие

В следующей таблице (взято из Unicode в XML и других Языках Разметки) предоставлено соответствующую разметку для замены каждого кода.

Символ Код Эквивалентная разметка Комментарий
LRE U+202A dir = "ltr" атрибут блока или встроенного элемента
RLE U+202B dir = "rtl" атрибут блока или встроенного элемента
RLO U+202E <bdo dir = "rtl">  
LRO U+202D <bdo dir = "ltr">  
PDF U+202C ничего когда использован для завершения RLE или LRE (закрытие обеспечивается конечным тегом элемента, что содержит атрибут dir)
</bdo> когда использован для завершения RLO или LRO

Проблемные случаи

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

Это не возможно применить разметку направления для значений атрибутов, так что для контроля над направлением для любого текста в атрибутах нужно будет использовать символы Unicode . Сказав, что, W3C рекомендует разработчикам XML схемы не создавать ситуаций, в которых авторы контента будут использовать текст написанный на естественном языке в значениях атрибутов. Может быть устаревшая разметка, однако, такие атрибуты как alt в HTML, есть там где это неизбежно.

Другие ситуации, когда управляющие символы могут обеспечить только переквалификацию являются элементами, которые позволяют только символьный контент или пропускают поддержку атрибутов напрямую. Примером может служить элемент title (заголовок) в HTML. Опять же, таких ситуаций следует избегать в новых XML форматах. (Они ограничивают не только применение направленного текста, но и применение языка и другой мета информации.)

RLM и LRM символы

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

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

Документ Unicode в XML и других Языках Разметки обеспечивает руководство по использованию широкого диапазона символов Unicode или разметки, а не только управляющих bidi символов.

Для XML вы должны были бы создать свою собственную bidi разметку в DTD или Схеме и применять направления используя CSS.

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

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

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

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

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

‎@webi18n

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

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

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

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

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