Дополнения

Дополнение. Приложение A. Образец таблицы стиля для HTML 4.0

Данное приложение является информативным, но не нормативным.

Эта таблица стилей описывает типичное форматирование для всех элементов HTML 4.0 ([HTML40]), базирующееся на обширных исследованиях текущей практики работы пользовательских агентов (ПА). Разработчикам предлагается использовать её как таблицу стилей по умолчанию.

Полное представление некоторых элементов HTML невозможно в CSS2, в том числе - заменяемых элементов (IMG, OBJECT), элементов скриптинга (SCRIPT, APPLET), элементов формы и элементов фрэймов.



ADDRESS,
BLOCKQUOTE, 
BODY, DD, DIV, 
DL, DT, 
FIELDSET, FORM,
FRAME, FRAMESET,
H1, H2, H3, H4, 
H5, H6, IFRAME, 
NOFRAMES, 
OBJECT, OL, P, 
UL, APPLET, 
CENTER, DIR, 
HR, MENU, PRE   { display: block }
LI              { display: list-item }
HEAD            { display: none }
TABLE           { display: table }
TR              { display: table-row }
THEAD           { display: table-header-group }
TBODY           { display: table-row-group }
TFOOT           { display: table-footer-group }
COL             { display: table-column }
COLGROUP        { display: table-column-group }
TD, TH          { display: table-cell }
CAPTION         { display: table-caption }
TH              { font-weight: bolder; text-align: center }
CAPTION         { text-align: center }
BODY            { padding: 8px; line-height: 1.33 }
H1              { font-size: 2em; margin: .67em 0 }
H2              { font-size: 1.5em; margin: .83em 0 }
H3              { font-size: 1.17em; margin: 1em 0 }
H4, P,
BLOCKQUOTE, UL,
FIELDSET, FORM,
OL, DL, DIR,
MENU            { margin: 1.33em 0 }
H5              { font-size: .83em; line-height: 1.17em; margin: 1.67em 0 }
H6              { font-size: .67em; margin: 2.33em 0 }
H1, H2, H3, H4,
H5, H6, B,
STRONG          { font-weight: bolder }
BLOCKQUOTE      { margin-left: 40px; margin-right: 40px }
I, CITE, EM,
VAR, ADDRESS    { font-style: italic }
PRE, TT, CODE,
KBD, SAMP       { font-family: monospace }
PRE             { white-space: pre }
BIG             { font-size: 1.17em }
SMALL, SUB, SUP { font-size: .83em }
SUB             { vertical-align: sub }
SUP             { vertical-align: super }
S, STRIKE, DEL  { text-decoration: line-through }
HR              { border: 1px inset }
OL, UL, DIR,
MENU, DD        { margin-left: 40px }
OL              { list-style-type: decimal }
OL UL, UL OL,
UL UL, OL OL    { margin-top: 0; margin-bottom: 0 }
U, INS          { text-decoration: underline }
CENTER          { text-align: center }
BR:before       { content: "\A" }

/* Пример стиля для элементов HTML 4.0 ABBR/ACRONYM */

ABBR, ACRONYM   { font-variant: small-caps; letter-spacing: 0.1em }
A[href]         { text-decoration: underline }
:focus          { outline: thin dotted invert }


/* Начало установок двунаправленности (не изменять) */
BDO[DIR="ltr"]  { direction: ltr; unicode-bidi: bidi-override }
BDO[DIR="rtl"]  { direction: rtl; unicode-bidi: bidi-override }

*[DIR="ltr"]    { direction: ltr; unicode-bidi: embed }
*[DIR="rtl"]    { direction: rtl; unicode-bidi: embed }

/* Элементы уровня блока в HTML4 */
ADDRESS, BLOCKQUOTE, BODY, DD, DIV, DL, DT, FIELDSET, 
FORM, FRAME, FRAMESET, H1, H2, H3, H4, H5, H6, IFRAME,
NOSCRIPT, NOFRAMES, OBJECT, OL, P, UL, APPLET, CENTER, 
DIR, HR, MENU, PRE, LI, TABLE, TR, THEAD, TBODY, TFOOT, 
COL, COLGROUP, TD, TH, CAPTION 
                { unicode-bidi: embed }
/* Конец установок bidi */


@media print {
  @page         { margin: 10% }
  H1, H2, H3,
  H4, H5, H6    { page-break-after: avoid; page-break-inside: avoid }
  BLOCKQUOTE, 
  PRE           { page-break-inside: avoid }
  UL, OL, DL    { page-break-before: avoid }
}

