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

  aranea.ru || Спецификация CSS2 | 9.10. Направление текста: свойства 'direction' и 'unicode-bidi'.

9.10. Направление текста: свойства 'direction' и 'unicode-bidi'.

Символы в определенных сценариях пишутся справа налево. В документах на арабском или еврейском языках и в некоторых контекстах со смешенными языками, текст в одном блоке (визуально) может появиться со смешанным направлением. Этот феномен называется двухсторонностью, или "bidi" для краткости.

В стандарте Unicode определяется сложный алгоритм для установки правильного направления текста. Алгоритм состоит из подразумеваемой части, основанной на свойствах символов, а также явного управления для реализации и перекрытия. Для достижения правильной двухсторонней визуализации, CSS2 зависят от этого алгоритма. Свойства 'direction' и 'unicode-bidi' разрешают авторам определять, как элементы и атрибуты языка документа кодируются для этого алгоритма.

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

Так как направление текста зависит от структуры и семантики языка документа, эти свойства должны быть использованы в большинстве случаев только дизайнерами файлов DTD (document type description), или авторами специальных документов. Если стилевая таблица по умолчанию определяет эти свойства, то авторы и пользователи не должны определять правила для их преодоления. Типичное исключение перекрывает двухстороннее поведение в устройстве вывода, если такое устройство вывода транслитерирует идиш (обычно написанного еврейскими буквами) к латинским буквам по запросу пользователя.

Спецификации HTML 4.0 определяют двухстороннее поведение для элементов HTML. Согласование устройств вывода HTML может, поэтому, игнорировать свойства 'direction' и 'unicode-bidi' в стилевых таблицах авторов и пользователей. Правила стилевых таблиц, которые будут влиять на двухстороннее поведение, определенное в HTML 4.0, даны в примере стилевых таблиц. Спецификации HTML 4.0 содержать больше информации по вопросам двусторонности.

'direction'
Тип значения:       ltr | rtl | inherit
Начальная величина: ltr
Применяется:        ко всем элементам, но смотрите prose
Наследование:       да
Процентная база:    нет
Медиа:              визуальные

Это свойство определяет базовое направления надписей в блоках и направление вставок и наложений (смотрите 'unicode-bidi') для двустороннего алгоритма Unicode. Дополнительно, это определяет направление размещения колонок таблицы, направление горизонтального перекрытия и позицию незаконченной последней строки в блоке в случае 'text-align:justify'.

Это свойство имеет значения:

ltr
Направление слева направо.
rtl
Направление справа налево.

Для свойства 'direction', чтобы иметь любой эффект для строчных элементов, значение свойства 'unicode-bibi' должно быть 'embed' или 'override'.

Обратите внимание. Свойство 'direction', когда определено для элементов колонок таблицы, не наследуется ячейками в колонках, так как колонки не существуют в дереве документа. Таким образом, CSS не может легко вводить правила наследования для атрибута "dir", описанные в HTML 4.0.

'unicode-bidi'
Тип значения:       normal | embed | bidi-override | inherit
Начальная величина: normal
Применяется:        ко всем элементам, но смотрите prose
Наследование:       нет
Процентная база:    нет
Медиа:              визуальные

Это свойство имеет следующие значения:

normal
Элемент не открывает дополнительного уровня вставки с учетом двустороннего алгоритма Для строчных элементов подразумеваемое переупорядочение работает через границы элементов.
embed
Если элемент является строчным, то это значение открывает дополнительный уровень вставки с учетом двухстороннего алгоритма. Направление этого уровня вставки определяется свойством 'direction'. Внутри элемента реорганизация делается неявно. Это соответствует добавлению LRE (U+202A; для 'direction: ltr') или RLE (U+202B; для 'direction: rtl') в начале элемента и PDF (U+202C) в конце элемента.
bidi-override
Если элемент является строчным или блочным элементом, который содержит только строчные элементы, то это значение создает перекрытие. Это означает, что внутри элемента реорганизация происходит строго в последовательности, соответствующей свойству 'direction'; подразумеваемая, что часть двустороннего алгоритма игнорируется. Это соответствует добавлению LRO (U+202D; для 'direction: ltr') или RLO (U+202E; для 'direction: rtl') в начале элемента, и PDF (U+202C) в конце элемента.

Окончательный порядок символов в каждом элементе блочного уровня является таким же, как если бы коды двустороннего контроля добавлялись, как описано выше, разметка демонтируется, и результирующая последовательность символов приходит к выполнению двустороннего алгоритма Unicode для простого текста, который продуцирует те же разрывы страниц, что и стилевой текст. В этом процессе не текстовые примитивы, такие как изображения, обрабатываются как нейтральные символы до тех пор, пока их свойство 'unicode-bidi' имеет значение, отличное от 'noraml', в случае которого они обрабатываются как символы в 'direction', определенных для элемента.

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

Так как алгоритм Unicode имеет ограничение для 15 уровней вставок, то необходимо внимательно использовать 'unicod-bidi' со значением, отличным от 'noraml'. В частности, значение 'inherit' следует использовать с чрезвычайной осторожностью. Однако, для элементов, которые предназначены для вывода на экран как блоки, установки 'unicode-bidi: embed' предпочтительнее для сохранения элементов вместе в случае, когда меняется демонстрация строки (смотрите пример ниже).

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

В этом примере буквы нижнего регистра установлены, как наследуемые, для символов, выводящихся слева направо, а буквы верхнего регистра представляют символы, выводимые справа налево:

<HEBREW>
  <PAR>HEBREW1 HEBREW2 english3 HEBREW4 HEBREW5</PAR>
  <PAR>HEBREW6 <EMPH>HEBREW7</EMPH> HEBREW8</PAR>
</HEBREW>
<ENGLISH>
  <PAR>english9 english10 english11 HEBREW12 HEBREW13</PAR>
  <PAR>english14 english15 english16</PAR>
  <PAR>english17 <HE-QUO>HEBREW18 english19 HEBREW20</HE-QUO></PAR>
</ENGLISH>

Поскольку это - XML, то стилевая таблица отвечает за установку направления текста. Это стилевая таблица дана ниже:

/* Rules for bidi */
HEBREW, HE-QUO  {direction: rtl; unicode-bidi: embed}
ENGLISH         {direction: ltr; unicode-bidi: embed} 

/* Rules for presentation */
HEBREW, ENGLISH, PAR  {display: block}
EMPH                  {font-weight: bold}

Элемент HEBREW является блоком с базовым направлением справа налево, элемент ENGLISH является блоком с базовым направлением слева направо. PAR – это блоки, которые наследуют базовое направление от их родителей. Таким образом, первые два PAR читаются, начиная с верхнего правого края, три последних читаются, начиная сверху слева. Обратите внимание на то, что HEBREW и ENGLISH выбираются как имена элементов только для ясности; в общем, названия элементов должны сопровождать структуру без ссылки на язык.

Элемент EMPH является строчным, и поскольку его значение 'unicode-bidi' – 'normal' (начальное значение), то он не имеет воздействия на порядок текста. Элемент HE-QUO с другой стороны создает вставку.

Форматирование этого текста мог бы выглядеть так, как будто длина строки очень большая:

  5WERBEH 4WERBEH english3 2WERBEH 1WERBEH

                                8WERBEH 7WERBEH 6WERBEH

english9 english10 english11 13WERBEH 12WERBEH

english14 english15 english16

english17 20WERBEH english19 18WERBEH

Обратите внимание на то, что вставка HE-QUO приводит к тому, что HEBREW18 будет справа от english19.

Если строки должны быть разбиты, то это может выглядеть следующим образом:

       2WERBEH 1WERBEH
  -EH 4WERBEH english3
                 5WERB

   -EH 7WERBEH 6WERBEH
                 8WERB

english9 english10 en-
glish11 12WERBEH
13WERBEH

english14 english15
english16

english17 18WERBEH
20WERBEH english19

Так как строка HEBREW18 должна читаться до english19, то строка находится выше english19. Не будет работать только разрыв длинной строки после предварительного форматирования. Обратите внимание на то, что только первый слог от english19 может быть подогнанным к предыдущей строке, но расстановка переносов слов слева направо в контексте направления справа налево, и наоборот, обычно подавляется для избегания вывода дефисов в середине строки.

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