微信小程序加载第三方字体

1、加载本地字体

做小程序项目时,有时为了提升页面展示效果,会引入一些第三方字体,引入方式如下代码片段

/*每个页面公共css */
@font-face {
    font-family: "alifont"; // 是你封装的名字
    src: url('/static/css/subset-AlibabaPuHuiTiR.ttf') format('truetype'); // 你字体包的位置
}

而常规字体文件比较大(例如以上阿里巴巴普惠字体--Alibaba-PuHuiTi-Regular.otf,字体文件大小6.9M),小程序的包大小又有2M的限制,引入本地字体会超包。

2、加载外部字体

为了解决以上问题,会使用加载外部字体,如下代码片段所示:

@font-face {
    font-family:'alifont';
    src:url('https://www.jiandatech.com/test/vape/Alibaba-PuHuiTi-Regular.otf') format('opentype');
}

 或者

wx.loadFontFace({
    family: 'alifont',
    source: 'url("https://www.jiandatech.com/test/vape/Alibaba-PuHuiTi-Regular.otf")',
    success: function (e) {
        console.log(e, '动态加载字体成功')
    },
    fail: function (e) {
        console.log(e, '动态加载字体失败')
    }
})

 缺点:加载会很慢,会有明显的默认字体切换到外部字体的过程,体验教差,特别是字体文件越大,加载的速度越慢,有些小程序页面甚至无法加载成功

3、简化字体文件后再本地引入

针对1和2的问题,我们可以对字体进行抽取,抽出页面中需要用到的字,文字抽取工具Online @font-face generator — Transfonter,如下图所示操作

 抽取后字体文件就从原来的6.9M变成了9k,然后就可以采用本地文件引入的方式加载第三方字体,有比较好的交互体验。

附录:@font-face的format属性

format :字体的格式,主要用于浏览器识别,一般有以下几种——truetype,opentype,truetype-aat,embedded-opentype,avg等。

对于@font-face而言,兼容性问题就是各浏览器所能识别的字体格式不尽相同。

TrueType格式(.ttf)

Windows和Mac上常见的字体格式,是一种原始格式,因此它并没有为网页进行优化处理。

浏览器支持:IE9+,FireFox3.5+,Chrome4.0+,Safari3+,Opera10+,IOS Mobile Safari4.2+

OpenType格式(.otf)

以TrueType为基础,也是一种原始格式,但提供更多的功能。

浏览器支持:FireFox3.5+,Chrome4.0+,Safari3.1+,Opera10.0+,IOS Mobile Safari4.2+

Web Open Font格式(.woff)

针对网页进行特殊优化,因此是Web字体中最佳格式,它是一个开放的TrueType/OpenType的压缩版,同时支持元数据包的分离。

浏览器支持:IE9+, FireFox3.5+, Chrome6+, Safari3.6+,Opera11.1+

Embedded Open Type格式(.eot)

IE专用字体格式,可以从TrueType格式创建此格式字体。

浏览器支持:IE4+

SVG格式(.svg)

基于SVG字体渲染的格式。

浏览器支持:Chrome4+, Safari3.1+, Opera10.0+, IOS Mobile Safari3.2+

为解决兼容性问题,一般引入字体如下代码片段所示:

@font-face {
    font-family: ‘YourWebFontName’;
    src: url(‘YourWebFontName.eot’); /* IE9 Compat Modes */
    src: url(‘YourWebFontName.eot?#iefix’) format(‘embedded-opentype’), /* IE6-IE8 */
         url(‘YourWebFontName.woff’) format(‘woff’), /* Modern Browsers */
         url(‘YourWebFontName.ttf’) format(‘truetype’), /* Safari, Android, iOS */
         url(‘YourWebFontName.svg#YourWebFontName’) format(‘svg’); /* Legacy iOS */
}

  • 11
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值