@media speech {
  H1, H2, H3, 
  H4, H5, H6    { voice-family: paul, male; stress: 20; richness: 90 }
  H1            { pitch: x-low; pitch-range: 90 }
  H2            { pitch: x-low; pitch-range: 80 }
  H3            { pitch: low; pitch-range: 70 }
  H4            { pitch: medium; pitch-range: 60 }
  H5            { pitch: medium; pitch-range: 50 }
  H6            { pitch: medium; pitch-range: 40 }
  LI, DT, DD    { pitch: medium; richness: 60 }
  DT            { stress: 80 }
  PRE, CODE, TT { pitch: medium; pitch-range: 0; stress: 0; richness: 80 }
  EM            { pitch: medium; pitch-range: 60; stress: 60; richness: 50 }
  STRONG        { pitch: medium; pitch-range: 60; stress: 90; richness: 90 }
  DFN           { pitch: high; pitch-range: 60; stress: 60 }
  S, STRIKE     { richness: 0 }
  I             { pitch: medium; pitch-range: 60; stress: 60; richness: 50 }
  B             { pitch: medium; pitch-range: 60; stress: 90; richness: 90 }
  U             { richness: 0 }
  A:link        { voice-family: harry, male }
  A:visited     { voice-family: betty, female }
  A:active      { voice-family: betty, female; pitch-range: 80; pitch: x-high }
}


Дополнение. Приложение B. Изменения по сравнению с CSS1

Это приложение является информативным, но не нормативным.

CSS2 построен на основе CSS1, и все действительные таблицы стилей CSS1 являются действительными таблицами стилей CSS2. Изменения между спецификацией CSS1 (см. [CSS1] ) и данной спецификацией делятся на три группы: новая функциональность, обновлённые описания функциональности CSS1 и изменения по сравнению с CSS1.

В дополнение к функциональности CSS1, CSS2 поддерживает:

[x]. Понятие типов носителя.

[x]. Значение 'inherit' для всех свойств.

[x]. Страничные носители

[x]. Звуковые таблицы стилей

[x]. Несколько опций интернационализации, включая стили нумерации списков, поддержку двунаправленного текста и чувствительных к языку знаков кавычек.

[x]. Расширенный механизм выбора шрифта, включая смысловой подбор, синтез и загружаемые шрифты. Введены также понятие системных шрифтов и новое свойство 'font-size-adjust'.

[x]. Таблицы, включая новые значения 'display' и 'vertical-align'.

[x]. Относительное и абсолютное позиционирование, включая фиксированное позиционирование.

[x]. Новые типы боксов (наряду с блок- и инлайн-): compact и run-in.

[x]. Возможность контролировать переполнение, сжатие и видимость содержимого в модели визуального форматирования.

[x]. Возможность специфицировать максимальные и минимальные ширину и высоту в модели визуального форматирования.

[x]. Расширенный механизм селекторов, включая дочерние селекторы, смежные селекторы и селекторы атрибутов.

[x]. Генерируемое содержимое, счётчики и автоматическую нумерацию и маркёры.

[x]. Оттенение текста с помощью нового свойства 'text-shadow'.

[x]. Различные новые псевдоклассы, :first-child, :hover, :focus, :lang.

[x]. Системные цвета и шрифты.

[x]. Курсоры.

[x]. Динамические схемы.

Спецификация CSS1 была короче и компактнее. Данная спецификация намного объёмнее и более читабельна. Большая часть нового материала описывает новую функциональность, но описания из CSS1 также расширены. За исключением немногих случаев, описанных ниже, обновлённые описания не изменили ни синтаксис, ни семантику.

Хотя все действительные таблицы стилей CSS1 являются таковыми и в CSS2, есть несколько случаев, когда таблицы стилей CSS1 будут иметь другие значения при интерпретации в качестве таблиц CSS2. Большинство изменений обусловлено опытом разработки, но есть также и корректировка некоторых ошибок.

[x]. Значение "!important" изменено. В CSS1 "!important" в таблице стилей автора имел преимущество перед "!important" таблицы стилей пользователя. В CSS2 сделано наоборот.

[x]. В CSS2 значения цвета ужаты в соответствии с гаммой устройства, а не с гаммой sRGB, как в CSS1.

[x]. В CSS1 просто указано, что 'margin-right' игнорировалось, если 'margin-left' и 'width' были установлены. В CSS2 выбор между смягчением 'margin-right' или 'margin-left' зависит от направления письма.

[x]. В CSS1 некоторые свойства (например, 'padding') имели значения, ссылающиеся на ширину родительского элемента. Это было ошибкой; значение всегда должно ссылаться на ширину элемента уровня блока, и данная спецификация отражает это путём ввода термина "containing block/содержащий блок".

[x]. Начальное значение 'display' - 'inline' в CSS2, а не 'block', как в CSS1.

[x]. В CSS1 свойство 'clear' применялось ко всем элементам. Это было ошибкой, и в CSS2 свойства применяются только к элементам уровня блока.

[x]. В CSS1 ':link', ':visited' и ':active' были взаимоисключающими; в CSS2 ':active' может появляться вместе с ':link' или ':visited'.

[x]. Предлагаемый фактор масштаба между смежными индексами 'font-size' в таблице размеров шрифтов уменьшен с 1.5 до 1.2.

