Евгений Резниченко - Спецификация CSS2

Тут можно читать онлайн Евгений Резниченко - Спецификация CSS2 - бесплатно полную версию книги (целиком) без сокращений. Жанр: Прочая околокомпьтерная литература. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
Евгений Резниченко - Спецификация CSS2

Евгений Резниченко - Спецификация CSS2 краткое содержание

Спецификация CSS2 - описание и краткое содержание, автор Евгений Резниченко, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

Курс построен по спецификации, которая определяет язык каскадных таблиц стилей CSS2.

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

Спецификация CSS2 - читать онлайн бесплатно полную версию (весь текст целиком)

Спецификация CSS2 - читать книгу онлайн бесплатно, автор Евгений Резниченко
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

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

Данная таблица указывает, где может быть найдена такая информация для шрифтов обычных форматов.

Дескриптор Type 1 TrueType и OpenType TrueType GX [TRUETYPEGX]
'ascent' 'Ascender' в файле AFM/PFM 'Ascender' в таблице 'hhea' или (предпочтительнее) 'sTypoAscender' в таблице 'OS/2' 'horizontalBefore' в таблице 'fmtx
'baseline' таблица bsln , см. примечание ниже
'bbox' FontBBox , словарь шрифтов вхождения таблицы 'head' - 'xMin', 'xMax', 'yMin' и 'yMax'
'cap-height' CapHeight в файле AFM/PFM
'descent' 'Descender' в файле AFM/PFM
'mathline' таблица bsln
'font-family' FamilyName , fontinfo-словарь таблица name
'stemh' StdHW , приватный словарь файла AFM/PFM
'stemv' /StdVW , приватный словарь таблица cvt
'topline' таблица bsln
'unicode-range' cmap file таблица OS/2, см. Приложение С
'units-per-em' FontMatrix , словарь шрифтов unitsPerEm , таблица head
'widths' таблица hmtx

Внутри таблицы bsln , ideographic centered baseline может использоваться для растяжений преобладающих идеографических символов, а ideographic low baseline больше подходит для идеографических символов при прогоне преобладающих символов Latin, Greek или Cyrillic.

Дополнение. Приложение D. Грамматика CSS2

Это приложение является нормативным. Грамматика определяет синтаксис CSS2. В некотором смысле она является наднабором CSS2, так как в этой спецификации вводятся дополнительные семантические ограничения, не указанные в грамматике. Соответствующие пользовательские агенты (ПА) также обязаны придерживаться правил вперёд-совместимого разбора, нотации свойств и значений и нотации модуля. В дополнение к этому, язык документа может вводить ограничения, например, HTML вводит ограничения на возможные значения атрибута "class".

