ArininAV

Глава 2.8. Шрифты

2.8.1. Введение

Уже в стандарте CSS1 была заложена возможность использования различных шрифтов для отображения текста документа. При этом предполагалось, что необходимые шрифты установлены на компьютере-клиенте; если же их нет, то вместо них обозреватель должен был использовать собственные шрифты, близкие по характеристикам к требующимся.

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

Ниже изложены все способы работы со шрифтами, предоставляемые CSS. При этом свойства, управляющие отображением шрифтов и унаследованные из CSS1, описаны в разделе 2.8.2, а новые методы доступа к загружаемым шрифтам, появившиеся в CSS2, описываются в разделе 2.8.3.

2.8.2. Задание свойств шрифтов

2.8.2.1. Семейство шрифтов: свойство font-family

Синтаксис:  font-family: [[<имя-семейства> | <родовое-имя>],]*
                         [<имя-семейства> | <родовое-имя>] | inherit
Начально:   зависит от обозревателя
Применимо:  ко всем элементам
Наследуемо: да
Проценты:   не используются
Устройства: визуальные
Поддержка:  Internet Explorer Соответствует стандарту (4.0+)
            Netscape Navigator Соответствует стандарту (4.0+)

Свойство font-family задает список имен семейств шрифтов для отображения содержимого элемента. Этот список состоит из имен семейств шрифтов, разделенных запятыми. Имена семейств располагаются в порядке предпочтения. Например, следующее свойство

font-family: Verdana, Arial, sans-serif;

следует понимать так: "использовать шрифт Verdana; если его нет, то использовать шрифт Arial; если его нет, то использовать родовой шрифт sans-serif". Такой список необходим, поскольку мы заранее не знаем, какие именно шрифты установлены на компьютерах наших пользователей.

Имя семейства шрифтов может быть задано двумя способами:

  <имя-семейства>
    Задает название семейства шрифтов. Если это название содержит пробелы, то оно
    должно быть заключено в кавычки или апострофы.
  <родовое-имя>
    Одно из следующих имен: serif, sans-serif, cursive, fantasy и monospace.
    См. раздел 2.8.2.2.

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

2.8.2.2. Родовые имена шрифтов

Родовые имена шрифтов были разработаны на тот наихудший случай, когда на компьютере-клиенте не установлен ни один из шрифтов, заданных автором. В этом случае обозреватель использует родовой шрифт, начертание которого напоминает авторский шрифт. Существует пять имен родовых шрифтов:

serif (шрифт с засечками)

Это пропорциональные шрифты с засечками на буквах. Типичные примеры: Times New Roman, Bodoni, Garamond.

sans-serif (шрифт без засечек)

Это пропорциональные шрифты без засечек на буквах. Типичные примеры: Arial, Verdana, Helvetica, Tahoma.

cursive (каллиграфический шрифт)

Это шрифты, стилизованные под рукописный текст, обычно с типичными для него соединениями между буквами. Типичный пример: Zapf-Chancery.

fantasy (декоративный шрифт)

Это шрифты декоративного характера. Типичный пример: Western.

monospace (телетайпный шрифт)

Это шрифты фиксированной ширины, напоминающие шрифт пишущей машинки. Типичные примеры: Courier New, Prestige, Everson Mono.

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

2.8.2.3. Стиль шрифта: свойство font-style

Синтаксис:  font-style: normal | italic | oblique | inherit
Начально:   normal
Применимо:  ко всем элементам
Наследуемо: да
Проценты:   не используются
Устройства: визуальные
Поддержка:  Internet Explorer Соответствует стандарту; oblique отображается как italic (4.0+)
            Netscape Navigator Соответствует стандарту; oblique не поддерживается (4.0+)

Свойство font-style задает стиль шрифта для отображения содержимого элемента. Оно может иметь следующие значения:

normal Обычный шрифт
italic Курсивный шрифт
oblique Наклонный шрифт

Например, следующий фрагмент

<P>
  <SPAN style="font-style: normal">Обычный шрифт. </SPAN>
  <SPAN style="font-style: italic">Курсивный шрифт. </SPAN>
  <SPAN style="font-style: oblique">Наклонный шрифт. </SPAN>
</P>

будет отображаться так:

Обычный шрифт. Курсивный шрифт. Наклонный шрифт.

2.8.2.4. Вариант шрифта: свойство font-variant

