跳到主要内容

基于 new FontFace 加载

2024年08月06日
柏拉文
越努力,越幸运

一、认识


二、动态加载字体文件


解决方案: 在 Javascript层面,浏览器也提供了 CSS Font Loading API 来操作字体。它在大部浏览器中已经得到了支持。通过 JS API 可以比较方便的控制页面的呈现。可以在字体加载前做些交互上的优化等

具体实现

const lazyLoadFontFamily = (fontFamily: string) => {
if (!fontFamily) {
return;
}

const newFont = new FontFace(fontFamily, `url("${currentCdnUrl}custom-course-cover/fonts/${fontFamily}.ttf")`);

document.fonts.add(newFont);
};

三、动态加载具体字体


解决方案: 在 Javascript层面,浏览器也提供了 CSS Font Loading API 来操作字体。它在大部浏览器中已经得到了支持。通过 JS API 可以比较方便的控制页面的呈现。可以在字体加载前做些交互上的优化等

实现如下:

const lazyLoadFontFamily = (fontFamily: string) => {
if (!fontFamily) {
return;
}

const newFont = new FontFace(fontFamily, `url("http://xxxx:8080/fontmin?font=${fontname}&text=${encodeURIComponent(text)}")`);

document.fonts.add(newFont);
};

通过 JavaScript 添加一个 CSS 样式。浏览器会自行解析并在下载完成字体后显示中文字体。

参考方案


动态中文字体加载方案