Как загрузить пользовательские шрифты по URL с помощью Google WebFontLoader

Мне нужно загрузить шрифты (.ttf, .otf) во время выполнения по требованию с помощью WebFontLoader.

Для каждого шрифта есть только fontFamily и url.

Похоже, в WebFontLoader есть опция загрузки шрифтов с использованием файлов.css, таких как:

WebFont.load({
    custom: {
        families: [
            'font-family-name'
        ],
        urls: [
            'path-to-css'
        ]
    }
});

Есть ли способ сделать это без файла.css, но с прямым путем к файлу шрифта?

Я не хотел бы использовать какие-либо внешние сайты для хранения файлов шрифтов.

1 ответ

Решение

Единственный возможный способ загрузки, чтобы загрузить и обнаружить загруженный шрифт, который я нашел, это создать <style> элемент с @font-face внутри и добавьте его в DOM.

let markup = [
        '@font-face {\n',
        '\tfont-family: \'', font-family-name, '\';\n',
        '\tfont-style: \'normal\';\n',
        '\tfont-weight: \'normal\';\n',
        '\tsrc: url(\'', font-file-url, '\');\n',
        '}\n'
    ].join('');
});

let style =  document.createElement('style');
style.setAttribute('type', 'text/css');
style.innerHTML = markup;

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

WebFont.load({
    custom: {
        families: [
            'font-family-name'
        ],
        active: () => {
            //triggers when font has been loaded successfully
        },
        inactive: () => {
            //triggers when font loading failed
        }
    }
});
Другие вопросы по тегам