Синтаксис:  font-variant: normal | small-caps | inherit
Начально:   normal
Применимо:  ко всем элементам
Наследуемо: да
Проценты:   не используются
Устройства: визуальные
Поддержка:  Internet Explorer Соответствует стандарту (4.0+)
            Netscape Navigator Не поддерживается

Свойство font-variant задает вариант шрифта для отображения содержимого элемента. Оно может принимать следующие значения:

normal Обычные буквы
small-caps Малые прописные буквы

Например, следующий фрагмент

<P style="font-variant: small-caps">Малые прописные буквы.</P>

будет отображаться так:

Малые прописные буквы.

О преобразовании текста в прописные буквы см. также описание свойства text-transform.

2.8.2.5. Жирность шрифта: свойство font-weight

Синтаксис:  font-weight: normal | bold | bolder | lighter | 100 | 200 | 300 | 400 |
                         500 | 600 | 700 | 800 | 900 | inherit
Начально:   normal
Применимо:  ко всем элементам
Наследуемо: да, наследуется вычисленное значение
Проценты:   не используются
Устройства: визуальные
Поддержка:  Internet Explorer Соответствует стандарту (4.0+)
            Netscape Navigator Соответствует стандарту (4.0+)

Свойство font-weight задает жирность шрифта для отображения содержимого элемента. Оно может принимать следующие значения:

100 - 900 Задает жирность шрифта (чем больше значение, тем выше жирность шрифта).
normal То же, что 400.
bold То же, что 700.
bolder Указывает, что шрифт должен быть более жирным, чем родительский шрифт.
lighter Указывает, что шрифт должен быть менее жирным, чем родительский шрифт.

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

<P>
  <SPAN style="font-weight: 100">100 </SPAN>
  <SPAN style="font-weight: 200">200 </SPAN>
  <SPAN style="font-weight: 300">300 </SPAN>
  <SPAN style="font-weight: 400">400 </SPAN>
  <SPAN style="font-weight: 500">500 </SPAN>
  <SPAN style="font-weight: 600">600 </SPAN>
  <SPAN style="font-weight: 700">700 </SPAN>
  <SPAN style="font-weight: 800">800 </SPAN>
  <SPAN style="font-weight: 900">900 </SPAN>
</P>

может отображаться так:

100 200 300 400 500 600 700 800 900

2.8.2.6. Выключка шрифта: свойство font-stretch

Синтаксис:  font-stretch: normal | wider | narrower | ultra-condensed | extra-condensed |
                          condensed | semi-condensed | semi-expanded | expanded |
                          extra-expanded | ultra-expanded | inherit
Начально:   normal
Применимо:  ко всем элементам
Наследуемо: да
Проценты:   не используются
Устройства: визуальные
Поддержка:  Internet Explorer Не поддерживается
            Netscape Navigator Не поддерживается

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

ultra-condensed Сверхуплотненный шрифт
extra-condensed Сильно уплотненный шрифт
condensed Уплотненный шрифт
semi-condensed Полууплотненный шрифт
normal Обычный шрифт
semi-expanded Полуразреженный шрифт
expanded Разреженный шрифт
extra-expanded Сильно разреженный шрифт
ultra-expanded Сверхразреженный шрифт

Кроме того, имеется возможность задавать относительную разрядку шрифта:

wider Указывает, что шрифт должен быть более разреженным, чем родительский шрифт.
narrower Указывает, что шрифт должен быть более уплотненным, чем родительский шрифт.

То, как именно эти значения соответствуют реальной выключке шрифта, зависит от обозревателя. Пример:

<P><SPAN style="font-stretch: expanded">Разрядка моя </SPAN>(Л. И. Брежнев).</P>

2.8.2.7. Размер шрифта: свойство font-size

Синтаксис:  font-size: xx-small | x-small | small | medium | large | x-large |
                       xx-large | larger | smaller | <размер> | <процент> | inherit
Начально:   medium
Применимо:  ко всем элементам
Наследуемо: да, наследуется вычисленное значение
Проценты:   относительно размера отцовского шрифта
Устройства: визуальные
Поддержка:  Internet Explorer Соответствует стандарту (4.0+)
            Netscape Navigator Соответствует стандарту (4.0+)

Свойство font-size задает размер шрифта для отображения содержимого элемента. Оно может задаваться несколькими способами:

  xx-small | x-small | small | medium | large | x-large | xx-large
    Задает абсолютный размер шрифта (от наименьшего к наибольшему).
  smaller  | larger
    Задает размер шрифта относительно родительского шрифта (меньше или больше).
  <размер>
    Задает фиксированный размер. Отрицательные размеры недопустимы.
  <процент>
    Вычисляется относительно размера отцовского шрифта.

