15  Шрифты

Содержание


15.1 Введение

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

Визуальный пользовательский шпион (ПА) обязан рассматривать следующие вопросы, раньше чем отображать символы:

И в CSS1, и в CSS2 авторы специфицируют колляции шрифта в серии свойств.

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

В CSS2 всё это изменилось, и сейчас возникло огромнее воли:

CSS2 улучшает подбор шрифтов на стороне заказчика, делает допустимым синтезирование шрифта и развивающееся отображение, а также загрузку шрифтов из Web. Это улучшает возможности 'WebFonts'.

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

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

То, как ПА конструирует базу шрифтов, находится вне поля зрения данной спецификации, от того что реализация БД зависит от таких факторов, как операционная система, система окон и заказчик.


15.2 Спецификация шрифта

Первая фаза механизма шрифтов CSS рассматривает, как авторы таблиц жанров специфицируют, какие шрифты обязаны применяться ПА. Во-первых видимо, что дозволено специфицировать шрифт по имени - строке, разделённой на части, скажем, "BT Swiss 721 Heavy Italic".

К сожалению, не существует общепризнанной отлично проработанной и многофункциональной системы систематизации шрифтов по их именам, и терминология, применимая к именам одного семейства шрифтов, может не подходить для других. Скажем, термин 'italic' традиционно применяется для обозначения наклонного текста, но наклонный текст может также обозначаться  Oblique, Slanted, Incline, Cursive либо Kursiv.
Имена шрифтов традиционно содержат термины, описывающие "вес" шрифта. Основной задачей этих имён является различение шрифтов одного семейства по толщине. По этим именам не существует общепризнанных значений для указания толщины, и применение этих значений может дюже различаться. Скажем, утолщённый шрифт может описываться как Regular, Roman, Book, Medium, Semi- либо Demi-Bold, Bold либо Black, в зависимости от того, насколько чёрным является "типичный" шрифт.

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

В связи с этим CSS использует другую модель. Шрифты запрашиваются не по имени, а по серии установленных свойств шрифта. Значения этих свойств формируют фундамент для механизма выбора шрифта в ПА. Свойства шрифта могут модифицироваться по отдельности, скажем, для увеличения толщины, и новейший комплект значений свойств шрифта применяется после этого для выбора из БД шрифтов. В итоге возрастает надёжность работы авторов и разработчиков таблиц жанров.


15.2.1 Свойства спецификации шрифта

CSS2 специфицирует шрифты в соответствии со следующими колляциями:

Семейство шрифта/Font Family
Свойство Семейство шрифта специфицирует, какое семейство шрифтов применяется для итога текста. Семейство это группа шрифтов, сделанных с применением сходных тезисов дизайна и внешнего вида. Один член семейства может быть italic, иной bold, 3-й - сжатый либо использующий малые заглавные. Имена семейств включают "Helvetica", "New Century Schoolbook", и "Kyokasho ICA L". Имена семейств не ограничены латиницей. Имена семейств могут быть сгруппированы по разным категориям: без либо с засечками, с непропорциональными символами, симулирующие письмо от руки, фантазийные шрифты и т.д.
Стиль шрифта/Font style
Специфицирует, отображается ли текст типичным, italic либо наклонным. Italic - это больше курсивный шрифт, чем normal, но не такой курсивный, дабы отображать письмо от руки. Oblique - это наклонная форма шрифта normal, и обыкновенно применяется совместно со шрифтами sans-serif. Такое определение устраняет путаницу, когда слегка наклонённые шрифты normal обозначают как oblique, а normal Greek - как italic.
Вариант шрифта/Font variant
Обозначает, выводится ли текст типичными либо малыми заглавными глифами для символов нижнего регистра. Традиционно шрифт содержит только normal, только малые заглавные либо глифы обоих типов; это качество применяется для запроса соответствующего шрифта и, если шрифт содержит оба варианта, подходящего глифа.
Вес шрифта/Font weight
Вес шрифта имеет отношение к толщине глифов, используемых для итога текста, касательно других шрифтов того же семейства.
Сжатие/Font stretch
Обозначает величину сжатия либо растяжения глифов, используемых для итога текста, касательно других шрифтов того же семейства.
Размер/Font size
Относится к размеру шрифта от базовой линии, когда установлен в solid (в терминах CSS это тогда, когда свойства 'font-size' и 'line-height' имеют одно значение).

Для всех свойств, за исключением 'font-size', значения размеров 'em' и 'ex' относятся к размеру шрифта нынешнего элемента. Для 'font-size' эти единицы измерения ссылаются на размер шрифта-прародителя. См. также раздел единицы измерения.

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


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

'font-family'
Значение:  [[ <family-name> | <generic-family> ],]* [<family-name> | <generic-family>] | inherit
Начальное:  зависит от ПА
Применяется: ко каждому элементам
Наследуется:да
Процентное:  N/A
Носитель:  визуальный

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

Пример(ы):

Например, для отображения текста, содержащего смесь английских и математических символов, может понадобиться комплект из 2-х шрифтов: один с латинскими символами и цифрами, иной - с математическими символами. Вот пример комплекта шрифтов, подходящих для отображения текста, содержащего латинские, японские и математические символы:

BODY { font-family: Baskerville, "Heisi Mincho W3", Symbol, serif }

Латинские символы будут взяты из шрифта "Baskerville", японские глифы - из "Heisi Mincho W3", а глифы математических символов - из "Symbol". Все другие будут браться из всеобщего семейства шрифтов 'serif'.

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

Есть два типа имён семейств шрифтов:

<family-name>/Имя семейства
Имя семейства шрифтов по выбору. В предыдущем примере "Baskerville", "Heisi Mincho W3" и "Symbol" являются семействами шрифтов. Имена семейств шрифтов, содержащие пробелы, обязаны заключаться в кавычки. Если кавычки отсутствуют, всякие символы пробела до и позже имени шрифта игнорируются, а любая последовательность пробелов внутри имени шрифта конвертируется в одиночный пробел.
<generic-family>/Родовое (всеобщее) семейство
Определены следующие родовые семейства: 'serif', 'sans-serif', 'cursive', 'fantasy' и 'monospace'. См. изложение этих семейств в разделе родовые семейства шрифтов. Имена родовых семейств являются ключевыми словами и не непременно обязаны заключаться в кавычки.

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

Скажем:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<HTML>
  <HEAD>
    <TITLE>Font test</TITLE>
    <STYLE type="text/css">
      BODY { font-family: "new century schoolbook", serif }
    </STYLE>
  </HEAD>
  <BODY>
   <H1 style="font-family: 'My own font', fantasy">Test</H1>
    <P>What's up, Doc?
  </BODY>
</HTML>

Пример(ы):

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

*:lang(ja-jp) { font: 900 14pt/16pt "Heisei Mincho W9", serif }
*:lang(zh-tw) { font: 800 14pt/16.5pt "Li Sung", serif }

Здесь выбирается всякий элемент соответствующего языка - японского либо традиционного китайского - и запрашивается соответствующий шрифт.


15.2.3 Стилизация шрифта: свойства  'font-style', 'font-variant', 'font-weight' и 'font-stretch'

'font-style'
Значение:  normal | italic | oblique | inherit
Начальное:normal
Применяется:  ко каждым элементам
Наследуется:да
Процентное:N/A (не установлено)
Носитель:визуальный

Свойство 'font-style' запрашивает жанры normal (изредка называемый "roman" либо "upright"), italic и oblique в семействе шрифтов. Значения имеют дальнейший толк:

normal
Определяет шрифт, тот, что систематизирован как 'normal' в БД шрифтов ПА.
oblique
Определяет шрифт, тот, что систематизирован как 'oblique' в БД шрифтов в ПА. Шрифты со словами Oblique, Slanted либо Incline в своих наименованиях обыкновенно помечаются в БД шрифтов как 'oblique'. Шрифт, помеченный в БД шрифтов ПА как 'oblique', может в реальности генерироваться электронным наклоном типичного шрифта.
italic
Определяет шрифт, тот, что систематизирован как 'italic' в БД шрифтов ПА, либо, если это недостижимо, шрифт, помеченный 'oblique'. Шрифты со словами Italic, Cursive либо Kursiv в своих наименованиях традиционно помечаются как 'italic'.

Пример(ы):

В этом примере текст normal в элементах H1, H2 либо H3 будет отображаться шрифтом italic. Впрочем, выделенный текст (EM) в элементе H1 будет выведен как normal.

H1, H2, H3 { font-style: italic }
H1 EM { font-style: normal }
'font-variant'
Значение:  normal | small-caps | inherit
Начальное:normal
Применяется:ко каждым элементам
Наследуется:да
Процентное:N/A
Носитель:визуальный

В шрифтах мелких заглавных букв глифы символов нижнего регистра походят на символы верхнего регистра, но меньшего размера и слегка других пропорций. Свойство 'font-variant' запрашивает двухкамерный шрифт (имеющий два регистра, как в латинице). Это качество не имеет видимого результата для однокамерного написания (когда имеется только один регистр, как в большинстве систем написания). Значения имеют дальнейший толк:

normal
Специфицирует шрифт, тот, что не помечен как шрифт мелких заглавных букв.
small-caps
Специфицирует шрифт, тот, что помечен как шрифт мелких заглавных букв. Если определенный шрифт мелких заглавных букв недостижим, ПА обязаны симулировать такой шрифт, скажем, замещением букв нижнего регистра обыкновенного шрифта пересчитанными символами верхнего регистра. В крайнем случае, глифы непересчитанных букв верхнего регистра шрифта normal могут замещать глифы шрифта мелких заглавных букв, и каждый текст выводится  символами верхнего регистра.

Пример(ы):

Результатом дальнейшего примера будет элемент H3 с малыми заглавными буквами, с выделенными словами (EM) из наклонённых мелких заглавных:

H3 { font-variant: small-caps }
EM { font-style: oblique }

Поскольку это качество переводит символы текста в верхний регистр, используется тот же подход, что и в text-transform'.

'font-weight'
Значение:normal | bold | bolder | lighter | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900 | inherit
Начальное:normal
Применяется: ко каждому элементам
Наследуется:да
Процентное:N/A
Носитель:визуальный

Качество 'font-weight' специфицирует вес шрифта. Значения имеют дальнейший толк:

от 100 до 900
Эти значения формируют упорядоченную последовательность, где всякий номер обозначает вес, тот, что темнее своего предшественника.
normal
То же, что '400'.
bold
То же, что '700'.
bolder
Определяет вес шрифта, больше тёмный, чем наследуемый. Если такого веса нет, итогом будет больше "тёмное" числовое значение (а шрифт не изменяется), если только наследуемое значение не  '900', в этом случае итог будет также '900'.
lighter
Определяет вес шрифта, назначаемый шрифту, тот, что светлее, чем наследуемый. Если такого веса нет, итогом будет больше "светлое" числовое значение (а шрифт не изменяется), если только наследуемое значение не  '100', в этом случае итог будет также '100'.

Пример(ы):

P { font-weight: normal }   /* 400 */
H1 { font-weight: 700 }     /* bold */
BODY { font-weight: 400 }
STRONG { font-weight: bolder } /* 500 допустимо */

Дочерние элементы наследуют вычисленное значение веса.

'font-stretch'
Значение:normal | wider | narrower | ultra-condensed | extra-condensed | condensed | semi-condensed | semi-expanded | expanded | extra-expanded | ultra-expanded | inherit
Начальное:normal
Применяется: ко каждом элементам
Наследуется:да
Процентное:N/A
Носитель:визуальный

Свойство 'font-stretch' выбирает жанр normal, condensed либо extended из семейства. Безусловные значения ключевых слов имеют дальнейший порядок, от самого тесного до самого широкого :

  1. ultra-condensed
  2. extra-condensed
  3. condensed
  4. semi-condensed
  5. normal
  6. semi-expanded
  7. expanded
  8. extra-expanded
  9. ultra-expanded

Относительное ключевое слово 'wider' устанавливает значение в следующее больше "широкое" по сопоставлению с наследуемым значение (не выше 'ultra-expanded'); относительное ключевое слово 'narrower' устанавливает значение в следующее больше "сжатое" значение ниже наследуемого значения (не ниже 'ultra-condensed').


15.2.4 Размер шрифта: свойства  'font-size' и 'font-size-adjust'

'font-size'
Значение:<absolute-size> | <relative-size> | <length> | <percentage> | inherit
Начальное:medium
Применяется: ко каждым элементам
Наследуется:да, вычисленное значение наследуется
Процентное:ссылается на размер шрифта родительского элемента
Носитель:визуальный

Это качество описывает размер шрифта, установленного в solid. Значения имеют дальнейший толк:

<absolute-size>
Ключевое слово <absolute-size> ссылается на вход в таблице размеров шрифта, вычисленной и хранимой пользовательским агентом. Допустимые значения:

[ xx-small | x-small | small | medium | large | x-large | xx-large ]

На экране компьютера между смежными индексами используется масштаб 1.2: если шрифт 'medium' - 12pt, то шрифт 'large' будет 14.4pt. Другие носители могут требовать других значений масштаба. Таким образом, ПА должен рассматривать качество и доступность шрифтов при обсчёте таблицы размеров. Таблица может отличаться для различных семейств шрифтов.

Примечание. В CSS1 масштаб между смежными индексами принимался в 1.5 и, по навыку пользователей, оказался слишком огромным.

<relative-size>/относительный размер
Ключевое слово <relative-size> интерпретируется касательно таблицы размеров шрифта и размера шрифта родительского элемента. Допустимые значения:

[ larger | smaller ]

Например, если родительский элемент имеет размер шрифта 'medium', значение 'larger' сделает размер шрифта нынешнего элемента 'large'. Если размер родительского элемента не вмещается в диапазон таблицы, ПА свободен в интерполяции значений таблицы либо округлении до ближайшего. ПАгенту может понадобиться экстраполировать значения таблицы, если цифровое значение находится вне ключевых слов.

<length>
Значение length специфицирует безусловный размер шрифта (т.е. само­стоятельный от таблицы шрифтов ПА). Отрицательные значения недопустимы.
<percentage>
Процентное значение специфицирует безусловный размер шрифта касательно размера шрифта родительского элемента. Применение процентных значений либо значений в 'em' даёт больше надёжные и каскадируемые таблицы жанров.

Текущее значение данного свойства может отличаться от обсчитанного свойства при наличии цифрового значения 'font-size-adjust' и недоступности некоторых размеров шрифта.

Дочерние элементы наследуют обсчитанное значение 'font-size' (в то же время, результат 'font-size-adjust' может усложниться).

Пример(ы):

P { font-size: 12pt; }
BLOCKQUOTE { font-size: larger }
EM { font-size: 150% }
EM { font-size: 1.5em }
'font-size-adjust'
Значение:<number> | none | inherit
Начальное:none
Применяется:  ко каждым элементам
Наследуется:да
Процентное:N/A
Носитель:визуальный

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

Например, знаменитый шрифт Verdana имеет значение аспекта 0.58; если измерение размера шрифта Verdana - 100 единиц, то его x-height - 58 единиц. Для сопоставления, Times New Roman имеет значение аспекта 0.46. Verdana, следственно, имеет тенденцию остаться рассудительным при меньших размерах, чем Times New Roman. И напротив, Verdana почаще окажется слишком огромным при замещении шрифта Times New Roman.

Это качество дозволяет авторам специфицировать значение аспекта, сберегающее x-height первого шрифта в подставляемом шрифте. Значения имеют дальнейший толк:

