БАСТ
БАСТ
|
![]() |
Дополнение 4
Дополнение 4
|
Главная страница | Перевод CSS2 | Уроки HTML |
Страница W3C О спецификации HTML 4 Введение в HTML 4 О SGML и HTML Согласование: требования и рекомендации Представление документа HTML Основные типы данных HTML Глобальная структура документа HTML Информация о языке и направление текста Текст Списки Таблицы Ссылки Объекты, изображения и апплеты Стилевые таблицы Выравнивание, стиль шрифта и горизонтальные линии Фреймы Формы Скрипты Нормативная информация SGML для HTML Объявление HTML4 в SGML Шаблон DTD (Определение типа документа) Переходный шаблон DTD (Определение типа документа) Шаблон DTD для фреймов Информация о примитивах символов в HTML 4 W3C® Предупреждение об интеллектуальном праве и официальный отказ от прав |
8. Информация о языке и направление текста8.1. Определение языка содержания: атрибут: lang8.1.1. Кодировки языков 8.1.2. Наследование кодировок языков 8.1.3. Интерпретация кодировок языков 8.2. Определение направления текста и таблиц: атрибут dir 8.2.1. Введение в алгоритм двухстороннего направления текста 8.2.2. Наследование информации о направлении текста 8.2.3. Установка направления вложенного текста 8.2.4. Преодоление алгоритма двухстороннего направления: элемент BDO 8.2.5. Специальные символы для направления и управления соединениями 8.2.6. Влияние стилевых таблиц на двухстороннюю разметку Этот раздел документа обсуждает два важных вопроса, влияющих на интернационализацию HTML: определение языка (атрибут lang) и направление (атрибут dir) текста в документе. 8.1 Определение языка содержания: атрибут: langОпределение атрибутаlang = language-code [CI] Этот атрибут определяет основной язык для значений атрибутов элемента и для содержания текста. Значение этого атрибута по умолчанию не известно. Информация о языке, определенная атрибутом lang, использоваться устройством вывода для управления визуализации различным образом. Ситуации, когда информация о языке, предоставленная автором, может быть полезной, включают следующее:
Атрибут lang устанавливает язык содержания элемента и значений атрибутов; подходит ли он или нет, зависит от синтаксиса и семантики атрибута и проводимой операции. Атрибут lang предназначен для того, чтобы позволить устройствам вывода точнее визуализировать содержание на основании культурной практики данного языка. Это не подразумевает, что устройства вывода будут представлять символы, нетипичные для частного языка, не подходящим образом; устройства вывода должны делать все, чтобы визуализировать все символы, не смотря на значение, определенное в lang. Например, если символы из греческого алфавита появляются в середине английского теста: <P><Q lang="en">Her super-powers were the result of γ-radiation,</Q> he explained.</P> устройство вывода (1) должно попытаться визуализировать английское содержание соответствующим образом (например, с соответствующими кавычками) и (2) должно сделать все, чтобы визуализировать γ, даже если это не английский символ. Пожалуйста, обратитесь к разделу о символах, не выводимых на экран, для получения необходимой информации. 8.1.1 Кодировки языковЗначение атрибута lang – это кодировка, идентифицирующая естественный язык, на котором говорят, пишут или используют для передачи информации между людьми. Компьютерные языки строго исключены из кодировки языков. [RFC1766] определяют и объясняют кодировки языков, которые должны использоваться в HTML-документах. То есть языковые кодировки состоят из первичного кода и, возможно, пустых серий подкодов: language-code = primary-code ( "-" subcode )* Ниже приводятся примеры языковых кодировок:
Двухбуквенные первичные кодировки зарезервированы для языковых сокращений [ISO639]. Двухбуквенные кодировки включают: fr (French), de (German), it (Italian), nl (Dutch), el (Greek), es (Spanish), pt (Portuguese), ar (Arabic), he (Hebrew), ru (Russian), zh (Chinese), ja (Japanese), hi (Hindi), ur (Urdu) и sa (Sanskrit). Любые двухбуквенные подкоды должны быть кодировками страны [ISO3166]. 8.1.2 Наследование кодировок языковЭлемент наследует информацию о кодировке языка в соответствии со следующим порядком предшествования (от высшего к низшему):
Content-Language: en-cockney
В следующем примере первичный язык документа - французский ("fr"). Один параграф объявляется - на испанском языке ("es"), после которого первичный язык возвращается к французскому. Второй параграф включает вложенную фразу на японском языке ("ja"), после которого первичный язык опять - французский. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <HTML lang="fr"> <HEAD> <TITLE>Un document multilingue</TITLE> </HEAD> <BODY> ...Interpreted as French... <P lang="es">...Interpreted as Spanish... <P>...Interpreted as French again... <P>...French text interrupted by<EM lang="ja">some Japanese</EM>French begins here again... </BODY> </HTML> Обратите внимание. Ячейки таблицы могут наследовать значение lang, не от своего родителя, а от первой ячейки в диапазоне. Пожалуйста, обратитесь к разделу о наследовании выравнивания для получения подробной информации. 8.1.3 Интерпретация кодировок языковВ контексте HTML, кодировка языков должна интерпретироваться устройствами вывода, как иерархия маркеров, а не единичный маркер. Когда устройство вывода регулируют визуализацию в соответствии с информацией о языке (скажем, сравнивая кодировки языков в стилевых таблицах и значения lang), оно всегда должно предпочитать точное соответствие, но оно также должно рассматривать согласование первичных кодировок, как достаточные. Таким образом, если значение атрибута lang "en-US" установлено для элемента HTML, то устройству вывода следует предпочитать стилевую информацию, которая первая согласуется с "en-US", и затем более общее значение "en". Обратите внимание. Иерархия в языковых кодировках не гарантирует, что все языки с обычными префиксами будут поняты ими свободно в одном или нескольких этих языках. Они позволят пользователю запросить унифицированность, когда это – верно для пользователя. 8.2 Определение направления текста и таблиц: атрибут dirОпределение атрибутаdir = LTR | RTL [CI] Этот атрибут определяет базовое направление текста, который нейтрален для направления (т.е., текст, который не наследует направление, как это определено в [UNICODE]) в содержании элемента и в значениях атрибута. Он также определяет направление в таблицах. Возможные значения:
Дополнительно к определению языка документа атрибутом 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 -- > Начальный тег: обязательный (required), конечный тег: обязательный (required) Определение атрибутовdir = LTR | RTL [CI] Этот обязательный атрибут устанавливает основное направление текстового содержания элемента. Установлкнное направление преодолевает наследуемое расположение символов, как это определено в [UNICODE]. Возможные значения:
Атрибуты, определенные в другом месте
Алгоритма двустороннего направления текста и атрибута 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 (присвоенному наследуемое значение) к трансформированному элементу. |
Главная страница | Перевод CSS2 | Уроки HTML |