Фактическое значение этого свойства может отличаться от вычисленного по двум причинам: если шрифт не имеет заданного размера или под воздействием свойства font-size-adjust.

CSS2 рекомендует, чтобы последовательные значения абсолютных размеров шрифта отличались для экрана в 1.2 раза, однако это зависит от обозревателя. Пример отображения семи абсолютных размеров шрифтов:

xx-small
x-small
small
medium
large
x-large
xx-large

2.8.2.8. Аспект шрифта: свойство font-size-adjust

Синтаксис:  font-size-adjust: none | <число> | inherit
Начально:   none
Применимо:  ко всем элементам
Наследуемо: да
Проценты:   не используются
Устройства: визуальные
Поддержка:  Internet Explorer Не поддерживается
            Netscape Navigator Не поддерживается

Свойство font-size-adjust задает аспект шрифта. Поясним его назначение подробнее.

В шрифтах, содержащих и строчные, и прописные буквы, субъективный внешний вид символа (т. е. то, насколько он кажется искаженным человеческому глазу) зависит от соотношения значения свойства font-size и величины x-height; в действительности, определяющим является их отношение, которое называется аспектом шрифта (aspect value) и равно font-size / x-height. Чем меньше аспект шрифта, тем скорее шрифт становится искаженным при уменьшении его размеров. Поэтому простое задание размера шрифта может приводить к неприятному для глаза отображению его символов.

Допустим теперь, что свойство font-family содержит список из нескольких названий шрифтов. Ясно, что размеры шрифта для отображения данного элемента подбирались автором, исходя из того, что он будет отображаться первым шрифтом в списке. Если же этот шрифт отсутствует на компьютере-клиенте, то обозреватель использует второй шрифт из списка. Но аспект этого шрифта имеет иное значение, чем аспект первого и, в итоге, внешний вид отображаемого текста может быть искажен. Для того, чтобы уменьшить возможное искажение, необходимо пересчитать размер символов для второго шрифта с учетом изменения аспекта. Но для этого обозреватель должен знать аспект первого шрифта, который на его компьютере как раз и отсутствует! Именно для того, чтобы сообщить ему эту информацию, и было введено данное свойство, которое может иметь следующие значения:

  none
    Не корректировать размер шрифта.
  <число>
    Задает аспект шрифта, как описано выше.

Рассмотрим следующий пример:

P {font-family: Verdana, sans-serif; font-size: 14px; font-size-adjust: 0.58 }

Шрифт Verdana имеет аспект 0.58, что и указано в значении свойства font-size-adjust. Если этот шрифт недоступен, то обозреватель использует родовой шрифт sans-serif. Допустим, что аспект этого шрифта равен 0.46. Тогда обозреватель пересчитает размер шрифта sans-serif по формуле 14px * (0.58 / 0.46) = 17.65px и будет отображать абзацы шрифтом с размером 18px (с учетом округления).

2.8.2.9. Свойства шрифта: свойство font

Синтаксис:  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>
Устройства: визуальные
Поддержка:  Internet Explorer Соответствует стандарту (4.0+)
            Netscape Navigator Не поддерживается

Свойство font является сокращением для свойств font-style, font-variant, font-weight, font-size, font-family и line-height. Оно позволяет задать все свойства шрифта одновременно. При этом сначала всем свойствам шрифта (включая font-stretch и font-size-adjust, хотя значения этих свойств данным свойством заданы быть не могут) присваиваются их начальные значения, а затем изменяются значения тех свойств, которые явно заданы в данном свойстве. Приведем несколько примеров:

P { font: 12pt/14pt sans-serif }
P { font: 80% sans-serif }
P { font: x-large/110% "new century schoolbook", serif }
P { font: bold italic large Georgia, serif; font-size-adjust: 1.16 }
P { font: normal small-caps 120%/120% fantasy }
P { font: oblique 12pt Helvetica, serif; font-stretch: condensed }

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

caption Шрифт текста управляющих элементов (кнопок, меток и т. д.)
icon Шрифт меток иконок
menu Шрифт пунктов меню
message-box Шрифт диалоговых окон
small-caption Шрифт текста малых управляющих элементов
status-bar Шрифт статусной строки

Пример отображения системных шрифтов:

caption
icon
menu
message-box
small-caption
status-bar

2.8.3. Подбор и загрузка шрифтов

2.8.3.1. Подбор шрифта

В этом разделе полностью описан механизм CSS по работе со шрифтами, основанный на их подборе, синтезе на основе базы данных или загрузке из Веб-узлов. Существуют четыре разновидности реализации этого механизма:

Подбор шрифта по его имени
В этом случае обозреватель использует шрифт, установленный на компьютере-клиенте и имеющий то же имя, что и запрошенный шрифт (при этом и гарнитура, и метрические характеристики шрифта могут оказаться отличными от авторских, если автор и пользователь загружали шрифты из разных источников).Таким образом, единственной основой для подбора шрифта является его имя. Это единственный метод, который использовался в CSS1 и который описан в предыдущем разделе.
Подбор шрифта по его характеристикам
В этом случае обозреватель использует шрифт, установленный на компьютере-клиенте и имеющий тот же внешний вид, что и запрошенный шрифт (при этом метрические характеристики шрифта могут оказаться отличными от авторских). Основой для подбора шрифта в данном случае служат такие его характеристики, как тип шрифта (текстовый или символьный), наличие или отсутствие засечек, жирность, высота строчных и прописных букв, наклон символов и т. п.
Синтез шрифта
В этом случае обозреватель создает шрифт, не только имеющий тот же внешний вид, что и запрошенный шрифт, но и соответствующий ему по метрическим характеристикам. Для такого синтеза шрифта необходима более точная информация, чем в схемам подбора шрифта. В частности, обозревателю необходимо знать точные ширины всех символов и правила отображения кодов Unicode в соответствующие изображения.
Загрузка шрифта
Обозреватель может, наконец, загрузить искомый шрифт из заданного Веб-узла аналогично тому, как при отображении документа загружаются графические образы, Java-аплеты и другие объекты. Это, однако, может приводить к существенной задержке при загрузке документа.

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

2.8.3.2. Директива @font-face

Директива @font-face позволяет нам включать в свою таблицу стилей описания шрифтов. Она состоит из набора дескрипторов шрифта и их значений и имеет следующий вид:

@font-face {
  дескриптор: значение;
  ...
  дескриптор: значение;
}

Дескрипторы шрифтов можно разбить на три группы:

  1. дескрипторы, обеспечивающие связь между описанием шрифта и его использованием в свойствах CSS (они имеют те же названия, что и соответствующие свойства);
  2. дескриптор, задающий URI, на котором находятся данные шрифта для загрузки;
  3. дескрипторы, задающие дальнейшие характеристики шрифта и обеспечивающие связь описания шрифта с его данными.

Пример директивы @font-face:

@font-face {
  font-family: comic;			    // имя шрифта для CSS
  src: url(http://www.fonts.com/comic.eot); // адрес файла для загрузки
}
Поддержка:  Internet Explorer Поддерживаются только дескрипторы font-family и src (5.0+)
            Netscape Navigator Не поддерживается

2.8.3.3. Дескрипторы свойств шрифта

Эта группа дескрипторов имеет те названия, что и соответствующие свойства CSS и могут иметь одно значение или несколько значений, разделенных запятыми. Если дескриптор не указан в директиве @font-face, то принимается его начальное значение.

Синтаксис:  font-family: [<имя-семейства> | <родовое-имя>]
                         [,[<имя-семейства> | <родовое-имя>]]*
Начально:   зависит от обозревателя
Устройства: визуальные
Поддержка:  Internet Explorer Соответствует стандарту (5.0+)
            Netscape Navigator Не поддерживается

Этот дескриптор задает список имен семейств шрифтов и принимает те же значения, что и свойство font-family.

Синтаксис:  font-style: all | [normal | italic | oblique][,[normal | italic | oblique]]*
Начально:   all
Устройства: визуальные
Поддержка:  Internet Explorer Не поддерживается
            Netscape Navigator Не поддерживается

Этот дескриптор задает стиль шрифта и может принимать те же значения, что и свойство font-style. Единственное отличие состоит в том, что его значением может быть список стилей или значение all (все стили).

Синтаксис:  font-variant: [normal | small-caps][,[normal | small-caps]]*
Начально:   normal
Устройства: визуальные
Поддержка:  Internet Explorer Не поддерживается
            Netscape Navigator Не поддерживается

Этот дескриптор задает вариант шрифта и может принимать те же значения, что и свойство font-variant. Единственное отличие состоит в том, что его значением может быть список вариантов.

Синтаксис:  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
Устройства: визуальные
Поддержка:  Internet Explorer Не поддерживается
            Netscape Navigator Не поддерживается

Этот дескриптор задает жирность шрифта и может принимать те же значения, что и свойство font-weight, со следующими отличиями:

  • относительные значения (bolder и lighter) не допускаются;
  • значением может быть список жирностей;
  • значением может быть 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
Устройства: визуальные
Поддержка:  Internet Explorer Не поддерживается
            Netscape Navigator Не поддерживается

Этот дескриптор задает выключку шрифта и может принимать те же значения, что и свойство font-stretch, со следующими отличиями:

  • относительные значения (wider и narrower) не допускаются;
  • значением может быть список выключек;
  • значением может быть all (все выключки).
Синтаксис:  font-size: all | <размер> | [,<размер>]*
Начально:   all
Устройства: визуальные
Поддержка:  Internet Explorer Не поддерживается
            Netscape Navigator Не поддерживается

Этот дескриптор задает размер шрифта и может принимать те же значения, что и свойство font-size, со следующими отличиями:

  • допускаются только абсолютные размеры шрифтов;
  • значением может быть список размеров;
  • значением может быть all (все размеры).

2.8.3.4. Дескриптор местоположения шрифта

Синтаксис:  src: [<uri> [format(<строка> [,<строка>]*)] | <спецификация-шрифта>]
                 [,<uri> [format(<строка> [,<строка>]*)] | <спецификация-шрифта>]*
Начально:   не определено
Устройства: визуальные
Поддержка:  Internet Explorer Поддерживается в виде src: url(URI), где URI указывает на шрифт
               формата Embedded OpenType (5.0+)
            Netscape Navigator Не поддерживается

Этот дескриптор задает местоположение шрифта. Его значением является список ссылок на файлы данных шрифтов. Каждая из ссылок представляет собой либо URI внешнего шрифта, загружаемого из Веб-узла, либо спецификацию локального шрифта, установленного на компьютере-клиенте. Список содержит ссылки в порядке их приоритетов, т. е. сначала обозреватель пытается загрузить шрифт из первой ссылки, затем, если это не удалось, из второй и т. д.

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

Таблица 2.6. Форматы загружаемых шрифтов
Строка Формат шрифта Расширение файла
"embedded-opentype" Embedded OpenType .eot, .ote
"intellifont" Intellifont  
"openType" OpenType, включая TrueType Open .ttf
"speedo" Speedo  
"truedoc-pfr" TrueDoc™ Portable Font Resource .pfr
"truetype" TrueType .ttf
"truetype-gx" TrueType с расширениями GX  
"type-1" PostScript™ Type 1 .pfb, .pfa

Примеры ссылок на загружаемые шрифты:

src: url(http://www.fonts.com/comic.eot);
src: url("http://site/magda-extra.pfr") format("truedoc-pfr");

Ссылка на локальный шрифт задается спецификацией шрифта вида local(имя), где имя - это полное название шрифта в операционной системе (например, в Windows имя должно совпадать с названием шрифта в системном реестре). Пример ссылки на локальный шрифт:

src: local("BT Century 751 No. 2 Semi Bold Italic");

Пример полного синтаксиса:

src: local("T-26 Typeka Mix"), url("http://cgi-bin/bar?stuff")
     format("type-1", "opentype");

Последний пример содержит две ссылки. Сначала обозреватель попытается загрузить локальный шрифт "T-26 Typeka Mix", а затем, если он не найден, будет загружать шрифт с узла"http://cgi-bin/bar?stuff". В данном случае это сценарий сервера, который может генерировать искомый шрифт в двух форматах: Type 1 и OpenType.

2.8.3.5. Дескриптор диапазона символов

Синтаксис:  unicode-range: [<диапазон>][,<диапазон>]*
Начально:   U+0-7FFFFFFF
Устройства: визуальные
Поддержка:  Internet Explorer Не поддерживается
            Netscape Navigator Не поддерживается

Этот дескриптор задает диапазон символов шрифта. Его значением является список диапазонов символов Unicode, которые имеются в данном шрифте. (См. перечень стандартных подмножеств Unicode.)

<Диапазон> задается шестнадцатеричным числом, соответствующим коду символа в Unicode, с префиксом "U+". При этом знак вопроса "?" вместо шестнадцатеричной цифры означает, что она принимает любое значение (0 - F), например:

unicode-range: U+20A7; // один символ (символ испанской песеты)
unicode-range: U+215?; // диапазон от 2150 до 215F (символы простых дробей)
unicode-range: U+00??; // диапазон от 0000 до 00FF (базовая латиница)
unicode-range: U+4??; // диапазон от 0400 до 04FF (кириллица)

Для задания диапазона используется также пара чисел, разделенных дефисом "-", например:

unicode-range: U+4E00-9FFF; // диапазон от 4E00 до 9FFF (унифицированные иероглифы)

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

unicode-range: U+370-3FF, U+1F??; // современные греческие буквы (370-3FF) и
                                  // древнегреческие политонические буквы (1F00-1FFF)
unicode-range: U+3000-303F, U+3100-312F, U+32??, U+33??, U+4E00-9FFF, U+F900-FAFF,
               U+FE30-FE4F;       // полный китайский шрифт

2.8.3.6. Дескриптор координатной системы

Синтаксис:  units-per-em: <число>
Начально:   не определено
Устройства: визуальные
Поддержка:  Internet Explorer Не поддерживается
            Netscape Navigator Не поддерживается

Этот дескриптор задает координатную систему метрики шрифта. Его значением является количество координатных единиц в стороне квадрата, который содержит наибольший символ шрифта (обычно это буква 'M', отсюда название em-квадрат). Это значение обычно определяется форматом шрифта. Типичные примеры его значений: 250 (Intellifont), 1000 (Type 1) и 2048 (TrueType, TrueType GX и OpenType).

2.8.3.7. Дескрипторы для подбора шрифтов

Эта группа необязательных дескрипторов предназначена для подбора шрифта по его характеристикам.

Синтаксис:  panose-1: <целое> {10}
Начально:   0 0 0 0 0 0 0 0 0 0
Устройства: визуальные
Поддержка:  Internet Explorer Не поддерживается
            Netscape Navigator Не поддерживается

Это дескриптор чисел Panose-1. Его значением является десять целых чисел, разделенных пробелами. Panose-1 — это стандартный механизм классификации и подбора шрифтов TrueType, пригодный для всех шрифтов, имеющих строчные и прописные буквы (латиница, кириллица, греческое письмо), но не позволяющий классифицировать другие системы письма (например, однорегистровые письменности, такие, как армянское, арабское или ивритское письмо, и иероглифические, такие, как китайское, корейское или японское письмо). Подробности см. в http://www.fonts.com/hp/panose/greybook Внешняя ссылка.

Синтаксис:  stemv: <число>
Начально:   не определено
Устройства: визуальные
Поддержка:  Internet Explorer Не поддерживается
            Netscape Navigator Не поддерживается

Этот дескриптор задает ширину вертикального штриха (vertical stem width) символов шрифта. Если он присутствует в описании шрифта, то должен присутствовать и дескриптор units-per-em.

Синтаксис:  stemh: <число>
Начально:   не определено
Устройства: визуальные
Поддержка:  Internet Explorer Не поддерживается
            Netscape Navigator Не поддерживается

Этот дескриптор задает ширину горизонтального штриха (horizontal stem width) символов шрифта. Если он присутствует в описании шрифта, то должен присутствовать и дескриптор units-per-em.

Синтаксис:  slope: <число>
Начально:   0
Устройства: визуальные
Поддержка:  Internet Explorer Не поддерживается
            Netscape Navigator Не поддерживается

Этот дескриптор задает угол наклона (vertical stroke angle) в градусах символов шрифта от вертикали против часовой стрелки (поэтому если символы наклонены вправо, то он отрицателен).

Синтаксис:  cap-height: <число>
Начально:   не определено
Устройства: визуальные
Поддержка:  Internet Explorer Не поддерживается
            Netscape Navigator Не поддерживается

Этот дескриптор задает высоту прописных букв шрифта. Если он присутствует в описании шрифта, то должен присутствовать и дескриптор units-per-em.

Синтаксис:  x-height: <число>
Начально:   не определено
Устройства: визуальные
Поддержка:  Internet Explorer Не поддерживается
            Netscape Navigator Не поддерживается

Этот дескриптор задает высоту строчных букв шрифта. Если он присутствует в описании шрифта, то должен присутствовать и дескриптор units-per-em.

Синтаксис:  ascent: <число>
Начально:   не определено
Устройства: визуальные
Поддержка:  Internet Explorer Не поддерживается
            Netscape Navigator Не поддерживается

Этот дескриптор задает максимальную высоту символов шрифта без учета диакритических знаков (maximum unaccented height). Если он присутствует в описании шрифта, то должен присутствовать и дескриптор units-per-em.

Синтаксис:  descent: <число>
Начально:   не определено
Устройства: визуальные
Поддержка:  Internet Explorer Не поддерживается
            Netscape Navigator Не поддерживается

Этот дескриптор задает максимальную глубину символов шрифта без учета диакритических знаков (maximum unaccented depth). Если он присутствует в описании шрифта, то должен присутствовать и дескриптор units-per-em.

2.8.3.8. Дескрипторы для синтеза шрифтов

Эта группа необязательных дескрипторов предназначена для синтеза шрифта и задает его дополнительные метрические характеристики.

Синтаксис:  widths: [<диапазон>]?[<число>]+[,[<диапазон>]?[<число>]+]
Начально:   не определено
Устройства: визуальные
Поддержка:  Internet Explorer Не поддерживается
            Netscape Navigator Не поддерживается

Этот дескриптор задает ширины символов шрифта. Его значением является список диапазонов символов, за каждым из которых следует одно или более значение ширины. Если этот дескриптор присутствует в описании шрифта, то должен присутствовать и дескриптор units-per-em. Если диапазон опущен, то он предполагается равным U+0-7FFFFFFF, т. е. распространяется на все символы шрифта. Если количество заданных ширин меньше, чем символов в диапазоне, то последняя из ширин применяется ко всем символам, чья ширина не указана; если же ширин больше, чем символов, то лишние ширины игнорируются. Поясним сказанное на примерах:

widths: U+4E00-4E1F 1736 1874 1692;
widths: U+1A?? 1490, U+215? 1473 1838 1927 1684 1356 1792
        1815 1848 1870 1492 1715 1745 1584 1992 1978 1770;

В первом примере указан диапазон из 32 символов, от 4E00 до 4E1F. Первый символ (с кодом 4E00) будет иметь ширину 1736, второй символ — ширину 1874, третий — ширину 1692. Поскольку ширин задано меньше, чем символов, последняя ширина (1692) будет присвоена всем остальным символам. Во втором примере задается единая ширина для 256 символов в диапазоне от 1A00 до 1AFF, а затем явно указываются ширины еще для 16 символов.

Синтаксис:  bbox: <число>,<число>,<число>,<число>
Начально:   не определено
Устройства: визуальные
Поддержка:  Internet Explorer Не поддерживается
            Netscape Navigator Не поддерживается

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

Синтаксис:  definition-src: <uri>
Начально:   не определено
Устройства: визуальные
Поддержка:  Internet Explorer Не поддерживается
            Netscape Navigator Не поддерживается

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

2.8.3.9. Дескрипторы для выравнивания шрифтов

Эта группа необязательных дескрипторов предназначена для выравнивания шрифта относительно других шрифтов.

Синтаксис:  baseline: <число>
Начально:   0
Устройства: визуальные
Поддержка:  Internet Explorer Не поддерживается
            Netscape Navigator Не поддерживается

Этот дескриптор задает нижнюю базовую линию символов шрифта. Если он присутствует в описании шрифта, то должен присутствовать и дескриптор units-per-em.

Синтаксис:  centerline: <число>
Начально:   не определено
Устройства: визуальные
Поддержка:  Internet Explorer Не поддерживается
            Netscape Navigator Не поддерживается

Этот дескриптор задает центральную базовую линию символов шрифта. Если он присутствует в описании шрифта, то должен присутствовать и дескриптор units-per-em.

Синтаксис:  mathline: <число>
Начально:   не определено
Устройства: визуальные
Поддержка:  Internet Explorer Не поддерживается
            Netscape Navigator Не поддерживается

Этот дескриптор задает математическую базовую линию символов шрифта. Если он присутствует в описании шрифта, то должен присутствовать и дескриптор units-per-em.

Синтаксис:  topline: <число>
Начально:   не определено
Устройства: визуальные
Поддержка:  Internet Explorer Не поддерживается
            Netscape Navigator Не поддерживается

Этот дескриптор задает верхнюю базовую линию символов шрифта. Если он присутствует в описании шрифта, то должен присутствовать и дескриптор units-per-em.