Поиск

Представление документов, в которых используются CSS

Таблица стилей CSS представляет собой последовательность символов универсального набора (см. [ISO10646]). Для передачи и хранения эти символы должны кодироваться в соответствии с той системой кодировки, которая поддерживает набор символов US-ASCII (например, ISO 8859-x, SHIFT JIS и т.д.). Информацию о наборах символов и кодировании символов можно найти в спецификации HTML 4.0 ([HTML40], глава 5), а также в спецификации XML 1.0 ([XML10]

Если таблица стилей импортируется в другой документ, например, в элемент STYLE или атрибут "style" HTML-документа, то она использует систему кодировки, принятую в документе.

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

Параметр "charset" HTTP в поле "Content-Type".
Правило at @charset.

Элементы кодировки языка в документе, из которого происходит ссылка на таблицу (например, атрибут "charset" элемента LINK в HTML-документе).

Во внешней таблице стилей может быть не больше одного правила @charset. Его не должно быть во внедренной таблице стилей, и оно должно Располагаться в самом начале документа, чтобы перед ним не было ни одного символа. После слова "@charset" нужно указать название системы кодировки символов. Название должно представлять собой название набора символов в соответствии с реестром IANA (см. [IANA]. Полный список наборов символов можно найти в [CHARSETS]). Например:

@charset "ISO-8859-1";

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

Следует помнить, что использование конструкции @charset теоретически может вызвать проблемы, связанные с тем, что заранее неизвестно, какая кодировка используется используется в самой этой конструкции. Однако на практике Интернет чаще всего используются кодировки на базе ASCII, UTF-16, UCS-4 или (редко) на EBCDIC. Это означает, что в общем случае начальные байты документа позволяют агентам пользователей достоверно определять тип кодировки, что предоставляет достаточный объем информации для декодирования правила @charset, который в свою очередь точно указывает тип кодировки.

Ссылки на символы, отсутствующие в системе кодировки

В таблице стилей может понадобиться обращение к символам, которые не могут быть представлены в текущей кодировке. Эти символы должны представляться в виде ссылок на символы кодировки ISO 10646 с использованием обратного слэша. Это делается с той же целью, что и кодирование цифровых ссылок в документах HTML или XML (см. [HTML40], главы 5 и 25).

Механизм кодирования символов с использованием обратного слэша рекомендуется использовать только для небольшого количества символов. Если необходимость в его использовании возникает часто, следует использовать наиболее приемлемую систему кодировки (например, если документ содержит много греческих символов, то рекомендуется использовать "ISO-8859-7" или "UTF-8").

Промежуточные процессоры, использующие другую кодировку символов, могут переводить последовательности символов с обратным слэшем в последовательности байтов этой кодировки. С другой стороны, промежуточные процессоры не должны вносить в такие последовательности символов изменения, которые могли бы изменить специальные значения символов ASCII-кода.

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

Например, документ, переданный как документ в кодировке ISO-8859-1 (Latin-1), не может содержать греческие символы: "κουρος" (греческий: "kouros"). Эта последовательность должна быть представлена в виде: "3BABFC5C1BFC2".

Примечание. В HTML 4.0 числовые ссылки на символы интерпретируются в значениях атрибута "style", но не в содержимом элемента STYLE. Вследствие подобной асимметрии для атрибута "style" и элемента STYLE разработчикам рекомендуется использовать механизм в CSS обратные слэши, а не числовую кодировку. Например,

<SPAN style="voice-family: D\FC rst">...</SPAN>

рекомендуется использовать вместо

<SPAN style="voice-family: D&#252;rst">...</SPAN>