[x]. Теперь наследуется вычисленное, а не текущее, значение 'font-size'.

[x]. CSS1-описание 'inside' (для 'list-style-position'), допускало воздействие на левое поле текста, а не на позицию маркёра. В CSS2 такая интерпретация правила устранена.

[x]. См. также нормативный раздел Различия между символизаторами CSS1 и CSS2.

Дополнение. Приложение C. Замечания по реализации и выполнению для шрифтов

Это приложение является информативным, но не нормативным.

DocLockTM

Bitstream-технология DocLockTM гарантирует, что TrueDoc PFRs могут использоваться только на том сайте, где они опубликованы. TrueDoc PFR, перемещённый на другой сайт или имеющий на себя ссылку с другого сайта, работать не будет.

Digital Signature/Цифровая подпись

Часть технологии доверительного управления, используемая для предоставления подтверждения о ресурсе.

Font Caching/Кэширование шрифта

Кэширование шрифта позволяет временно копировать шрифты на клиентской системе. Шрифты часто хранятся на диске с другими кэшированными объектами, такими как графика, специфичными для пользовательского агента (ПА).

Font Face

"Разновидность", относится к определённой разновидности шрифта, за исключением его размера.

Font Matching/Совпадение шрифтов

Совпадение шрифтов - это процесс выбора похожего шрифта на базе одного или нескольких атрибутов основного шрифта. Обычные атрибуты: serif/с засечками, sans-serif/без засечек, вес, высота заглавных, x-высота, spacing/плотность, язык и posture/позиция. Совпадение шрифтов зависит от алгоритма и разнообразия шрифтов-кандидатов.

Glyph Representation Sub-setting/Подразделение Представления Глифов

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

Intellifont

Intellifont-технология была разработана фирмой Agfa и является первичным форматом для Hewlett-Packard и других принтеров, использующих язык PCL5. Это также первичный формат шрифтов компьютеров Amiga.

Infinifont

Техника синтезирования шрифтов, которая, задавая число Panose-1 (и, по выбору, дополнительные данные описания шрифта), может генерировать красивый шрифт без экстраполирования из одного мастер-контура или интерполяции между двумя или более контурами (см. [INFINIFONT]).

Italic

Класс форм букв латиницы, которые более курсивны, чем буквы roman-форм, но менее курсивны, чем формы ручного письма. Часто пары шрифтов разрабатываются и используются совместно; один - roman с засечками, а другой - italic. Другие термины для описания этого класса форм букв: cursive и, для кириллицы, kursiv. Для разновидностей sans-serif дополнительная разновидность - это часто наклонный вариант, а не другой класс форм букв.

[D]

Kerning/Кернинг

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

[D]

Multiple Master Font/Множественный мастер-ширфт

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

Open Type

Open Type это расширение шрифтового формата TrueType, которое содержит дополнительную информацию, расширяющую возможности шрифта в поддержке высококачественной международной печати. Open Type может ассоциировать один символ с несколькими глифами представления и комбинации символов - с одним глифом (словообразующая лигатура). Open Type содержит двухмерную информацию для поддержки свойств комплексного позиционирования и присоединения глифов. TrueType Open и OpenType содержат конкретную информацию о письме и языке, так что текстовые процессоры могут уточнять своё поведение соответственно (см. [OPENTYPE]).

Server Font/Серверный шрифт

Server Font это ресурс шрифта, размещённый на сервере и вызываемый определением WebFont. ПА может использовать этот ресурс для отображения страницы.

Speedo

Speedo -технология шрифтов была разработана Bitstream и является первичным форматом шрифта на компьютерах Atari ST и Falcon. Используется также в компьютерах с запущенной системой X window.

TrueDoc

TrueDoc -технология была разработана Bitstream для создания, переноса и прорисовки платформонезависимых масштабируемых объектов шрифта в web. Создание объектов шрифта выполняется в character shape recorder (CSR) TrueDoc, а вывод объектов шрифта - в character shape player (CSP) TrueDoc. Технология предназначена для просмотра и печати в web.

TrueDoc Portable Font Resource/Переносимые Ресурсы Шрифта

TrueDoc Portable font resource (или PFR) это платформонезависимый масштабируемый объект шрифта, вырабатываемый CSP. Ввод может быть TrueType или Type 1 любого ответвления Windows, Mac или Unix. TrueDoc Portable Font Resources предоставляют хорошие пропорции компрессии, платформонезависимы и, поскольку они не в первичном формате шрифта (TrueType или Type 1), не могут легко инсталироваться.

TrueType

TrueType это формат, разработанный Apple и лицензированный Microsoft. TrueType это первичный формат шрифта операционной системы для Windows и Macintosh. TrueType содержит иерархический набор таблиц и глифов-изображений. Символы могут выводиться на посимвольном базисе или на базе размера в пунктах, давая превосходное качество для данных разрешений экрана. Шрифты TrueType для Windows и Mac мало отличаются, хотя и могут быть достаточно различными для предотвращения межплатформенного использования.

TrueType Collection/Коллекция TrueType

TrueType Collection (или TTC) это расширение формата TrueType, включающее таблицы, позволяющие содержать много шрифтов TrueType в одном файле шрифта TrueType. Файлы TrueType collection встречаются теперь относительно редко.

TrueType GX Fonts/TrueType Шрифты GX

TrueType GX Fonts содержат расширения стандартного формата TrueType, допускающие изменяющиеся шрифты, подобные шрифтам Multiple Master. Может быть несколько мутаций параметров (осей), таких как вес, высота и наклон. Ось может определяться, что позволяет получить практически любой эффект. TrueType GX может поддерживать также альтернативные замещения представлений глифов для лигатур, контекстуальных форм, дробей и т.д. Для вычислений TrueType GX доступны только на Mac (см. [TRUETYPEGX]).

Type 1 font/Шрифты Type 1

Шрифты Type 1, разработанные Adobe Systems, были одним из первых доступных масштабируемых форматов. Шрифты Type 1 обычно содержат 228 символов с глифами-изображениями, описанных с использованием кривых третьей степени bezier. Mac, Windows и X имеют схожие, но отдельные форматы; Adobe предоставляет Adobe Type Manager для всех трёх платформ. Type1c это более ранняя форма с компрессией без потерь для глифов-изображений Type 1.

URI Binding/Связывание с URI

Процесс подключения определённого ресурса шрифта к данному Web-сайту путём внедрения кодированного URI или цифрового подтверждения использования в ресурс шрифта.

Имеется множество различных форматов шрифта для использования на разных платформах. Чтобы выбрать предпочтительный формат шрифта, используется свободная дискуссия (см. [NEGOT]). Всегда можно определить, когда ссылка на шрифт отсутствует, поскольку URI находится внутри описания шрифта. Данная конкретная реализация будет знать, какие форматы загружаемых шрифтов она поддерживает и может, соответственно, использовать подсказки формата для исключения загрузки шрифтов неподдерживаемых форматов.

[D]

Числа Family, Serif Style и Proportion используются Windows95 для выбора и совпадений шрифтов.

Значения десяти чисел и допустимые значения (в скобках) даны ниже для самого общего случая, когда цифра "family" - 2, Text and Display. (Если первая цифра имеет другие значения, то остальные девять цифр имеют другой смысл (значение)). Детальную информацию о Panose-1 см. в [PANOSE].

Family

[x]. Any (0)

[x]. No Fit (1)

[x]. [PANOSE] Latin Text and Display (2)

[x]. [PANOSE] Latin Script (3)

[x]. [PANOSE] Latin Decorative (4)

[x]. [PANOSE] Latin Pictorial (5)

Serif Style

[x]. Any (0)

[x]. No Fit (1)

[x]. Cove (2)

[x]. Obtuse Cove (3)

[x]. Square Cove (4)

[x]. Obtuse Square Cove (5)

[x]. Square (6)

[x]. Thin (7)

[x]. Bone (8)

[x]. Exaggerated (9)

[x]. Triangle (10)

[x]. Normal Sans (11)

[x]. Obtuse Sans (12)

[x]. Perp Sans (13)

[x]. Flared (14)

[x]. Rounded (15)

Weight

[x]. Any (0)

[x]. No Fit (1)

[x]. Very Light (2)[100]

[x]. Light (3) [200]

[x]. Thin (4) [300]

[x]. Book (5) [400] то же, что CSS1 'normal'

[x]. Medium (6) [500]

[x]. Demi (7) [600]

[x]. Bold (8) [700] то же, что CSS1 'bold'

[x]. Heavy (9) [800]

[x]. Black (10) [900]

[x]. Extra Black / Nord (11) [900] форсирует отображение в масштаб 100-900 CSS1

Proportion

[x]. Any (0)

[x]. No Fit (1)

[x]. Old Style (2)

[x]. Modern (3)

[x]. Even Width (4)

[x]. Expanded (5)

[x]. Condensed (6)

[x]. Very Expanded (7)

[x]. Very Condensed (8)

[x]. Monospaced (9)

Contrast

[x]. Any (0)

[x]. No Fit (1)

[x]. None (2)

[x]. Very Low (3)

[x]. Low (4)

[x]. Medium Low (5)

[x]. Medium (6)

[x]. Medium High (7)

[x]. High (8)

[x]. Very High (9)

Stroke Variation

[x]. Any (0)

[x]. No Fit (1)

[x]. No Variation (2)

[x]. Gradual/Diagonal (3)

[x]. Gradual/Transitional (4)

[x]. Gradual/Vertical (5)

[x]. Gradual/Horizontal (6)

[x]. Rapid/Vertical (7)

[x]. Rapid/Horizontal (8)

[x]. Instant/Horizontal (9)

[x]. Instant/Vertical (10)

Arm Style

[x]. Any (0)

[x]. No Fit (1)

[x]. Straight Arms/Horizontal (2)

[x]. Straight Arms/Wedge (3)

[x]. Straight Arms/Vertical (4)

[x]. Straight Arms/Single Serif (5)

[x]. Straight Arms/Double Serif (6)

[x]. Non-Straight Arms/Horizontal (7)

[x]. Non-Straight Arms/Wedge (8)

[x]. Non-Straight Arms/Vertical 90)

[x]. Non-Straight Arms/Single Serif (10)

[x]. Non-Straight Arms/Double Serif (11)

Letterform

[x]. Any (0)

[x]. No Fit (1)

[x]. Normal/Contact (2)

[x]. Normal/Weighted (3)

[x]. Normal/Boxed (4)

[x]. Normal/Flattened (5)

[x]. Normal/Rounded (6)

[x]. Normal/Off Center (7)

[x]. Normal/Square (8)

[x]. Oblique/Contact (9)

[x]. Oblique/Weighted (10)

[x]. Oblique/Boxed (11)

[x]. Oblique/Flattened (12)

[x]. Oblique/Rounded (13)

[x]. Oblique/Off Center (14)

[x]. Oblique/Square (15)

Midline

[x]. Any (0)

[x]. No Fit (1)

[x]. Standard/Trimmed (2)

[x]. Standard/Pointed (3)

[x]. Standard/Serifed (4)

[x]. High/Trimmed (5)

[x]. High/Pointed (6)

[x]. High/Serifed (7)

[x]. Constant/Trimmed (8)

[x]. Constant/Pointed (9)

[x]. Constant/Serifed (10)

[x]. Low/Trimmed (11)

[x]. Low/Pointed (12)

[x]. Low/Serifed (13)

XHeight

[x]. Any (0)

[x]. No Fit (1)

[x]. Constant/Small (2)

[x]. Constant/Standard (3)

[x]. Constant/Large (4)

[x]. Ducking/Small (5)

[x]. Ducking/Standard (6)

[x]. Ducking/Large (7)

Panose-2 (см. [PANOSE2]) это спецификация более исчерпывающей классификации шрифтов и технология совпадений, не ограниченные латиницей. Например, характеристики засечек латиницы могут сравниваться с окончаниями линий разновидности Kanji.

Значение Panose-2 не хранится в каком-либо известном формате шрифта, но может быть измерено.

Эта информация доступна в шрифте при просмотре битов 'ulUnicodeRange' в таблице 'OS/2' (если она ('OS/2') её имеет), которая (таблица) содержит битовые поля представления набора. Эта таблица определена в ревизии 1.66 спецификации TrueType от Microsoft. Можно рассматривать эту информацию как набор, где каждый элемент соответствует блоку символов Unicode 1.1, и присутствие этого элемента в наборе означает, что шрифт имеет один или более глифов-изображений для представления по меньшей мере одного символа этого блока. Набор содержит 128 элементов, как описано ниже. Порядок обычно следует порядку стандарта Unicode 1.1. Эта таблица может использоваться для конвертации информации в шрифте TrueType в дескриптор 'unicode-range' CSS.

БлокAdd/ПрибавитьИмя блокаДиапазон Unicode
01Basic LatinU+0-7F
12Latin-1 SupplementU+80-FF
24Latin-1 Extended-AU+100-17F
38Latin Extended-BU+180-24F
41IPA ExtensionsU+250-2AF
52Spacing Modifier LettersU+2B0-2FF
64Combining Diacritical MarksU+300-36F
78GreekU+370-3CF
81Greek Symbols and CopticU+3D0-3EF
92CyrillicU+400-4FF
104ArmenianU+530-58F
118HebrewU+590-5FF
121Hebrew Extended-A Hebrew Extended-B?? какие диапазоны ??
132ArabicU+600-69F
144Arabic ExtendedU+670-6FF
158DevanagariU+900-97F
161BengaliU+980-9FF
172GurmukhiU+A00-A7F
184GujaratiU+A80-AFF
198OriyaU+B00-B7F
201TamilU+B80-BFF
212TeluguU+C00-C7F
224KannadaU+C80-CFF
238MalayalamU+D00-D7F
241ThaiU+E00-E7F
252LaoU+E80-EFF
264GeorgianU+10A0-10EF
278Georgian ExtendedU+10F0-10FF ??
281Hangul JamoU+1100-11FF
292Latin Extended Additional-
304Greek ExtendedU+1F00-1FFF
318General PunctuationU+2000-206F
321Superscripts and Subscripts-
332Currency SymbolsU+20A0-20CF
344Combining Marks for SymbolsU+20D0-20FF
358Letterlike SymbolsU+2100-214F
361Number FormsU+2150-218F
372ArrowsU+2190-21FF
384Mathematical OperatorsU+2200-22FF
398Miscellaneous TechnicalU+2300-23FF
401Control PicturesU+2400-243F
412Optical Character RecognitionU+2440-245F
424Enclosed AlphanumericsU+2460-24FF
438Box DrawingU+2500-257F
441Block ElementsU+2580-259F
452Geometric ShapesU+25A0-25FF
464Miscellaneous SymbolsU+2600-26FF
478DingbatsU+2700-27BF
481CJK Symbols and PunctuationU+3000-303F
492HiraganaU+3040-309F
504KatakanaU+30A0-30FF
518BopomofoU+3100-312F
521Hangul Compatibility JamoU+3130-318F
532CJK Miscellaneous??
544Enclosed CJK Letters and MonthsU+3200-32FF
558CJK compatibilityU+3300-33FF
561HangulU+AC00-D7FF
598CJK Unified IdeographsU+4E00-9FFF
601Private Use AreaU+E000-F8FF
612CJK Compatibility IdeographsU+F900-FAFF
624Alphabetic Presentation FormsU+FB00-FB4F
638Arabic Presentation Forms-AU+FB50-FDFF
641Combining Half MarksU+FE20-FE2F
652CJK compatibility FormsU+FE30-FE4F
664Small Form VariantsU+FE50-FE6F
678Arabic Presentation Forms-BU+FE70-FEFF
681Halfwidth and Fullwidth FormsU+FF00-FFEF
692SpecialsU+FFF0-FFFD

