如何使用JavaScript导入字体文件?

如何使用JavaScript导入字体文件?,javascript,web,font-face,webfonts,Javascript,Web,Font Face,Webfonts,CSS有一条规则,允许我们“使用”自定义字体 JavaScript有这个功能吗 更具体地说,是否可以在不使用CSS@font-face规则的情况下“使用”自定义字体?是的,您可以: document.body.style.fontFamily = '...'; 这是一把小提琴: 这只会将预定义字体添加到元素中 这不会向页面添加字体样式。为此,如果您知道CSS,您可能必须使用CSS,您可以使用文档。。。我想这可以算作使用CSS,但它会起作用。没有。Javascript可以操纵DOM,但它不关心格

CSS有一条规则,允许我们“使用”自定义字体

JavaScript有这个功能吗

更具体地说,是否可以在不使用CSS
@font-face
规则的情况下“使用”自定义字体?

是的,您可以:

document.body.style.fontFamily = '...';
这是一把小提琴:

这只会将预定义字体添加到元素中


这不会向页面添加字体样式。为此,如果您知道CSS,您可能必须使用CSS,您可以使用
文档。。。我想这可以算作使用CSS,但它会起作用。没有。Javascript可以操纵DOM,但它不关心格式。

除了使用
@font-face
规则外,无法让浏览器从网络加载字体。从理论上讲,您可以从JavaScript创建
@font-face
规则,而不必使用
document.write
(或
document.createElement(“样式”)
等),如果您使用;但是我现在不指望在任何浏览器中实现它。

有一种实验性的技术,允许在javascript中加载和使用字体。目前正在使用chrome和firefox

fetch('/static/media/ProximaNova-Regular.otf')
        .then(resp => resp.arrayBuffer())
        .then(font => {
            const fontFace = new FontFace('Proxima-Nova', font);
            document.fonts.add(fontFace);
            document.body.style.fontFamily = '"Proxima-Nova", Arial';
        })

嘿,这很酷,但还有其他选择吗?(或更干净的黑客)嗯,我对JavaScript了解不多,所以这是我现在唯一能想到的事情。“是的,你可以”,但这不是问题的所在。