none
Не сберегает x-height шрифта.
<number>
Специфицирует значение аспекта. Число относится к значению аспекта первого шрифта. Значение масштаба доступных шрифтов обсчитывается в соответствии со дальнейшей формулой:
y(a/a') = c

где:

y = 'font-size' первого шрифта
a' = значение аспекта доступного шрифта
c = 'font-size' для использования к доступному шрифту

Пример(ы):

Например, если 14px Verdana (со значением аспекта 0.58) окажется недостижимым, а доступный шрифта имеет значение аспекта 0.46, font-size замещающего будет 14 * (0.58/0.46) = 17.65px.

Уточнение размера шрифта имеет место при обсчёте текущего значения  'font-size'. От того что наследование основывается на обсчитанном значении, дочерние элементы будут наследовать неуточнённые значения.

Первый рисунок показывает разные типы шрифтов, растрированные в обыкновенный размер (11pt. от 72 ppi), совместно с их значениями аспекта. Обратите внимание, что шрифты с огромным значением аспекта оказываются огромнее, чем шрифты с низким значением аспекта. Шрифты со слишком низким значением аспекта оказываются нечитаемыми в данных размерах.

Comparison of 12 point fonts

Следующий рисунок показывает итог 'font-size-adjust', где Verdana берётся как "1-й шрифт", и итог использования масштаба. Позже использования, размеры шрифтов примерно линеарны, правда нынешние (em) размеры варьируются больше чем на 100%. Обратите внимание, что 'font-size-adjust' тяготится также стабилизировать горизонтальное измерение строк.

Comparison of font-adjusted fonts


15.2.5 Сокращение для свойств шрифта: свойство  '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'
Носитель:визуальный

Свойство 'font', за исключением случаев, описанных ниже, является сокращённым значением свойств установок 'font-style', 'font-variant', 'font-weight', 'font-size', 'line-height' и 'font-family' в том же месте таблицы жанров. Синтаксис этого свойства основывается на обычной типографской нотации сокращений для установки нескольких свойств шрифта.

Все свойства, относящиеся к шрифтам, вначале устанавливаются в свои исходные значения, включая перечисленные в предыдущих параграфах, плюс 'font-stretch' и 'font-size-adjust'. После этого свойства, для которых заданы очевидные значения в 'font', устанавливаются в эти значения. Для определения возможных и исходных значений см. ранее определённые свойства. Для обеспечения обратной совместимости невозможно устанавливать 'font-stretch' и 'font-size-adjust' в иные, нежели исходные, значения, применяя качество 'font'; взамен этого установите индивидуальные свойства.

Пример(ы):

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 Palatino, serif }
P { font: normal small-caps 120%/120% fantasy }
P { font: oblique 12pt "Helvetica Nue", serif; font-stretch: condensed }

Во втором правиле процентное значение размера шрифта ('80%') относится к размеру шрифта родительского элемента. В третьем правиле высота строки в процентах ('110%') относится к размеру шрифта самого элемента.

Первые три правила не специфицируют 'font-variant' и 'font-weight' очевидно, следственно эти свойства получают свои исходные значения ('normal'). Обратите внимание, что имя семейства шрифтов "new century schoolbook", содержащее пробелы, заключено в кавычки. Четвёртое правило устанавливает 'font-weight' в 'bold',  'font-style' - в 'italic' и неявно устанавливает 'font-variant' в 'normal'.

Пятое правило устанавливает 'font-variant' ('small-caps'), 'font-size' (120% размера шрифта прародителя), 'line-height' (120% размера шрифта) и 'font-family' ('fantasy'). Из этого следует, что ключевое слово 'normal' используется к двум оставшимся свойствам: 'font-style' и 'font-weight'.

Шестое правило устанавливает 'font-style', 'font-size' и 'font-family', другие свойства шрифта в свои исходные значения. Оно после этого устанавливает 'font-stretch' в 'condensed', от того что это качество не может быть установлено в это значение путём применения сокращённого свойства 'font'.

Следующие значения относятся к системным шрифтам:

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

Системные шрифты могут устанавливаться только всецело, то есть: семейство шрифта, размер, вес, жанр и т.д. - все устанавливаются единовременно. Эти значения могут быть после этого установлены индивидуально, если это нужно. Если шрифт с указанными колляциями отсутствует на данной платформе, ПА либо должен положительно заменить шрифт (напр., уменьшенная версия шрифта 'caption' может применяться для шрифта 'smallcaption'), либо подставить шрифт ПА по умолчанию. Как и для обыкновенных шрифтов, если всякие свойства системного шрифта не являются частью доступных операционной системе установок пользователя, то эти свойства обязаны быть установлены в свои исходные значения.

Это является поводом того,  отчего это качество - "почти" сокращённое качество: системные шрифты могут быть специфицированы только этим свойством, но не самим 'font-family', так что 'font' дозволяет авторам сделать огромнее, чем каждая сумма его подсвойств. В то же время, индивидуальные свойства, такие как 'font-weight', получают свои значения из системного шрифта, и (свойства) могут само­стоятельно варьироваться.

Примеры(ы):

BUTTON { font: 300 italic 1.3em/1.7em "FB Armada", sans-serif }
BUTTON P { font: menu }
BUTTON P EM { font-weight: bolder }

Если шрифт для применения в выпадающих меню в определенной системе установлен, к примеру, 9-пунктовый Charcoal с весом 600, тогда элементы P - потомки BUTTON будут отображаться так, как если бы действовало правило:

BUTTON P { font: 600 9pt Charcoal }

Поскольку сокращение 'font' устанавливает в исходное значение всякое качество, не получившее очевидно своего значения, это действие будет равносильно такому объявлению:

BUTTON P {
  font-style: normal;
  font-variant: normal;
  font-weight: 600;
  font-size: 9pt;
  line-height: normal;
  font-family: Charcoal
} 

15.2.6 Общие (родовые) семейства шрифтов

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

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

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

serif

Глифы шрифтов serif, в терминах CSS, имеют изгибы на концах, зауженные концы либо засечки на концах (включая выгнутые засечки). Шрифты Serif традиционно пропорциональны. Они традиционно отображают бóльшие различия между тонкими и толстыми штрихами, нежели шрифты всеобщего семейства 'sans-serif'. CSS использует термин 'serif' для использования со шрифтом всякого письма, правда для некоторых видов письма могут использоваться другие названия, как Mincho (японский), Sung либо Song (китайский), Totum либо Kodig (корейский). Всякий шрифт, описанный таким образом, может применяться для представления всеобщего семейства 'serif'.

Вот примеры шрифтов, удовлетворяющих этому изложению:

Латинские шрифты Times New Roman, Bodoni, Garamond, Minion Web, ITC Stone Serif, MS Georgia, Bitstream Cyberbit
Греческие Bitstream Cyberbit
Кириллические Adobe Minion Cyrillic, Excelcior Cyrillic Upright, Monotype Albion 70, Bitstream Cyberbit, ER Bukinst
Еврейские New Peninim, Raanana, Bitstream Cyberbit
Японские Ryumin Light-KL, Kyokasho ICA, Futo Min A101
Арабские Bitstream Cyberbit
Шрифты Чероки Lo Cicero Cherokee

sans-serif

Глифы шрифтов sans-serif, в терминах CSS, имеют закруглённые ровные окончания - без засечек и каких-нибудь других орнаментаций. Шрифты Sans-serif традиционно пропорциональны. Они зачастую имеют отклонения между тонкими и толстыми закруглениями, сравнимые со шрифтами семейства 'serif'. CSS использует термин 'sans-serif' для использования со шрифтом всякого письма, правда для некоторых видов письма могут использоваться другие названия, как Gothic (японский), Kai (китайский) либо Pathang (корейский). Всякий шрифт, описанный таким образом, может применяться для представления всеобщего семейства 'sans-serif'.

Примеры шрифтов, удовлетворяющих этому изложению:

Латинские шрифты MS Trebuchet, ITC Avant Garde Gothic, MS Arial, MS Verdana, Univers, Futura, ITC Stone Sans, Gill Sans, Akzidenz Grotesk, Helvetica
Греческие Attika, Typiko New Era, MS Tahoma, Monotype Gill Sans 571, Helvetica Greek
Кириллические Helvetica Cyrillic, ER Univers, Lucida Sans Unicode, Bastion
Еврейские Arial Hebrew, MS Tahoma
Японские Shin Go, Heisei Kaku Gothic W5
Арабские MS Tahoma

cursive

Глифы шрифтов cursive, в терминах CSS, обыкновенно имеют объединяющие окончания либо другие курсивные колляции типа italic. Глифы отчасти либо всецело соединяются, и итог огромнее напоминает письмо от руки либо кистью, чем типографскую печать. Шрифты для некоторых видов письма, таких как арабское, примерно неизменно курсивные. CSS использует термин 'cursive' для шрифтов всякого письма, правда другие имена - Chancery, Brush, Swing и Script также употребляются.

Примеры таких шрифтов:

Латинские Caflisch Script, Adobe Poetica, Sanvito, Ex Ponto, Snell Roundhand, Zapf-Chancery
Кириллические  ER Architekt
Еврейские Corsiva
Арабские DecoType Naskh, Monotype Urdu 507

fantasy

Фантазийные шрифты, как они применяются в  CSS, раньше каждого декоративны, а теснее потом содержат представление символов (в противоположность шрифтам Pi либо Picture, не представляющим символы).
Примеры:

Латинские шрифты  Alpha Geometrique, Critter, Cottonwood, FB Reactor, Studz

monospace

Единственным критерием для моноширинных шрифтов служит то, что все глифы имеют одну и ту же фиксированную ширину. (Некоторые виды письма, такие как арабское, выглядят при этом странно). Вид напоминает шрифт пишущей машинки, и это зачастую применяется для выделения примеров компьютерного кода. Примеры моноширинных шрифтов:
Латинские Courier, MS Courier New, Prestige, Everson Mono
Греческие MS Courier New, Everson Mono
Кириллические  ER Kurier, Everson Mono
Японские Osaka Monospaced
Чероки Everson Mono


15.3 Выбор шрифта

Вторая фаза механизма шрифтов CSS2 - выбор в ПА шрифта на базе специфицированных автором свойств шрифта, доступных шрифтов и т.д. Детали алгоритма подбора шрифта рассматриваются ниже.

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

совпадение имени шрифта
В этом случае ПА использует присутствующий доступный шрифт, тот, что имеет то же самое имя семейства, что и запрашиваемый шрифт. (Обратите внимание, что внешний вид и параметры не неукоснительно обязаны совпадать, если шрифт автора документа и шрифт клиентской системы - из различных "литеек"). Информация для сопоставления ограничена свойствами шрифта CSS, включая имя семейства. Это исключительный способ, применяемый CSS1.
смысловое совпадение
В этом случае ПА использует присутствующий доступный шрифт, тот, что имеет наибольшее совпадение с затребованным шрифтом. (Обратите внимание, что метрические параметры могут не совпадать верно). Информация для сопоставления включает информацию о роде шрифта (текстовый либо символьный), природе засечек, весе, cap-высоте, x-высоте, восхождении, нисхождении, наклоне и т.п.
синтез
В этом случае ПА создаёт шрифт, тот, что лишь примерно совпадает по внешнему виду, а также по метрическим параметрам, с запрошенным шрифтом. Информация для синтезирования включает информацию для сопоставления и традиционно требует больше точных значений параметров, используемых для некоторых схем сопоставления. В особенности для синтеза нужны точные данные ширины и символы для глифов замещения и информация о позиции, если сохраняются все колляции вида специфицированного шрифта.
загрузка
Наконец, ПА может затребовать шрифт в Web. Данный процесс напоминает приобретение из Web изображений, звуков либо аплетов для нынешнего документа и так же может вызвать задержку с отображением страницы.

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

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


15.3.1 Описание шрифта и  @font-face

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

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

Дескрипторы шрифта дозволено систематизировать по трём типам:

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

Все изложения шрифта специфицируются at-правилом  @font-face.
Всеобщая форма такая:

@font-face { <font-description> }

где  <font-description>  имеет форму:

дескриптор: значение;
дескриптор: значение;
[...]
дескриптор: значение;

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

Доступные дескрипторы шрифта описываются дальше в разделах этой спецификации.

Например, это шрифт 'Robson Celtic', определённый и имеющий ссылку в таблице жанров, содержащейся в документе HTML:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<HTML>
  <HEAD>
    <TITLE>Font test</TITLE>
    <STYLE TYPE="text/css" MEDIA="screen, print">
      @font-face {
        font-family: "Robson Celtic";
        src: url("http://site/fonts/rob-celt")
      }
      H1 { font-family: "Robson Celtic", serif }
    </STYLE>
  </HEAD>
  <BODY>
    <H1> Данный заголовок выводится с применением Robson Celtic</H1>
  </BODY>
</HTML>

Таблица жанров (в элементе STYLE) содержит правило CSS, устанавливающее все элементы H1 на применение семейства шрифтов 'Robson Celtic'.

Реализация CSS1 будет искать у заказчика шрифт, чьи имя семейства и другие свойства совпадают с 'Robson Celtic', и, если совпадение не будет обнаружено, будет применяться специфичный для данного ПА резервный шрифт serif (тот, что должен существовать).

ПА, реализующий CSS2, вначале проверяет правила @font-face для поиска изложения шрифта, определённого как 'Robson Celtic'. Данный пример содержит подходящее правило. Правда в этом правиле и не содержится много данных шрифта, в нём есть URI, где дозволено запросить шрифт для представления данного документа. Загруженные шрифты не обязаны становиться доступными для других приложений. Если не обнаружено совпадение для @font-face, ПА попытается исполнить сопоставление как ПА с CSS1.

Обратите внимание, что, если шрифт 'Robson Celtic' был установлен на клиентской системе, это может вызвать добавление пользовательским агентом входа в БД шрифтов для установленной копии, как описано в разделе алгоритм совпадения шрифта. Установленная копия получит совпадение до загружаемого шрифта (в предыдущем примере).

Реализации CSS1, не понимающие правило @font-face, вычислят открывающую фигурную скобку и будут игнорировать всё до происхождения закрывающей скобки. Это at-правило соответствует требованию вперёд-совместимого разбора CSS. Разборщики могут игнорировать эти правила без появления ошибки.

Разделение дескрипторов шрифта и данных шрифта даёт возможность исполнит выбор и/или замену шрифта. Охрана данных и ограничения репликации для дескрипторов шрифта могут быть менее жёсткими, чем для полных данных шрифта.
Таким образом, допустимо установить определение шрифта локально либо как минимум иметь его в локальном кэше, если он возникает в обыкновенно применяемой таблице жанров; это может не затребовать доступа к полному определению шрифта в Web огромнее, чем однократно, для именованного шрифта.

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

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


15.3.2 Дескрипторы для подбора шрифта: 'font-family', 'font-style', 'font-variant', 'font-weight', 'font-stretch'  и  'font-size'

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

Значения в таком списке (за исключением особенно подмеченных) - те же самые, что и соответствующие свойства CSS2. Если это одиночное значение, оно должно совпадать. Если это список, всякий элемент списка может образовать совпадение. Если в  @font-face дескриптор отсутствует, применяется исходное значение дескриптора.

'font-family' (Дескриптор)
Значение:  [ <family-name> | <generic-family> ] [, [<family-name> | <generic-family> ]]*
Начальное:  зависит от ПА
Носитель:  визуальный

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

'font-style' (Дескриптор)
Значение:  all | [ normal | italic | oblique ] [, [normal | italic | oblique] ]*
Начальное:  all
Носитель:  визуальный

Это дескриптор жанра шрифта, принимающий то же значение, что и качество 'font-style', за исключением того, что применение списка запрещено.

'font-variant' (Дескриптор)
Значение:  [normal | small-caps] [,[normal | small-caps]]*
Начальное:  normal
Носитель:  визуальный

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

Примечание. Кириллические прямые шрифты могут быть помечены в 'font-variant' как "малые заглавные", что класснее совмещается с латиницей (а соответствующий курсив - помечен 'font-style' как italic с той же целью).

'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
Носитель:  визуальный

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

  1. относительные ключевые слова (bolder, lighter) не разрешаются;
  2. список разделённых запятыми значений разрешён для шрифтов, содержащих несколько значений веса;
  3. разрешено дополнительное ключевое слово '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
Носитель:  визуальный

Это обозначение CSS для сжатия либо растяжения шрифта касательно других шрифтов того же семейства. Принимает те же значения, что и качество 'font-stretch', за исключением того, что:

'font-size' (Дескриптор)
Значение:  all | <length> [, <length>]*
Начальное:  all
Носитель:  визуальный

Это дескриптор размера, предоставляемого для данного шрифта. Разрешены только абсолютные единицы измерения, в различие от свойства 'font-size', которое разрешает относительные и безусловные размеры. Разрешён список разделённых запятыми размеров.

Начальное значение 'all' подходит для большинства имеющих вес шрифтов, следственно данный дескриптор применяется раньше каждого в @font-face для растровых шрифтов либо шрифтов, имеющих вес, которые разработаны для растрирования в ограниченных пределах размеров шрифта.


15.3.3 Дескрипторы для квалификации данных шрифта: 'unicode-range'

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

'unicode-range' (Дескриптор)
Значение:  <urange> [, <urange>]*
Начальное:  U+0-7FFFFFFF
Носитель:  визуальный

Это дескриптор диапазона символов ISO 10646, покрываемого данным шрифтом.

Значения <urange> выражаются с применением 16-ричных значений с префиксом "U+", соответствующих кодовой позиции в ISO 10646 ([ISO10646]).

Например, U+05D1 это символ ISO 10646 'еврейская буква bet'. Для значений вне Basic Multilingual Plane/BMP (Базовый Многоязычный План) подставляются добавочные ведущие цифры, соответствующие числу плана, и также 16-ричные, как данный U+A1234 символ Плана 10 с 16-ричной кодовой позицией 1234. Со времени написания, новые символы вне BMP не добавлялись. Ведущие нули (скажем, 0000004D) правильны, но не требуются.

Начальное значение этого дескриптора покрывает не только каждый Basic Multilingual Plane (BMP), в пределах U+0-FFFF, но также и каждый репертуар ISO 10646. Таким образом, исходное значение говорит о том, что шрифт может содержать глифы всяких символов ISO 10646. Спецификация значения 'unicode-range' предоставляет информацию для результативного поиска, объявляя ограниченный диапазон, в пределах которого шрифт может иметь глифы символов. Шрифт не должен искаться вне указанного диапазона символов.

Значения могут записываться любым числом цифр. Для единичной цифры символ '?' обозначает 'любое значение', которое создаёт диапазон позиций символов. Таким образом, применяя одиночное число:

unicode-range: U+20A7
нет маски - обозначение одиночной позиции символа (песета - символ испанской валюты)
unicode-range: U+215?
одна маска, покрывает диапазон от 2150 до 215F (дроби)
unicode-range: U+00??
две маски, покрывает диапазон от 0000 до 00FF (Latin-1)
unicode-range: U+E??
две маски, покрывает от 0E00 до 0EFF (письмо Lao).

Пара чисел в данном формате в комбинации с дефисом обозначает больше широкий диапазон. Скажем:

unicode-range: U+AC00-D7FF
это диапазон от AC00 до D7FF (область Hangul Syllables).

Множественные финальные диапазоны могут быть специфицированы путём распределения запятыми. Как и в иных списках CSS с распределением запятыми, всякий пробел перед либо позже запятой игнорируется. Скажем:

unicode-range: U+370-3FF, U+1F??
покрывает диапазон от 0370 до 03FF (Modern Greek) плюс от 1F00 до 1FFF (Ancient polytonic Greek).
unicode-range: U+3000-303F, U+3100-312F, U+32??, U+33??, U+4E00-9FFF, U+F9000-FAFF, U+FE30-FE4F
один из наихудших примеров в плане многозначности, дюже определённо обозначает, что данный (дюже объёмный) шрифт содержит только китайские символы из ISO 10646 без включения всяких символов, уникальных для японского и корейского. Диапазон - от 3000 до 303F (CJK символы и пунктуация), плюс от 3100 до 312F (Bopomofo), плюс от 3200 до 32FF (включая CJK символы и месяцы), плюс от 3300 до 33FF (CJK зона совместимости), плюс от 4E00 до 9FFF (CJK унифицированные идеографы), плюс отF900 до FAFF (CJK идеографы совместимости), плюс от FE30 до FE4F (CJK формы совместимости).

Более внятное представление нормального китайского шрифта:

unicode-range: U+3000-33FF, U+4E00-9FFF

unicode-range: U+11E00-121FF
этот шрифт покрывает предлагаемую регистрацию пиктограмм Aztec в диапазоне от 1E00 до 21FF в плане 1.
unicode-range: U+1A00-1A1F
этот шрифт покрывает предлагаемую регистрацию Irish Ogham в диапазоне от1A00 до 1A1F.


15.3.4 Дескриптор числовых значений: 'units-per-em'

Этот дескриптор определяет число "units/единиц измерения" на em; эти units могут применяться другими дескрипторами для выражения разных размеров, следственно, 'units-per-em' нужен, если другие дескрипторы зависят от него.

'units-per-em' (Дескриптор)
Значение:  <number>
Начальное:  не определено
Носитель:  визуальный

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


15.3.5 Дескриптор для ссылки: 'src'

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

'src' (Дескриптор)
Значение:  [ <uri> [format(<string> [, <string>]*)] | <font-face-name> ] [, <uri> [format(<string> [, <string>]*)] | <font-face-name> ]*
Начальное:  не определено
Носитель:  визуальный

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

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

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

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

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

Как и с прочими URI в CSS, URI может быть неполным, и в этом случае он расширяется касательно расположения таблицы жанров, содержащей @font-face.

Установленное локально <font-face-name> это полное имя локально установленного шрифта. Full font name\полное имя шрифта - это имя шрифта, сообщённое операционной системой, и оно особенно возможно будет применяться читающим таблицами жанров, таблицей жанров по умолчанию в браузере либо допустимыми авторским таблицами жанров в intranet. Украшения, такие как bold, italic и underline, зачастую применяются для дифференциации шрифтов внутри семейства шрифтов. Дополнительную информацию о полных именах шрифтов см. дальше в Примечаниях.

Обозначением для  <font-face-name> является полное имя шрифта, которое должно быть заключено в кавычки, от того что может содержать всякие символы, включая пробелы и знаки пунктуации, а также должно быть заключено в local(" и ").

Пример(ы):

src: url("http://foo/bar")
полный URI без информации о формате(ах) шрифта, доступных здесь
src: local("BT Century 751 No. 2 Semi Bold Italic")
ссылается на определённый вид локально установленного шрифта
src: url("../fonts/bar") format("truedoc-pfr")
частичный URI шрифта, доступного в формате TrueDoc
src: url("http://cgi-bin/bar?stuff") format("opentype", "intellifont")
полный URI, в данном случае - скрипта, тот, что может генерировать два различных формата шрифта - OpenType и Intellifont
src: local("T-26 Typeka Mix"), url("http://site/magda-extra") format("type-1")
два альтернативных варианта: 1-й - локально установленный шрифт, а 2-й - загружаемый шрифт в формате Type 1.

Доступ к локально установленным шрифтам происходит через <font-face-name>. Font face name (имя разновидности шрифта) не должно быть ни уникальным, ни само­стоятельным от формата платформы и шрифта, но в текущее время это лучший путь идентификации данных локально установленного шрифта. Применение имени разновидности шрифта (font face name) дозволено осуществить больше верно путём предоставления указания на требуемое дополнение глифа. Это дозволено сделать, указав диапазон позиций символов ISO 10646, для которых шрифт предоставляет некоторые глифы (см. 'unicode-range').


15.3.6 Дескрипторы для подбора: 'panose-1', 'stemv', 'stemh', 'slope', 'cap-height', 'x-height', 'ascent'  и  'descent'

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

'panose-1' (Дескриптор)
Значение:  [<integer>]{10}
Начальное:  0 0 0 0 0 0 0 0 0 0
Носитель:  визуальный

Это дескриптор числа Panose -1, состоящего из десяти десятеричных чисел, разделённых пробелами. Список значений, разделённых запятыми, не допускается для данного дескриптора, от того что система Panose -1 может указывать, что диапазоны значений совпадают. Исходное значение - нуль, что обозначает "любое" для всякий цифры PANOSE; все шрифты будут совпадать с числом Panose, если применяется это значение. Применение дескриптора Panose -1 рекомендуется экстраординарно для латинских шрифтов. Добавочно см. Приложение C.

'stemv' (Дескриптор)
Значение:  <number>
Начальное:  не определено
Носитель:  визуальный

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

'stemh' (Дескриптор)
Значение:  <number>
Начальное:  не определено
Носитель:  визуальный

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

'slope' (Дескриптор)
Значение:  <number>
Начальное:  0
Носитель:  визуальный

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

'cap-height' (Дескриптор)
Значение:  <number>
Начальное:  не определено
Носитель:  визуальный

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

'x-height' (Дескриптор)
Значение:  <number>
Начальное:  не определено
Носитель:  визуальный

Это дескриптор высоты глифов нижнего регистра шрифта. Если значение не определено, дескриптор не применяется для подбора. Если данный дескриптор применяется, также должен применяться дескриптор 'units-per-em'. Данный дескриптор может обширно применяться совместно со свойством 'font-size-adjust', от того что вычисление значения z шрифтов-кандидатов требует наличия и font size, и x-height; следственно, рекомендуется включать данный дескриптор.

'ascent' (Дескриптор)
Значение:  <number>
Начальное:  не определено
Носитель:  визуальный

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

'descent' (Дескриптор)
Значение:  <number>
Начальное:  не определено
Носитель:  визуальный

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


15.3.7 Дескрипторы для синтеза: 'widths', 'bbox' и 'definition-src'

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

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

'widths' (Дескриптор)
Значение:  [<urange> ]? [<number> ]+ [,[<urange> ]? <number> ]+]
Начальное:  не определено
Носитель:  визуальный

Это дескриптор ширины глифов. Значением является список разделённых запятыми значений <urange>, за всем из которых следует одно либо больше значений ширины глифов. Если данный дескриптор применяется, также должен применяться дескриптор 'units-per-em'.

Если <urange> опущен, принимается диапазон U+0-7FFFFFFF, тот, что покрывает все символы и их глифы. Если заданных значений ширины глифов не довольно, то последнее в списке реплицируется для покрытия urange. Если задано слишком много значений ширины, то излишние игнорируются.

Скажем:

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, 2-й имеет ширину 1874 и 3-й - 1692. От того что предоставлено неудовлетворительное число значений ширины, последняя ширина реплицируется для покрытия оставшегося диапазона значений. Во втором примере установлена одиночная ширина - 1490 для каждого диапазона из 256 глифов, а после этого - определенные значения ширины для диапазона из 16 глифов.

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

'bbox' (Дескриптор)
Значение:  <number>, <number>, <number>, <number>
Начальное:  не определено
Носитель:  визуальный

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

'definition-src' (Дескриптор)
Значение:  <uri>
Начальное:  не определено
Носитель:  визуальный

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


15.3.8 Дескрипторы выравнивания: 'baseline', 'centerline', 'mathline' и 'topline'

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

'baseline' (Дескриптор)
Значение:  <number>
Начальное:  0
Носитель:  визуальный

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

'centerline' (Дескриптор)
Значение:  <number>
Начальное:  не определено
Носитель:  визуальный

Это дескриптор центральной базовой линии шрифта. Если значение не определено, ПА может применять эвристику: как midpoint/среднюю точку для  значений восхождения и нисхождения (ascent и descent). Если данный дескриптор применяется, также должен применяться дескриптор 'units-per-em'.

'mathline' (Дескриптор)
Значение:  <number>
Начальное:  не определено
Носитель:  визуальный

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

'topline' (Дескриптор)
Значение:  <number>
Начальное:  не определено
Носитель:  визуальный

Это дескриптор верхней базовой линии шрифта. Если не определен, ПА может применять примерное значение, такое как ascent. Если данный дескриптор применяется, также должен применяться дескриптор 'units-per-em'.


15.3.9 Примеры

Пример(ы):

Для данного списка шрифтов:
Swiss 721 light light & light italic
Swiss 721 roman, bold, italic, bold italic
Swiss 721 medium medium & medium italic
Swiss 721 heavy heavy & heavy italic
Swiss 721 black black, black italic, & black #2
Swiss 721 Condensed roman, bold, italic, bold italic
Swiss 721 Expanded roman, bold, italic, bold italic

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

@font-face {
    font-family: "Swiss 721";
    src: url("swiss721lt.pfr"); /* Swiss 721 light */
    font-style: normal, italic;
    font-weight: 200;
}
@font-face {
    font-family: "Swiss 721";
    src: url("swiss721.pfr"); /* The regular Swiss 721 */
}
@font-face {
    font-family: "Swiss 721";
    src: url("swiss721md.pfr"); /* Swiss 721 medium */
    font-style: normal, italic;
    font-weight: 500;
}
@font-face {
    font-family: "Swiss 721";
    src: url("swiss721hvy.pfr"); /* Swiss 721 heavy */
    font-style: normal, italic;
    font-weight: 700;
}
@font-face {
    font-family: "Swiss 721";
    src: url("swiss721blk.pfr"); /* Swiss 721 black */
    font-style: normal, italic;
    font-weight: 800,900; /* увлекательно, что italic весом 900 не существует */
}
@font-face {
    font-family: "Swiss 721";
    src: url(swiss721.pfr); /* Сжатый Swiss 721 */
    font-stretch: condensed;
}
@font-face {
    font-family: "Swiss 721";
    src: url(swiss721.pfr); /* Расширенный Swiss 721 */
    font-stretch: expanded;
}

15.4 Характеристики шрифта

15.4.1 Введение

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

Эти колляции применяются для изложения шрифта. Они не являются специфичными для CSS, либо таблиц жанров. В CSS всякая колляция описывается дескриптором шрифта. Эти колляции могут также отображаться в узлы VRML, CGM Application Structures, Java API либо альтернативные языки таблиц жанров. Шрифты, запрашиваемые одним носителем и хранящиеся в прокси-кэше, могут быть вторично использованы иным носителем, экономя время для загрузки и увеличивая пропускную способность сети, если всеобщая система колляций шрифтов применяется повсеместно.

Вот неполный список примеров:


15.4.2 Полное имя шрифта

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

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

Определение имени шрифта значимо потому, что оно (имя) является ссылкой на локально установленный шрифт. Значимо, дабы имя было определённым, не зависящим от платформы и приложения. В связи с этим, имя не должно быть зависимым от приложения и языка.

