小程序压缩使用特殊字体

717 阅读1分钟

方式一: 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: 自定义字体名称;
}

微信需要注意的点:

  1. 字体文件返回的 contet-type 参考 font,格式不正确时会解析失败。
  2. 字体链接必须是https(ios不支持http)
  3. 字体链接必须是同源下的,或开启cors支持
  4. 微信2.10.0 以前版本仅在调用页面生效。

支付宝需要注意的点:

  1. 目前支持 woff,otf,ttf,sfnt 字体,字体文件地址必须是 https 协议。
  2. 基础库 1.11.0 或更高版本;支付宝客户端 10.1.32 或更高版本,若版本较低,建议采取 兼容处理

方式二: 转base64格式

  1. 下载要使用的字体,建议TTF格式
  2. 打开网站 transfonter.org/ 转换格式,得到压缩包
  3. 将压缩包解压后,把stylesheet.css的内容复制到小程序的公共样式,就可以使用了

如何压缩字体文件

  1. 全局安装 font-spider:
npm install font-spider -g
  1. 新建文件夹并将字体文件放入, 然后新建一个 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>
  1. 在这个 html 文件所在的目录执行以下命令:
font-spider index.html
  1. 这时候,原来的 字体文件名称.ttf 就会被移动到 .font-spider/ 目录下,而原来位置的字体会被替换成只提取了 0-9 的字体文件。这个体积相差了好几个数量级的: