Время, чтобы узнать кое-что о том, как шрифты и CSS работают вместе.
Отдельные файлы шрифтов (так, на современных компьютерах это отдельные ttf
и otf
файлов для Интернета, который также включает в себя woff
и woff2
файлы) кодируют одиночный вес. Шрифт, подобный «Roboto-Regular», содержит только один вес глифов, поэтому, если CSS загружает только этот шрифт, вы можете изменить font-weight
столько, сколько хотите, но ничего не сделаете, потому что вы не сказали движку CSS, что делать. Он просто использует один и тот же шрифт.
Вместо этого вам нужно указать движку CSS, что вам нужны несколько разных шрифтов для разных весов. шрифты Google делает это для вас, если вы запрашиваете различные веса (как указано в других ответах), но то, что происходит на самом деле является то, что шрифты Google генерировать CSS так:
@font-face {
font-family: Roboto;
font-weight: normal;
font-style: normal;
src: url(roboto-regular.woff) format('WOFF')
}
@font-face {
font-family: Roboto;
font-weight: 300;
font-style: normal;
src: url(roboto-light.woff) format('WOFF')
}
@font-face {
font-family: Roboto;
font-weight: 200;
font-style: normal;
src: url(roboto-thin.woff) format('WOFF')
}
@font-face {
font-family: Roboto;
font-weight: 100;
font-style: normal;
src: url(roboto-ultra-thin.woff) format('WOFF')
}
etc.
И из-за того, CSS двигатель вашего браузера теперь знает что, почему вы говорите font-weight: 100
, для этого нужно вместо шрифта robot-ultra-thin
вместо обычного шрифта.
«Но почему это работает на такие вещи, как Times
?»
Хороший вопрос: поскольку системные шрифты уже представляют собой большие коллекции различных файлов шрифтов. Обратите внимание, что когда вы используете CSS, вы запрашиваете font-family
. «Семейная» часть важна: вы не запрашиваете отдельные шрифты, вы просите о целом семействе шрифтов, и по умолчанию из этой семьи вы просите стиль: нормальный, вес: нормальная версия. Ваша ОС идеально подходит для поиска нужного файла с одним шрифтом, который будет использоваться для вашего браузера, для этой цели, и поэтому, когда вы, как и для font-family: Times
, загрузите ваш бобер Times-regular.ttf
или что-то подобное.
Но если в семействе шрифтов не так много весов, как есть веса CSS, то никакое количество слов «weight: 100» не собирается создавать семейство шрифтов без ультратонкого шрифта, выглядящего ультратонким. Если ресурс шрифта не существует (либо потому, что он буквально не существует, либо потому, что вы забыли преподавать CSS, какой файл шрифта вам нужен для веса: 100), результат не определен, хотя и предсказуем (браузер будет в конечном итоге используя самый близкий соответствующий ему шрифт, знает), и вы не должны использовать CSS с неопределенным поведением. Вы на крючке, чтобы убедиться, что он определен =)