方式一: Taro.loadFontFace
// js
Taro.loadFontFace({
global:true, // 版本 2.10.0 后 全局app.js 使用
family: 'font',
source: 'url("https://xxx.com/font/font.TTF")',// 不是真的链接
success: (res) => {
console.log(res.status)
this.setData({ loaded: true })
},
fail: function (res) {
this.setData({ loaded: false })
}
});
.root {
font-family: 自定义字体名称;
}
微信需要注意的点:
- 字体文件返回的 contet-type 参考 font,格式不正确时会解析失败。
- 字体链接必须是https(ios不支持http)
- 字体链接必须是同源下的,或开启cors支持
- 微信2.10.0 以前版本仅在调用页面生效。
支付宝需要注意的点:
- 目前支持 woff,otf,ttf,sfnt 字体,字体文件地址必须是 https 协议。
- 基础库 1.11.0 或更高版本;支付宝客户端 10.1.32 或更高版本,若版本较低,建议采取 兼容处理。
方式二: 转base64格式
- 下载要使用的字体,建议TTF格式
- 打开网站 transfonter.org/ 转换格式,得到压缩包
- 将压缩包解压后,把stylesheet.css的内容复制到小程序的公共样式,就可以使用了
如何压缩字体文件
- 全局安装 font-spider:
npm install font-spider -g
- 新建文件夹并将字体文件放入, 然后新建一个
index.html,里面用一个元素包含所有的你想要提取的文字,比如 0-9,并为这个元素定义上你想要的特殊字体
<h1>0123456789</h1>
<style>
@font-face {
font-family: 'sourceHan';
src: url('./字体文件的名称');
font-weight: normal;
font-style: normal;
}
h1 {
font-family: 'sourceHan';
}
</style>
- 在这个 html 文件所在的目录执行以下命令:
font-spider index.html
- 这时候,原来的
字体文件名称.ttf就会被移动到.font-spider/目录下,而原来位置的字体会被替换成只提取了0-9的字体文件。这个体积相差了好几个数量级的: