Задать вопрос
@SuperProshka

Как работает FontFace?

Добрый день!
Я разбираюсь с тем, как устроены шрифты, чтобы дать возможность выбирать их в своем web редакторе.
Я взял гарнитуру Roboto https://fonts.googleapis.com/css2?family=Roboto:it...
В ней много шрифтов (в моем понимании woff2 файлов).
Далее я с помощью FontFace (doc) добавляю только один шрифт из гарнитуры Roboto:
/* latin */
@font-face {
  font-family: 'Roboto';
  font-style: normal;
  font-weight: 100 900;
  font-stretch: 100%;
  font-display: swap;
  src: url(https://fonts.gstatic.com/s/roboto/v47/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3yUBHMdazQ.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

Добавляю так:
loadFontToDocument(fontFamily: string, src: string) {
        return new Promise<FontFace>(function(resolve, reject) {
            const font = new FontFace(fontFamily, "url(https://fonts.gstatic.com/s/roboto/v47/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3yUBHMdazQ.woff2)");
            font.load().then(function(loadedFont) {
                document.fonts.add(loadedFont);
                resolve(font);
            }).catch(function(_error) {
                reject("document font loading error. Source " + src);
            })

            setTimeout(() => {
                reject("document font loading timed out. Source " + src);
            }, 10000);
        });
    }

После этого на web страничке я могу выставить font-family Roboto для какого-нибудь текста.
НО: я также могу выставить font-style italic, хотя в гарнитуре Roboto (по первой ссылке) для него есть отдельный woff2
Вопрос: зачем тогда нужен отдельный отдельный FontFace блок если и без него все работает?
И как понять какой font-weight и font-style можно позволять выставлять для выбранного шрифта.
  • Вопрос задан
  • 55 просмотров
Подписаться 1 Средний 3 комментария
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы