// 建议循环调用方法,而不是这个方法内循环下载 // 下载字体文件,注意要把字体域名加到后台downloadFile白名单中 function downloadFont(fontUrl, filePath, fontFamily) { uni.downloadFile({ url: fontUrl, success: res => { uni.getFileSystemManager().saveFile({ // 下载成功后保存到本地 tempFilePath: res.tempFilePath, filePath, success: res => { // 加载字体 loadFontFace(fontFamily, res.savedFilePath) } }) } }) } // 加载文件字体转 base64,load function loadFontFace(fontFamily, filePath) { // 读文件 uni.getFileSystemManager().readFile({ filePath, // 本地文件地址 encoding: 'base64', success: res => { uni.loadFontFace({ global: true, // 是否全局生效 scopes: ['webview', 'native'], //native可能有点问题,超哥生个海报试一下 family: fontFamily, // 字体名称 source: `url("data:font/ttf;charset=utf-8;base64,${res.data}")`, success(res) { console.log(fontFamily + '加载成功:' + res.status) }, fail: function(res) { // console.log(res) // console.log(fontFamily + '加载失败') }, }) } }) } // fontUrl: 字体地址 // filename: 存储文件路径 // fontFamily: css 中字体的 family export const loadCloudFontFace = function(fontUrl, filename, fontFamily) { const filePath = `${wx.env.USER_DATA_PATH}/${filename}` uni.getFileSystemManager().access({ path: filePath, success: () => { loadFontFace(fontFamily, filePath) console.log('从本地加载了字体'); }, fail: () => { downloadFont(fontUrl, filePath, fontFamily) console.log('从外部加载了字体', fontUrl); } }) } export default loadCloudFontFace