Идеальным решением будет имя, которое уникально идентифицирует всякую коллекцию данных шрифтов. Это имя не должно существовать в нынешней практике работы с данными шрифтов. Шрифты с одним базовым именем могут различаться с поддержкой нескольких дескрипторов. Некоторые из этих дескрипторов, таких как разные дополнения глифов в шрифте, могут быть незначащими, если необходимые глифы имеются в шрифте. Другие дескрипторы, такие как разные метрики ширины, делают шрифты с одним именем несовместимыми. Схоже, что немыслимо определить правило, по которому дозволено неизменно определить несовместимость и недопустить применение идеально соответствующей локальной копии данных шрифта с этим именем. Следственно, только диапазон символов ISO 10646 будет применяться для квалификации совпадения имён разновидностей шрифтов.

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


15.4.3 Единицы измерения  em-квадрата

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

Если значение не специфицировано, то немыслимо определить, что обозначает какая-нибудь метрика шрифта. Скажем, один шрифт имеет глифы нижнего регистра высотой 450, а меньший шрифт имеет высоту 890! Числа в реальности являются дробями; 1-й шрифт имеет 450/1000, а 2-й - 890/2048, что в и в самом деле поменьше.


15.4.4 Центральная базовая линия/(Central Baseline)

Задаёт позицию центральной базовой линии в  em-квадрате. Центральная базовая линия применяется в идеографическом письме для выравнивания, так же как нижняя базовая линия применяется для выравнивания в латинице, греческом письме и кириллице.


15.4.5 Кодировка шрифта

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

На практике, многие шрифты содержат разные глифы для одного и того же символа.
Какой из этих глифов применяется и зависит либо от правил языка, либо от предпочтений дизайнера.

В арабском языке, скажем, все буквы содержат 4 (либо 2) разных фигуры, в зависимости от того, применяется буква в начале слова, в середине, в конце либо изолированно. Во всех случаях это один символ, и, соответственно - только один символ в документе-источнике, но при печати он выглядит весь раз по иному.

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


15.4.6 Имя семейства шрифта

Специфицирует ту часть имени шрифта, где указывается имя семейства данного шрифта. Скажем, имя семейства для Helvetica-Bold - Helvetica, имя семейства для ITC Stone Serif Semibold Italic - ITC Stone Serif. Некоторые системы рассматривают "украшения", относящиеся к сжатию либо растяжению как часть имени семейства.


15.4.7 Ширина глифов

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


15.4.8 Ширина горизонтальной основы

Относится к доминантной основе шрифта. Может быть два либо больше значений разработанной при дизайне ширины. Скажем, основная вертикальная основа римских символов будет отличаться от тонкой основы "M" и "N" с засечками, плюс ещё могут быть различные значения ширины для символов нижнего и верхнего регистров в одном шрифте. Также, из-за дизайна либо по ошибке, все основы могут иметь слегка отличающиеся значения ширины.


15.4.9 Высота глифов верхнего регистра

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


15.4.10 Высота глифов нижнего регистра

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

Illustration of x-height

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

Height of Hebrew characters

15.4.11 Нижняя базовая линия

Задаёт позицию нижней базовой линии в  em-квадрате. Нижняя базовая линия применяется в латинском, греческом и кириллическом письме для выравнивания, так же как верхняя базовая линия применяется для выравнивания в языках, протекающих от санскрита.


15.4.12 Математическая базовая линия

Задаёт позицию математической базовой линии в  em-квадрате. Математическая базовая линия применяется в математических символах для выравнивания, так же как нижняя базовая линия применяется для выравнивания в латинском, греческом и кириллическом письме.


15.4.13 Максимальный ограничивающий бокс

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

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


15.4.14 Максимальная неакцентированная высота

Это расстояние в  em-квадрате от базовой линии до высшей точки, достигаемой глифом, исключая всякие акценты и знаки диакритики.

Diagram showing several glyphs and the maximum unaccented height


15.4.15 Максимальная неакцентированная глубина

Это расстояние в  em-квадрате от базовой линии до низшей точки, достигаемой глифом, исключая всякие акценты и знаки диакритики.

Diagram showing several glyphs and the maximum unaccented depth


15.4.16 Число Panose-1

Panose-1 это промышленный эталон систематизации шрифтов TrueType и спецтехнологии подбора шрифтов. Система PANOSE состоит из комплекта десяти цифр, которые категоризируют ключевые признаки шрифта латиницы, процедуры систематизации при создании этих чисел и программы Mapper, которая определяет ближайшее допустимое совпадение в данном комплекте шрифтов. Эта система может, с некоторыми изменениями, применяться в греческом и кириллическом письме, но не подходит для однокамерного и идеографического письма (иудейского, армянского, арабского, китайского/японского/корейского).


15.4.17 Диапазон символов ISO 10646

Обозначает репертуар глифов шрифта, относящийся к ISO 10646 (Unicode).От того что данный репертуар не сплошной (множество шрифтов не покрывает каждый ISO 10646), данный дескриптор содержит блоки диапазона, которые частично покрывают диапазон (не даётся никаких гарантий полного покрытия), и применяется для отказа от неподходящих шрифтов (тех, которые не имеют требуемых глифов). Он не указывает, что шрифт определённо имеет необходимые глифы, а только что есть толк загрузить шрифт и просмотреть его. См. подробную информацию о родных документах в [ISO10646].

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

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

Имеются другие систематизации письма, такие как система  Monotype (см. [MONOTYPE]) и предлагаемая система ISO. Эти системы дрянно расширяются.

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


15.4.18 Верхняя базовая линия

Задаёт позицию верхней базовой линии в em-квадрате. Применяется видами письма, протекающими от санскрита, для выравнивания, так же как нижняя базовая линия применяется в латинском, греческом и кириллическом письме.


15.4.19 Ширина вертикальной основы

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


15.4.20 Угол вертикального наклона

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


15.5 Алгоритм совпадения шрифтов