В системе битовых полей TrueType есть проблема, заключающаяся в том, что эта система присоединена к Unicode 1.1 и не справляется с расширением Unicode - например, невозможно представить Tibetan или другие виды письма, введённые в Unicode 2.0 или более поздних ревизиях.

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

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

Дескриптор 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". (Некоторые ПА принимали первый пример, но не принимали второй.)

[x]. В CSS1 имя класса могло начинаться цифрой (".55ft"), если только оно не было размером (".55in"). В CSS2 такие классы разбираются как неизвестные размеры (чтобы позволить в будущем дополнение новых модулей). Чтобы сделать ".55ft" действующим классом, CSS2 требует, чтобы первая цифра была escape (".\55ft")

Дополнение. Приложение F. Индекс свойств

НазваниеЗначенияНачальное значениеПрименяется: (По умолчанию: ко всем)НаследуетсяПроцентное (По умолчанию: N/A)Группа носителей
'azimuth' | [[ left-side | far-left | left | center-left | center | center-right | right | far-right | right-side ] || behind ] | leftwards | rightwards | inherit centerдазвуковой
'background'[ 'background-color' || 'background-image' || 'background-repeat' || 'background-attachment' || 'background-position'] | inherit XX визуальный нет допускается в 'background-position' визуальный
'background-attachment' scroll | fixed | inherit scroll нет визуальный
'background-image' | none | inherit noneнетвизуальный
'background-position' [ [ | ]{1,2} | [ [top | center | bottom] || [left | center | right] ] ] | inherit0% 0%к элементам уровня блока и к замещаемым элементамнет относительно размеров самого боксавизуальный
'background-repeat' repeat | repeat-x | repeat-y | no-repeat | inherit repeatнетвизуальный
'border'[ 'border-width' || 'border-style' || ] | inheritсм. индивидуальные свойстванетвизуальный
'border-collapse'collapse | separate | inheritcollapseк элементам 'table' и 'inline-table'давизуальный
'border-color'{1,4} | transparent | inheritсм. индивидуальные свойства нет визуальный
'border-spacing' ? | inherit 0 к элементам 'table' и 'inline-table' да визуальный
'border-style' {1,4} | inherit см. индивидуальные свойства нет визуальный
'border-top' 'border-right' 'border-bottom' 'border-left' [ 'border-top-width' || 'border-style' || ] | inherit см. индивидуальные свойства нет визуальный
'border-top-color' 'border-right-color' 'border-bottom-color' 'border-left-color' | inherit значение свойства 'color' нет визуальный
'border-top-style' 'border-right-style' 'border-bottom-style' 'border-left-style' | inherit none нет визуальный
'border-top-width' 'border-right-width' 'border-bottom-width' 'border-left-width' | inherit medium нет визуальный
'border-width' {1,4} | inherit см. индивидуальные свойства нет визуальный
'bottom' | | auto | inherit auto к позиционированным элементам нет относительно высоты содержащего блока визуальный
'caption-side' top | bottom | left | right | inherit top к элементам 'table-caption' да визуальный
'clear' none | left | right | both | inherit none к элементам уровня блока нет визуальный
'clip' | auto | inherit auto к элементам уровня блока и к замещаемым элементам нет визуальный
'color' | inherit зависит от ПА да визуальный
'content' [ | | | attr(X) | open-quote | close-quote | no-open-quote | no-close-quote ]+ | inherit пустая строка к псевдоэлементам :before и :after нет визуальный
'counter-increment' [ ? ]+ | none | inherit none нет визуальный
'counter-reset' [ ? ]+ | none | inherit none нет визуальный
'cue' [ 'cue-before' || 'cue-after' ] | inherit XX нет звуковой
'cue-after' | none | inherit none нет звуковой
'cue-before' | none | inherit none нет звуковой
'cursor' [ [ ,]* [ auto | crosshair | default | pointer | move | e-resize | ne-resize | nw-resize | n-resize | se-resize | sw-resize | s-resize | w-resize| text | wait | help ] ] | inherit auto да визуальный, интерактивный
'direction' ltr | rtl | inherit ltr ко всем элементам, но см. др. информацию да визуальный
'display' inline | block | list-item | run-in | compact | marker | table | inline-table | table-row-group | table-header-group | table-footer-group | table-row | table-column-group | table-column | table-cell | table-caption | none | inherit inline нет все
'elevation' | below | level | above | higher | lower | inherit level да звуковой
'empty-cells' show | hide | inherit show к элементам 'table-cell' да визуальный
'float' left | right | none | inherit none ко всем непозиционированным элементам и генерируемому содержимому нет визуальный
'font' [ [ 'font-style' || 'font-variant' || 'font-weight' ]? 'font-size' [ / 'line-height' ]? 'font-family' ] | caption | icon | menu | message-box | small-caption | status-bar | inherit см. индивидуальные свойства да допускается в 'font-size' и 'line-height' визуальный
'font-family' [[ | ],]* [ | ] | inherit зависит от ПА (пользовательского агента) да визуальный
'font-size' | | | | inherit medium да, вычисляемое значение наследуется относительно размера шрифта родительского элемента визуальный
'font-size-adjust' | none | inherit none да визуальный
'font-stretch' normal | wider | narrower | ultra-condensed | extra-condensed | condensed | semi-condensed | semi-expanded | expanded | extra-expanded | ultra-expanded | inherit normal да визуальный
'font-style' normal | italic | oblique | inherit normal да визуальный
'font-variant' normal | small-caps | inherit normal да визуальный
'font-weight' normal | bold | bolder | lighter | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900 | inherit normal да визуальный
'height' | | auto | inherit auto ко всем элементам, кроме незамещаемых инлайн-элементов, столбцов таблиц и групп столбцов нет см. дополнительную информацию визуальный
'left' | | auto | inherit auto к позиционированным элементам нет относительно ширины содержащего блока визуальный
'letter-spacing' normal | | inherit normal да визуальный
'line-height' normal | | | | inherit normal да относительно размера шрифта этого элемента визуальный
'list-style' [ 'list-style-type' || 'list-style-position' || 'list-style-image' ] | inherit XX к элементам с 'display: list-item' да визуальный
'list-style' | none | inherit none к элементам с 'display: list-item' да визуальный
'list-style-position' inside | outside | inherit outside к элементам с 'display: list-item' да визуальный
'list-style-type' disc | circle | square | decimal | decimal-leading-zero | lower-roman | upper-roman | lower-greek | lower-alpha | lower-latin | upper-alpha | upper-latin | hebrew | armenian | georgian | cjk-ideographic | hiragana | katakana | hiragana-iroha | katakana-iroha | none | inherit disc к элементам с 'display: list-item' да визуальный
'margin' {1,4} | inherit XX нет относительно ширины содержащего блока визуальный
'margin-top' 'margin-right' 'margin-bottom' 'margin-left' | inherit 0 нет относительно ширины содержащего блока визуальный
'marker-offset' | auto | inherit auto к элементам с 'display: marker' нетвизуальный
'marks' [ crop || cross ] | none | inherit none к контексту страницы N/A визуальный, страничный
'max-height' | | none | inherit none ко всем элементам, кроме незамещаемых инлайн-элементов и элементов таблицы нет относительно высоты содержащего блокавизуальный
'max-width' | | none | inherit none ко всем элементам, кроме незамещаемых инлайн-элементов и элементов таблицынетотносительно ширины содержащего блокавизуальный
'min-height' | | inherit 0 ко всем элементам, кроме незамещаемых инлайн-элементов и элементов таблицы нетотносительно высоты содержащего блокавизуальный
'min-width' | | inherit зависит от ПАко всем элементам, кроме незамещаемых инлайн-элементов и элементов таблицынетотносительно ширины содержащего блокавизуальный
'orphans' | inherit 2 к элементам уровня блокадавизуальный, страничный
'outline' [ 'outline-color' || 'outline-style' || 'outline-width' ] | inheritсм. индивидуальные свойстванет визуальный, интерактивный
'outline-color' | invert | inherit invert нетвизуальный, интерактивный
'outline-style' | inherit none нет визуальный, интерактивный
'outline-width' | inherit mediumнет визуальный, интерактивный
'overflow' visible | hidden | scroll | auto | inherit visibleк элементам уровня блока и к замещаемымнетвизуальный
'padding' {1,4} | inherit XXнетотносительно ширины содержащего блокавизуальный
'padding-top' 'padding-right' 'padding-bottom' 'padding-left' | inherit 0нетотносительно ширины содержащего блокавизуальный
'page' | auto autoк элементам уровня блокадавизуальный, страничный
'page-break-after' auto | always | avoid | left | right | inherit autoк элементам уровня блоканетвизуальный, страничный
'page-break-before' auto | always | avoid | left | right | inherit autoк элементам уровня блоканетвизуальный, страничный
'page-break-inside' avoid | auto | inherit autoк элементам уровня блокадавизуальный, страничный
'pause' [ [зависит от ПАнетсм. описание 'pause-before' и 'pause-after' звуковой
'pause-after' зависит от ПАнетсм. дополнительную информациюзвуковой
'pause-before' зависит от ПАнетсм. дополнительную информацию звуковой
'pitch' | x-low | low | medium | high | x-high | inherit mediumдазвуковой
'pitch-range' | inherit 50дазвуковой
'play-during' mix? repeat? | auto | none | inherit auto нетзвуковой
'position' static | relative | absolute | fixed | inherit staticко всем элементам, кроме тех, которые генерируют содержимоенетвизуальный
'quotes' [ ]+ | none | inheritзависит от ПАдавизуальный
'richness' | inherit 50да звуковой
'right' | | auto | inherit autoк позиционированным элементам нетотносительно ширины содержащего блокавизуальный
'size' {1,2} | auto | portrait | landscape | inherit autoк контексту страницыN/Aвизуальный, страничный
'speak' normal | none | spell-out | inherit normalдазвуковой
'speak-header' once | always | inherit onceк элементам, имеющим информацию "шапки"дазвуковой
'speak-numeral' digits | continuous | inherit continuousдазвуковой
'speak-punctuation'code | none | inherit noneдазвуковой
'speech-rate' | x-slow | slow | medium | fast | x-fast | faster | slower | inherit mediumдазвуковой
'stress' | inherit 50 дазвуковой
'table-layout' auto | fixed | inherit autoк 'table' и 'inline-table'нетзвуковой
'text-align' left | right | center | justify | | inherit зависит от ПА и направления письма к элементам уровня блокадавизуальный
'text-decoration'none | [ underline || overline || line-through || blink ] | inherit noneнет (см. дополнительную информацию)визуальный
'text-indent' | | inherit 0к элементам уровня блокадаотносительно ширины содержащего блока визуальный
'text-shadow' none | [ || ? ,]* [ || ?] | inherit noneнет (см. дополнительную информацию) визуальный
'text-transform'capitalize | uppercase | lowercase | none | inherit noneдавизуальный
'top' | | auto | inherit autoк позиционированным элементамнетотносительно высоты содержащего блокавизуальный
'vertical-align'baseline | sub | super | top | text-top | middle | bottom | text-bottom | | | inherit baselineк элементам инлайн уровня и к 'table-cell' нетотносительно 'line-height' самого элементавизуальный
'visibility' visible | hidden | collapse | inherit inherit нетвизуальный
'voice-family' [[ | ],]* [ | ] | inherit зависит от ПАдазвуковой
'volume' | | silent | x-soft | soft | medium | loud | x-loud | inherit medium даотносительно унаследованного значения звуковой
'white-space' normal | pre | nowrap | inherit normal к элементам уровня блока давизуальный
'width' | | auto | inherit auto ко всем элементам, кроме незамещаемых инлайн-элементов, столбцов таблиц и групп столбцов нетотносительно ширины содержащего блокавизуальный
'word-spacing'normal | | inherit normal давизуальный
'z-index' auto | | inherit autoк позиционированным элементам нетвизуальный

Дополнение. Приложение G. Индекс дескрипторов

Название Значения Начальное значение
'ascent' не определено
'baseline' 0
'bbox', , , не определено
'cap-height' не определено
'centerline' не определено
'definition-src' не определено
'descent' не определено
'font-family' [ | ] [, [ | ]]* зависит от пользовательского агента
'font-size' all | [, ]* all
'font-stretch' all | [ normal | ultra-condensed | extra-condensed | condensed | semi-condensed | semi-expanded | expanded | extra-expanded | ultra-expanded ] [, [ normal | ultra-condensed | extra-condensed | condensed | semi-condensed | semi-expanded | expanded | extra-expanded | ultra-expanded] ]* normal
'font-style' all | [ normal | italic | oblique ] [, [normal | italic | oblique] ]* all
'font-variant' [normal | small-caps] [,[normal | small-caps]]* normal
'font-weight' all | [normal | bold | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900] [, [normal | bold | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900]]* all
'mathline' не определено
'panose-1' []{10} 0 0 0 0 0 0 0 0 0 0
'slope' 0
'src' [ [format( [, ]*)] | ] [, [format( [, ]*)] | ]* не определено
'stemh' не определено
'stemv' не определено
'topline' не определено
'unicode-range' [, ]* U+0-7FFFFFFF
'units-per-em' не определено
'widths' [ ]? [ ]+ [,[ ]? ]+] не определено
'x-height' не определено

Загрузка...