Опубликован: 19.05.2006 | Доступ: свободный | Студентов: 10202 / 1645 | Оценка: 4.29 / 4.03 | Длительность: 22:29:00
ISBN: 978-5-94774-648-8
Лекция 8:

Информация о языке и направлении текста

< Лекция 7 || Лекция 8: 123 || Лекция 9 >

Спецификация направления в тексте и в таблицах: атрибут dir

Определение атрибута

dir = LTR | RTL [CI]

Определяет направление движения изначально нейтрального текста (т.е. текста, который не имеет унаследованного направления, как определено в "[UNICODE]" ), из содержимого элемента и значений атрибута. Устанавливает также направление в таблицах.

Возможные значения:

  • LTR: слева-направо, текст или таблица;
  • RTL: справа-налево: текст или таблица.

В дополнение к спецификации языка документа с помощью атрибута lang , авторам может понадобиться определить базовое направление (слева-направо или справа-налево) части текста документа, структуры таблицы и т.д. Это устанавливается в атрибуте dir.

Спецификация "[UNICODE]" назначает направление символам и определяет (сложный) алгоритм для определения соответствующего направления текста. Если документ не содержит отображаемых справа-налево символов, то от соответствующего ПА не требуется применять двунаправленный алгоритм "[UNICODE]" . Если документ содержит отображаемые справа-налево символы и если ПА отображает эти символы, ПА обязан использовать двунаправленный алгоритм.

Хотя Unicode специфицирует символы с направлением текста, HTML предлагает высокоуровневые конструкции разметки, которые делают то же самое: атрибут dir (не путайте с элементом DIR ) и элемент BDO. Таким образом, для отображения еврейских кавычек более интуитивно понятно будет записать:

<Q lang="he" dir="rtl">...еврейские кавычки...</Q>

чем то же самое в мнемониках Unicode:

&#x202B;&#x05F4;...еврейские кавычки...&#x05F4;&#x202C;

ПА не должны использовать атрибут lang для определения направления текста.

Атрибут dir наследуется и может быть переопределён. См. детали в разделе "информация о наследовании направления текста" .

Двунаправленный алгоритм. Введение

Следующий пример иллюстрирует ожидаемое поведение двунаправленного алгоритма. Он включает английский, написание слева-направо, и еврейский языки, написание справа-налево:

english1 HEBREW2 english3 HEBREW4 english5 HEBREW6

Символы в этом примере (и во всех подобных) хранятся на компьютере таким образом: первый символ в файле - "e", второй - "n" и последний - "6".

Предположим, преобладающий язык документа, содержащего этот параграф, английский. Это означает, что базовое направление - слева-направо. Корректное представление этого:

english1 2WERBEH english3 4WERBEH english5 6WERBEH
         <------          <------          <------
            H                H                H
------------------------------------------------->
                       E

Линии обозначают структуру предложения: английский - основной, а еврейский - внедрён. Достичь корректного представления можно без дополнительной разметки, поскольку еврейские фрагменты корректно повёрнуты ПА с применением двунаправленного алгоритма.

Если наоборот, преобладающий язык документа - еврейский, то базовое направление - справа-налево. Тогда корректное представление:

6WERBEH english5 4WERBEH english3 2WERBEH english1
        ------->         ------->         ------->
            E                E                E
<-------------------------------------------------
                       H

В этом случае, всё предложение представлено как текст справа-налево, и внедрённая последовательность символов на английском соответствующим образом повёрнута с помощью двунаправленного алгоритма.

Наследование информации о направлении текста

Двунаправленный алгоритм Unicode требует наличия базового направления для текстовых блоков. Чтобы определить базовое направление элементов на уровне блока, установите атрибут dir в элементе. Значение атрибута dir по умолчанию - " ltr " (left-to-right/слева-направо).

Если атрибут dir установлен для элементов уровня блока, он действует на период существования самого элемента и всех вложенных элементов уровня блока. Установка атрибута dir во вложенном элементе переопределяет наследованное значение.

Чтобы установить базовое направление текста для всего документа, установите атрибут dir элемента HTML.

Например:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
   "http://www.w3.org/TR/html4/strict.dtd">
<HTML dir="RTL">
<HEAD>
<TITLE>...заглавие справа-налево...</TITLE>
</HEAD>
...текст справа-налево...
<P dir="ltr">...текст слева-направо...</P>
<P>...снова текст справа-налево...</P>
</HTML>

В то же время, инлайн-элементы не наследуют атрибут dir. Это значит, что инлайн-элемент без атрибута dir не открывает дополнительный уровень в установке двунаправленного алгоритма. (Элемент рассматривается здесь как уровня инлайн или блока на основе его представления по умолчанию. Обратите внимание, что элементы INS и DEL могут быть уровня блока или инлайн в зависимости от контекста.)

Установка направления внедрённого текста

Двунаправленный алгоритм "[UNICODE]" автоматически поворачивает внедрённые последовательности символов в соответствии с их унаследованным направлением (как показано в предыдущих примерах). Однако в целом только один уровень внедрения может быть просчитан. Чтобы установить дополнительные уровни внедрённых изменений направления, придётся использовать атрибут dir в инлайн-элементах.

Рассмотрим тот же текст, что и ранее:

english1 HEBREW2 english3 HEBREW4 english5 HEBREW6

Предположим, преобладающим языком документа, содержащего этот параграф, является английский. С другой стороны, это предложение на английском содержит раздел на еврейском от HEBREW2 до HEBREW4, и раздел на еврейском содержит в себе английский (english3). Нужное представление предложения таково:

english1 4WERBEH english3 2WERBEH english5 6WERBEH
                 ------->	  
                    E
         <-----------------------
                    H
------------------------------------------------->
                    E

Чтобы выполнить два изменения направления, мы должны предоставить дополнительную информацию путём явного разграничения. В этом примере мы используем элемент SPAN и атрибут dir для разметки текста:

english1 <SPAN dir="RTL">HEBREW2 english3 HEBREW4</SPAN> english5 HEBREW6

Авторы могут также использовать специальные символы Unicode для выполнения множественных внедрённых изменений направления текста. Для получения внедрения "слева-направо", окружите внедряемый текст символами LEFT-TO-RIGHT EMBEDDING ("LRE", 16-ричная 202A) и POP DIRECTIONAL FORMATTING ("PDF", 16-ричная 202C). Для получения внедрения "справа-налево", окружите внедряемый текст символами RIGHT-TO-LEFT EMBEDDING ("RTE", 16-ричная l 202B) и PDF.

Использование разметки направления HTML с символами Unicode. Авторы и разработчики авторских программных продуктов должны знать, что конфликты могут увеличиться, если атрибут dir в инлайн-элементах (включая BDO ) соседствует с символами форматирования "[UNICODE]" . Лучше использовать то или другое. Метод разметки даёт больше гарантии структурной целостности документа и облегчает решение некоторых проблем при редактировании двунаправленного текста HTML в простом текстовом редакторе, но некоторые программы могут быть более адаптированы к использованию символов "[UNICODE]" . Если используются оба метода, нужно быть очень внимательным, устанавливая вложенную разметку и внедрённые изменения направления, иначе результаты отображения могут быть непредсказуемыми.
< Лекция 7 || Лекция 8: 123 || Лекция 9 >
Ирина Кириллова
Ирина Кириллова

Нажимаю на ссылку на дополнительный материал и дополнение к информации-меня возвращает на первую страницу лекции. Подскажите, что делать? Или дополнительный материал платный?