Это грамматика LL(1)(но учтите, что большинство ПА не должны использовать её напрямую, поскольку она отражает не соглашения по разбору, а только синтаксис CSS2. Формат продуктов оптимизирован для удобства, и используются некоторые сокращения Yacc (см. [YACC]):

[x]. *: 0 или более

[x]. +: 1 или более

[x]. ?: 0 или 1

[x]. |: разделитель альтернатив

[x]. [ ]: группировка

Продуктами являются:

stylesheet : [ CHARSET_SYM S* STRING S* ';' ]? [S|CDO|CDC]* [ import [S|CDO|CDC]* ]* [ [ ruleset | media | page | font_face ] [S|CDO|CDC]* ]* ; import : IMPORT_SYM S* [STRING|URI] S* [ medium [ ',' S* medium]* ]? ';' S* ; media : MEDIA_SYM S* medium [ ',' S* medium ]* '{' S* ruleset* '}' S* ; medium : IDENT S* ; page : PAGE_SYM S* IDENT? pseudo_page? S* '{' S* declaration [ ';' S* declaration ]* '}' S* ; pseudo_page : ':' IDENT ; font_face : FONT_FACE_SYM S* '{' S* declaration [ ';' S* declaration ]* '}' S* ; operator : '/' S* | ',' S* | /* empty */ ; combinator : '+' S* | '>' S* | /* empty */ ; unary_operator : '-' | '+' ; property : IDENT S* ; ruleset : selector [ ',' S* selector ]* '{' S* declaration [ ';' S* declaration ]* '}' S* ; selector : simple_selector [ combinator simple_selector ]* ; simple_selector : element_name? [ HASH | class | attrib | pseudo ]* S* ; class : '.' IDENT ; element_name : IDENT | '*' ; attrib : '[' S* IDENT S* [ [ '=' | INCLUDES | DASHMATCH ] S* [ IDENT | STRING ] S* ]? ']' ; pseudo : ':' [ IDENT | FUNCTION S* IDENT S* ')' ] ; declaration : property ':' S* expr prio? | /* empty */ ; prio : IMPORTANT_SYM S* ; expr : term [ operator term ]* ; term : unary_operator? [ NUMBER S* | PERCENTAGE S* | LENGTH S* | EMS S* | EXS S* | ANGLE S* | TIME S* | FREQ S* | function ] | STRING S* | IDENT S* | URI S* | RGB S* | UNICODERANGE S* | hexcolor ; function : FUNCTION S* expr ')' S* /* * Имеется ограничение: цвет обязан иметь * 3 или 6 16-ричных цифр (т.е., [0-9a-fA-F]) после "#", * например, "#000" это OK, но "#abcd" - нет. */ hexcolor : HASH S* ;

Это сканер, написанный в нотации Flex (см. [FLEX]). Сканер является нечувствительным к регистру.

Два "\377" представляют наибольшее число символа, которое может быть обработано текущей версией Flex (десятеричное 255). Они должны читаться как "\4177777" (десятеричное 1114111), которое является наивысшей возможной кодовой точкой в Unicode/ ISO-10646 .

%option case-insensitive h [0-9a-f] nonascii [\200-\377] unicode \\{h}{1,6}[ \t\r\n\f]? escape {unicode}|\\[ -~\200-\377] nmstart [a-z]|{nonascii}|{escape} nmchar [a-z0-9-]|{nonascii}|{escape} string1 \"([\t !#$%&(-~]|\\{nl}|\'|{nonascii}|{escape})*\" string2 \'([\t !#$%&(-~]|\\{nl}|\"|{nonascii}|{escape})*\' ident {nmstart}{nmchar}* name {nmchar}+ num [0-9]+|[0-9]*"."[0-9]+ string {string1}|{string2} url ([!#$%&*-~]|{nonascii}|{escape})* w [ \t\r\n\f]* nl \n|\r\n|\r|\f range \?{1,6}|{h}(\?{0,5}|{h}(\?{0,4}|{h}(\?{0,3}|{h}(\?{0,2}|{h}(\??|{h}))))) %% [ \t\r\n\f]+ {return S;} \/\*[^*]*\*+([^/][^*]*\*+)*\/ /* ignore comments */ "" {return CDC;} "~=" {return INCLUDES;} "|=" {return DASHMATCH;} {string} {return STRING;} {ident} {return IDENT;} "#"{name} {return HASH;} "@import" {return IMPORT_SYM;} "@page" {return PAGE_SYM;} "@media" {return MEDIA_SYM;} "@font-face" {return FONT_FACE_SYM;} "@charset" {return CHARSET_SYM;} "@"{ident} {return ATKEYWORD;} "!{w}important" {return IMPORTANT_SYM;} {num}em {return EMS;} {num}ex {return EXS;} {num}px {return LENGTH;} {num}cm {return LENGTH;} {num}mm {return LENGTH;} {num}in {return LENGTH;} {num}pt {return LENGTH;} {num}pc {return LENGTH;} {num}deg {return ANGLE;} {num}rad {return ANGLE;} {num}grad {return ANGLE;} {num}ms {return TIME;} {num}s {return TIME;} {num}Hz {return FREQ;} {num}kHz {return FREQ;} {num}{ident} {return DIMEN;} {num}% {return PERCENTAGE;} {num} {return NUMBER;} "url("{w}{string}{w}")" {return URI;} "url("{w}{url}{w}")" {return URI;} {ident}"(" {return FUNCTION;} U\+{range} {return UNICODERANGE;} U\+{h}{1,6}-{h}{1,6} {return UNICODERANGE;} . {return *yytext;}

Имеются некоторые различия между вышеприведённым синтаксисом и синтаксисом, специфицированным в рекомендациях CSS1 ([CSS1]). Большинство этих отличий - из-за новых понятий в CSS2, которые отсутствовали в CSS1. Другие - из-за того, что грамматика была переписана, чтобы сделать её более читабельной. Однако есть и некоторые несовместимые изменения, которые вызвали бы ошибку в CSS1. Они разъяснены ниже.

[x].Таблицы стилей CSS1 могут быть кодированы только 1-байт-на-символ, как ASCII и ISO-8859-1. CSS2 не имеет таких ограничений. На практике было мало трудностей с экстраполированием сканера а CSS1, и некоторые ПА принимали 2-байтное кодирование.

[x].CSS1 допускал только четыре 16-ричных числа после обратного слэша (\) для ссылок на символы Unicode, CSS2 допускает шесть. Кроме того, CSS2 допускает символы пробела в качестве разграничителей escape-последовательностей. Например, в соответствии с CSS1, строка "\abcdef" имеет 3 буквы (\abcd, e и f), а в соответствии с CSS2 - только одну (\abcdef).

[x].Символ табуляции (ASCII 9) в строках не допускается. Однако, поскольку строки в CSS1 использовались только для имён шрифтов и для URL, единственное, что может привести к несовместимости между CSS1 и CSS2, это если таблица стилей содержит семейство шрифтов, имеющее символ табуляции в своём имени.

[x].Также символы новой строки (escape-последовательность с обратным слэшем) не допускались в строках CSS1.

[x].CSS2 разбирает число со следующим непосредственно за ним идентификатором как обозначение DIMEN (т.е. как неизвестный модуль). CSS1 разбирал его как число и как идентификатор. Это означает, что в CSS1 объявление 'font: 10pt/1.2serif' было корректным, а в 'font: 10pt/12pt serif'; в CSS2 требуется пробел перед "serif". (Некоторые ПА принимали первый пример, но не принимали второй.)

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Евгений Резниченко читать все книги автора по порядку

Евгений Резниченко - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Спецификация CSS2 отзывы


Отзывы читателей о книге Спецификация CSS2, автор: Евгений Резниченко. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x