Files
yunzerwebsiteallinone/uniapp/scripts/gen-fa-fonts.js
T

49 lines
1.5 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/**
* 从 node_modules 的 woff2 生成 base64 内嵌字体样式。
*
* 小程序 wxss 的 @font-face 不支持本地路径(渲染层报 do-not-use-local-path,
* 图标全部变豆腐块),只能用网络 URL 或 base64;base64 免部署免域名配置,
* 三端(H5/APK/小程序)统一可用。
*
* 升级 @fortawesome/fontawesome-free 后执行: node scripts/gen-fa-fonts.js
* 产物 src/styles/fontawesome.scss 为生成文件,请勿手改。
*/
const fs = require('fs')
const path = require('path')
const fonts = [
{
file: 'fa-solid-900.woff2',
family: 'Font Awesome 7 Free',
weight: 900,
style: 'normal'
},
{
file: 'fa-brands-400.woff2',
family: 'Font Awesome 7 Brands',
weight: 400,
style: 'normal'
}
]
const webfontDir = path.join(
__dirname,
'../node_modules/@fortawesome/fontawesome-free/webfonts'
)
const outputPath = path.join(__dirname, '../src/styles/fontawesome.scss')
const blocks = fonts.map((f) => {
const b64 = fs.readFileSync(path.join(webfontDir, f.file)).toString('base64')
return `@font-face {
font-family: '${f.family}';
font-style: ${f.style};
font-weight: ${f.weight};
font-display: block;
src: url('data:font/woff2;base64,${b64}') format('woff2');
}`
})
const content = `/* 自动生成,请勿手改:node scripts/gen-fa-fonts.js */\n\n${blocks.join('\n\n')}\n`
fs.writeFileSync(outputPath, content, 'utf8')
console.log(`Generated base64 font-face (${(content.length / 1024).toFixed(0)} KB) -> src/styles/fontawesome.scss`)