ИНФОРМАЦИЯ,    ДИЗАЙН,    ПЕРЕВОДЫ,    РЕКЛАМА   .   .   .
w a p - с а й т
Информационный портал
Сегодня:  
admin@aranea.ru
+79068922256

  aranea.ru || Спецификация HTML 4.01 | 8. Информация о языке и направление текста

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

8.2. Определение направления текста и таблиц: атрибут dir

8.2.1. Введение в алгоритм двухстороннего направления текста
8.2.2. Наследование информации о направлении текста
8.2.3. Установка направления вложенного текста
8.2.4. Преодоление алгоритма двухстороннего направления: элемент BDO
8.2.5. Специальные символы для направления и управления соединениями
8.2.6. Влияние стилевых таблиц на двухстороннюю разметку

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

dir = LTR | RTL [CI]
Этот атрибут определяет базовое направление текста, который нейтрален для направления (т.е., текст, который не наследует направление, как это определено в [UNICODE]) в содержании элемента и в значениях атрибута. Он также определяет направление в таблицах. Возможные значения:
  • LTR: направление текста или таблицы слева направо.
  • RTL: направления текста или таблицы справа налево.

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

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

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

<Q lang="he" dir="rtl">...a Hebrew quotation... </Q>

чем использовать эквивалент символов Unicode:

‫״...a Hebrew quotation...״‬

Устройствам вывода нельзя использовать атрибут lang для определения направления текста.

Атрибут dir наследуется и может преодолеваться. Пожалуйста, обратитесь к разделу о наследовании направления текста.

8.2.1 Введение в алгоритм двухстороннего направления текста

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

Рассмотрите следующий пример текста:

  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

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

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

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

Когда для блочного элемента устанавливается атрибут 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>...a right-to-left title... </TITLE>
</HEAD>
...right-to-left text...
<P dir="ltr">...left-to-right text... </P>
<P>...right-to-left text again... </P>
</HTML>

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

8.2.3 Установка направления вложенного текста

Алгоритм двухстороннего направления [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", шестнадцатиричное значение 202A) и POP DIRECTIONAL FORMATTING ("PDF", шестнадцатиричное значение 202C). Для достижения вложения справа налево, окружите вложенный текст символами RIGHT-TO-LEFT EMBEDDING ("RTE", шестнадцатиричное значение 202B) и PDF.

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

8.2.4 Преодоление алгоритма двухстороннего направления: элемент BDO

<!ELEMENT BDO - - (%inline;)*          -- I18N BiDi over-ride -->
<!ATTLIST BDO
  %coreattrs;                          -- id, class, style, title --
  lang        %LanguageCode; #IMPLIED  -- language code --
  dir         (ltr|rtl)      #REQUIRED -- directionality --
  >

Начальный тег: обязательный, конечный тег: обязательный

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

dir = LTR | RTL [CI]
Этот обязательный атрибут устанавливает основное направление текстового содержания элемента. Установленное направление преодолевает наследуемое расположение символов, как это определено в [UNICODE]. Возможные значения:
  • LTR: Направление текста слева направо.
  • RTL: Направление текста справа налево.

Атрибуты, определенные в другом месте

  • lang

Алгоритма двухстороннего направления текста и атрибута dir, обычно, достаточно для регулировки изменений направления вложений. Но, могут возникнуть некоторые ситуации, когда двухсторонний алгоритм приводит в результате к некорректной презентации. Элемент BDO позволяет авторам выключить этот алгоритм для выбранных фрагментов текста.

Рассмотрите документ, включающий тот же текст, как и в предыдущих примерах:

english1 HEBREW2 english3 HEBREW4 english5 HEBREW6

но допустим, что этот текст уже размещен в визуальном порядке. Одна из причин этого состоит в том, что стандарт MIME ([RFC2045], [RFC1556]) предпочитает визуальный порядок, т.е., когда предложения символов с направлением справа налево вставляются в байтовый поток также справа налево. В электронной почте это может быть отформатировано, включая обрыв строки, следующим образом:

english1 2WERBEH english3
4WERBEH english5 6WERBEH

Это конфликтует с алгоритмом двухстороннего направления текста [UNICODE], так как алгоритм будет инвертировать 2WERBEH, 4WERBEH и 6WERBEH второй раз, показывая слова на иврите слева направо, а не справа налево.

Решение данного случая состоит в преодолении двухстороннего алгоритма, размещая электронное сообщение в элемент PRE (для сохранения обрыва строк), а каждую строку в элемент BDO, атрибут dir которого установлен как LTR:

<PRE>
<BDO dir="LTR">english1 2WERBEH english3</BDO>
<BDO dir="LTR">4WERBEH english5 6WERBEH</BDO>
</PRE>

Все это сообщает двустороннему алгоритму: "Leave me left-to-right!" ("Оставь меня левосторонним"), и в результате приведет к желаемой презентации:

english1 2WERBEH english3
4WERBEH english5 6WERBEH

Элемент BDO следует использовать в сценариях, где требуется абсолютное управление порядком в предложении (например, ряд многоязычных частей). Атрибут dir обязателен для такого элемента.

Авторы могут также использовать специальные символы для преодоления двустороннего алгоритма -- LEFT-TO-RIGHT OVERRIDE (202D) или RIGHT-TO-LEFT OVERRIDE (202E). Символ POP DIRECTIONAL FORMATTING (202C) заканчивает любое преодоление двухсторонней направленности.

Обратите внимание. Могут возникнуть конфликты, если атрибут dir используется для внутристрочных элементов (включая BDO) вместе с соответствующими форматирующими символами [UNICODE].

Двухстороннее направление и кодировка символов. В соответствии с [RFC1555] и [RFC1556] используют специальные соглашения для значений параметра "charset" при указании на обращение с двухсторонней направленностью текста в почте MIME, в частности для различения между визуальной, неявной и явной направленностью. Значение параметра "ISO-8859-8" (для иврита) означает визуальную кодировку, "ISO-8859-8-i" подразумевает неявное двухстороннее направление, а "ISO-8859-8-e" – явное.

Так как HTML использует алгоритм двухстороннего направления текста Unicode, то согласование документов, закодированных с помощью ISO 8859-8, должно быть помечено как "ISO-8859-8-i". Явное управление направлением в HTML также возможно, но оно не может выражаться с помощью ISO 8859-8, так как "ISO-8859-8-e" не следует использовать.

Значение "ISO-8859-8" подразумевает, что документ форматируется визуально, используя неправильно определенную разметку (подобно TABLE с правым выравниванием и без переноса строк) для обеспечения разумного вывода на дисплей для старых устройств, которые не воспринимают двухстороннее направление. Такие документы не согласуются с настоящей спецификацией. Если необходимо, то их можно сделать соответствующими текущей спецификации (и в то же время они будут выводиться корректно на дисплей старых устройств вывода), добавляя разметку BDO, где это необходимо. В противоположность сказанному в [RFC1555] и [RFC1556], ISO-8859-6 (Arabic) не является визуально упорядоченным стандартом.

8.2.5 Специальные символы для направления и управления соединениями

Так как иногда возникают неопределенности по отношению к направлению ряда символов (например, пунктуации), спецификация [UNICODE] включает символы, дающие возможность их правильного различения. Кроме этого, Unicode включает некоторые символы для управления совместного поведения, где это необходимо (например, ситуации с арабскими буквами). HTML 4 имеет специальные символы для таких случаев.

Следующий файл DTD представляет некоторые примитивы направления:

   <!ENTITY zwnj CDATA "‌"--=zero width non-joiner-->
   <!ENTITY zwj  CDATA "‍"--=zero width joiner-->
   <!ENTITY lrm  CDATA "‎"--=left-to-right mark-->
   <!ENTITY rlm  CDATA "‏"--=right-to-left mark-->

Примитив zwnj используется для блокировки совместного поведения в контексте, где присоединение произойдет, хотя и не должно. Примитив zwj не является противоположным, он усиливает соединение, где оно не будет происходить, хотя и может. Например, арабская буква "HEH" используется для сокращения "Hijri" (имени исламской календарной системы). Поскольку изолированная форма "HEH" выглядит подобно цифре пять, применяемой в арабском написании (основанном на индийских цифрах), чтобы предохранить от путаницы "HEH" с пятеркой в году, используют начальную форму "HEH". Но, здесь отсутствует контекст предшествования (т.е. присоединяющаяся буква), к которой "HEH" может присоединяться. Символ zwj предоставляет такой контекст.

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

Другие символы, lrm и rlm, используются при усилении направления для символов, нейтральных к направленности. Например, если двойные кавычки идут между арабской (справа налево) и латинской (слева направо) буквой, то направление кавычки не ясно (что заключено в кавычки – арабский текст или латинский?). Символы lrm и rlm имеют свойство направленности, но не имеют ширины и свойства разрыва слова/строки. Обратитесь к [UNICODE] для получения подробной информации.

Зеркальные глифы символов. В общем, алгоритм двухстороннего направления текста не производит зеркальные глифы символов, и оставляет их неизменными. Исключением являются символы, подобные круглым скобкам (смотрите [UNICODE]). В случаях, где зеркальное отображение желательно, например, для египетских иероглифов, греческих Bustrophedon или специальных эффектов дизайна, это следует контролировать с помощью стилевых таблиц.

8.2.6 Влияние стилевых таблиц на двухстороннюю разметку

В общем, использование стилевых таблиц для изменения визуализации элемента, блочного или внутристрочного уровня и наоборот, совершенно не сложно. Так как алгоритм двухстороннего направления текста полагается на различение уровней блочный/внутристрочный, то необходимо быть очень внимательным во время трансформации.

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

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


← Назад | Вперед →
Copyright © 2006 -  aranea.ru