Эта спецификация расширяет алгорифм, данный ранее в CSS1. Данный алгорифм редуцируется до алгорифма спецификации CSS1, если таблицы жанров не содержат правил  @font-face.

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

  1. ПА создаёт БД (либо получает к ней доступ) соответствующих дескрипторов всех шрифтов, знаменитых ПА. Если имеется два шрифта с идеально идентичными дескрипторами, то один из них игнорируется. ПА может "знать" о шрифте, если он:
  2. Для данного элемента и для всякого символа в данном элементе ПА подбирает свойства шрифтов, применимые к данному элементу. Применяя полный комплект свойств, ПА применяет дескриптор 'font-family' для выбора пробного семейства шрифтов. Таким образом, совпадение с именем семейства будет обнаружено до совпадения всякого иного дескриптора. Остальные свойства тестируются касательно имени свойства в соответствии с критериями совпадения, описанными в всем дескрипторе. Если имеются совпадения для всех оставшихся свойств, это обозначает, что для данного элемента обнаружен совпадающий шрифт.
  3. Если в шаге 2 не обнаружено совпадений шрифта с 'font-family', ПА, исполняющие смысловое совпадение, могут продолжить проверку других дескрипторов, таких как x-height, ширина глифов и Panose -1, для идентификации иного пробного семейства шрифтов. Если имеются совпадения для всех оставшихся дескрипторов, это обозначает, что для данного элемента обнаружен совпадающий шрифт. Дескриптор 'font-family', отражающийся в свойства  CSS2, является именем запрашиваемого семейства шрифтов, а не каким-нибудь именем совпавшего по смыслу шрифта. Подразумевается, что ПА, не поддерживающие поиск совпадений по смыслу, пропускают данный шаг.
  4. Если в шаге 3 не обнаружено совпадений шрифта с 'font-family', ПА, исполняющие загрузку шрифтов, могут продолжить проверку дескриптора 'src' пробного шрифта из шагов 2 либо 3 для идентификации доступного сетевого источника и правильного формата. Если имеются совпадения для всех оставшихся дескрипторов, это обозначает, что для данного элемента обнаружен совпадающий шрифт, и ПА может попытаться загрузить данный источник шрифта. ПА может предпочесть вариант блокирования этой загрузки либо перейти к выполнению дальнейшего шага, пока шрифт грузится. Предполагается, что ПА, не исполняющие загрузку шрифтов, не подключённые к сети, имеющие отключённую загрузку шрифтов в установках пользователя, не имеющие доступа к запрошенному источнику по каким-нибудь причинам либо не имеющие возможности по каким-нибудь причинам применять загруженный шрифт, пропускают данный шаг.
  5. Если в шаге 3 не обнаружено совпадений шрифта с 'font-family', ПА, исполняющие синтез шрифта, могут продолжить проверку других дескрипторов, таких как  'x-height', ширина глифов  и Panose -1, для идентификации иного пробного семейства шрифтов для синтеза. Если имеются совпадения для всех оставшихся дескрипторов, это обозначает, что для данного элемента обнаружен совпадающий шрифт и синтез шрифта может начаться.  Предполагается, что ПА, не исполняющие синтез шрифта, пропускают данный шаг.
  6. Если шаги 3, 4 и 5 потерпели неудачу и в комплекте шрифтов имеется дальнейший альтернативный 'font-family', тогда для альтернативного 'font-family' повторяются шаги, начиная с шага 2.
  7. Если это совпавший шрифт, но он не содержит глиф(ы) нынешнего символа(ов), и если в комплекте шрифтов имеется альтернативный 'font-family', тогда для альтернативного 'font-family' повторяются шаги, начиная с шага 2. Дескриптор 'unicode-range предуготовлен для стремительного удаления из процесса обработки тех шрифтов, которые не имеют правильных глифов. Если дескриптор 'unicode-range' указывает, что шрифт содержит некоторые глифы в правильном диапазоне, данный шрифт может быть проверен ПА на присутствие необходимого (глифа).
  8. Если в семействе, выбранном в шаге2, нет надобного шрифта, тогда применяется наследуемое либо зависящее от ПА значение 'font-family', и всё повторяется с шага 2 с применением наилучшего совпадения, которое может быть получено в данном шрифте. Если определенный символ не может быть выведен с применением данного шрифта, ПА должен осведомить, что символ не выводится (скажем, применяя глиф 'отсутствующий символ').
  9. ПА, исполняющие прогрессивное отображение и ждущие загрузки шрифтов, могут, позже удачного заключения загрузки, применять загруженный шрифт в качестве семейства шрифтов. Если в загруженном шрифте отсутствуют некоторые глифы, имеющиеся во временном шрифте, загруженный (новейший) шрифт не применяется, а продолжается применение временного шрифта.

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

Правила совпадения для дескрипторов из вышеизложенного (2) таковы:

  1. 'font-style' рассматривается первым. Принимается 'italic', если имеется шрифт в БД ПА, обозначенный ключевым словом CSS 'italic' (предпочтительно) либо 'oblique'.
    Напротив значения обязаны подбираться верно, или  font-style терпит неудачу.
  2. 'font-variant' рассматривается дальнейшим. 'normal' соответствует шрифту, не помеченному 'small-caps'; 'small-caps' соответствует (1) шрифту, помеченному как 'small-caps', (2) шрифту, в котором малые заглавные синтезируются, либо (3) шрифту,  в котором все буквы нижнего регистра заменяются на заглавные. Шрифт small-caps может быть синтезирован электронным обмером заглавных букв типичного шрифта.
  3. 'font-weight' рассматривается дальнейшим, он никогда не терпит неудачу. (См. ниже 'font-weight'.)
  4. 'font-size' должен подбираться в пределах возможных для данного ПА границ. (Обыкновенно размеры измеряемых шрифтов округляются до ближайшего значения в пикселах, а допуск для растровых шрифтов может быть в пределах 20%.) Дальнейшее вычисление, скажем, в значениях 'em' других свойств, основывается на используемом значении 'font-size', а не на том, которое специфицировано.


15.5.1 Отображение значений ширины шрифтов в имена шрифтов

Значения свойства 'font-weight' задаются по цифровой шкале, где значение '400' (либо 'normal') соответствует шрифту "normal" данного семейства шрифтов. Наименование веса, ассоциированное с этим шрифтом, традиционно: Book, Regular, Roman, Normal либо изредка Medium.

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

Нет никаких гарантий, что в наличии будет больше тёмный шрифт для всякого значения 'font-weight'; скажем, некоторые шрифты могут иметь только разновидности normal и bold, другие могут иметь 8 разновидностей разного веса.

Следующие два примера показывают нормальные случаи отображения.

Предположим, что в семействе "Rattlesnake" имеется четыре веса, от ясного до тёмного: Regular, Medium, Bold, Heavy.

Первый пример отображения весов
Доступные разновидности Назначения Заполнение дыр
"Rattlesnake Regular" 400 100, 200, 300
"Rattlesnake Medium" 500  
"Rattlesnake Bold" 700 600
"Rattlesnake Heavy" 800 900

 

Предположим, что в семействе "Ice Prawn" имеется шесть весов: Book, Medium, Bold, Heavy, Black, ExtraBlack. Подметьте, что в этом примере ПА решает не назначать цифровое значение для "Example2 ExtraBlack".

Второй пример отображения весов
Доступные разновидности Назначения Заполнение дыр
"Ice Prawn Book" 400 100, 200, 300
"Ice Prawn Medium" 500  
"Ice Prawn Bold" 700 600
"Ice Prawn Heavy" 800  
"Ice Prawn Black" 900  
"Ice Prawn ExtraBlack" (none)  


15.5.2  Примеры совпадения шрифтов

Пример(ы):

В дальнейшем примере определена специфическая разновидность шрифта - Alabama Italic. Изложение шрифта panose и URI-источник для запроса шрифта на сервере truetype также предоставлены. Дескрипторы font-weight и font-style предоставлены для изложения шрифта. Объявление также уведомляет, что вес совпадёт с любым запросом в диапазоне от 300 до 500. Семейство шрифтов - Alabama, а имя украшенного шрифта - Alabama Italic.

@font-face {
  src: local("Alabama Italic"),
       url(http://www.fonts.org/A/alabama-italic) format("truetype");
  panose-1: 2 4 5 2 5 4 5 9 3 3;
  font-family: Alabama, serif;
  font-weight:   300, 400, 500;
  font-style:  italic, oblique;
}

Пример(ы):

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

@font-face {
  src: local("Helvetica Medium"),
       url(http://www.fonts.org/sans/Helvetica_family) format("truedoc");
  font-family: "Helvetica";
  font-style: normal
}
@font-face {
  src: local("Helvetica Oblique"),
       url("http://www.fonts.org/sans/Helvetica_family") format("truedoc");
  font-family: "Helvetica";
  font-style: oblique;
  slope: -18
}

Пример(ы):

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

@font-face {
  font-family: Excelsior;
  src: local("Excelsior Roman"), url("http://site/er") format("intellifont");
  unicode-range: U+??; /* Latin-1 */
}
@font-face {
  font-family: Excelsior;
  src: local("Excelsior EastA Roman"), url("http://site/ear") format("intellifont");
  unicode-range: U+100-220; /* Latin Extended A и B */
}
@font-face {
  font-family: Excelsior;
  src: local("Excelsior Cyrillic Upright"), url("http://site/ecr") format("intellifont");
  unicode-range: U+4??; /* Cyrillic */
}
@font-face {
  font-family: Excelsior;
  src: url("http://site/excels") format("truedoc");
  unicode-range: U+??,U+100-220,U+4??;
}

Пример(ы):

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

@font-face {
  src: local("Palatino"),
	  local("Times New Roman"),
	  local("New York"),
	  local("Utopia"),
	  url("http://somewhere/free/font");
  font-family: serif;
  font-weight: 100, 200, 300, 400, 500;
  font-style: normal;
  font-variant: normal;
  font-size: all
}