uniapp加载第三方字体(微信小程序、h5测试通过)

方法一:CSS本地加载

  • 实例

    App.vue

    @font-face {
         font-family: test1-icon;
         src: url('~@/static/iconfont.ttf');
     }
    
  • 优点

    • 方便,字体下载下来就能引入
  • 缺点

    • 小程序不支持在css中使用本地文件,包括本地的背景图和字体文件,需以base64方式方可使用。

方法二:CSS远程加载

  • 实例:

    App.vue文件

    @font-face{
        font-family: font-name;
        src:url('https://XXXXX/font.ttf');
    }
    

    在h5页面是没有问题的,在微信小程序的开发者工具里面有用,但是(安卓)真机调试没有用

  • 优点

    • 不用占用本地代码容量,微信小程序发布的代码主包压缩后不能超过2M,所以将这些静态资源放到服务器上是一个很好的节省容量的方法
    • 内存小的话可以全部字体都放进去
  • 缺点

    • 微信小程序(安卓)真机没有效果,只有h5有用

    • 字体文件太大即没有用

方法三:CSS本地引入base64的CSS文件

  • 用工具将ttf文字文件,转成base64形式,并通过css引入

    https://www.giftofspeed.com/base64-encoder/这个网站可以将ttf文件转成base64,

    网站下面有三种方法引入,我选的是最后一种,因为我放进去的是ttf文件,所以也是用最下面那种方法,可以新建一个文件

    font-name.css

    @font-face{font-family:'yourfontname'; src: url(data:application/font-ttf;charset=utf-8;base64,YOUR BASE64 STRING HERE) format('truetype');}
    

    App.vue

    @import '~@/static/font/font-name.css';
    
  • 优点

    • 不用操作服务器,可以本地随时引入或者删除
  • 缺点

    • 对于小的字体文件,这个方法在h5和小程序端都有用,但是对于大的字体文件,却没有用,这是因为

方法四:使用API uni.loadFontFace()

方法五:提取需要的文字,并用方法三引入

  • 工具:https://www.lcddjm.com/font
  • 将提取后生成的ttf文件放入方法三中提到的工具里,并用方法三的方式引入
  • 该方法只适用于,第三方字体文件是静态不变化的
  • 在h5和小程序端都有用

综上所述

​ 因为工作时间不便反复测试,所以很多出现问题的原因都没有深究,只是找到了解决方法后就停止了,现在做的项目只需要兼容h5和微信小程序端,所以在其它端并没有测试,仅作参考。

posted @ 2020-11-25 22:47  梦娜丽莎  阅读(10704)  评论(0)    收藏  举报