[微信小程序]字體文件,字體圖標(.ttf,.woff,woff2)等無法顯示問題


一. 背景

項目引用了第三方UI框架Vant-weapp,但是前幾天Vant的cdn被運營商封禁,導致van-icon無法使用。

有贊官方在Github上給出了在小程序app.wxss上添加以下代碼的臨時解決方案:

 1 @font-face {
 2   font-weight: normal;
 3   font-family: 'vant-icon-temp';
 4   font-style: normal;
 5   font-display: auto;
 6   src: url('https://img.yzcdn.cn/vant/vant-icon-84f687.woff2') format('woff2'),
 7     url('https://img.yzcdn.cn/vant/vant-icon-84f687.woff') format('woff'),
 8     url('https://img.yzcdn.cn/vant/vant-icon-84f687.ttf') format('truetype');
 9 }
10 
11 .van-icon {
12   font-family: 'vant-icon-temp' !important;
13 }

我更新代碼后,van-icon無法使用的問題解決了。

但是,終究是使用了第三方的cdn,存在cdn又掛了或者有贊停止維護的風險

因此,決定將字體圖標文件本地化部署(我這邊項目要求不高,因為本小程序是給公司內部人員使用,如果是面向外界人員的,建議還是使用專業cdn服務)。

二. 嘗試解決

解決方案: 使用上面vant官方提供的代碼,把相應的ttf,woff,woff2文件下載下來放到本地服務器,替換相應cdn地址為我自己本地化后地址:

 

然后調試,無法正常顯示,提示以下錯誤:

.woff2提示404,但是woff文件OK。把鏈接拿到瀏覽器上依然不行,懷疑是文件類型問題;

因為后端服務器是IIS的,檢查一下,發現不支持.woff2格式文件,在MIME類型中加上:

 

再調試,不再提示錯誤,微信開發工具端正常顯示。

真機調試,顯示出現異常,原本圖標的地方顯示成了一個個×或空白。

查閱資料,懷疑是因為跨域的問題,因為我的小程序開發跨域的Origin有一個,又不能開放所有的origin,那么到底是哪一個origin,

嘗試了一下加入https://weixin.qq.com結果問題就解決了!萬萬沒想到是微信跨域的問題。。。

 

 

至此,問題解決。

另外還有一種本地化的方式是把ttf,woff等字體文件轉為base64放在小程序源文件中打包,但是我原本一個20k的ttf轉base64后差不多60k,不能接受,所以還是使用了本地服務器部署網絡化的方式。

 

1.

參考鏈接:

1. 字體文件跨域問題:https://blog.csdn.net/weixin_39015132/article/details/82657681

2. 字體文件base64后本地化: https://www.jianshu.com/p/3f7e7e559098

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM