赞
踩
之前发过一篇教程:如何在钉钉小程序使用iconfont
在项目开发完成后,测试时,发现在android上iconfont不会生效
在请教了钉钉的大佬后,得出原因,低版本android他不支持woff2格式的字体,必须要使用woff格式字体,由于从默认iconfont网站上下载来的字体,woff2排在woff之前,所以导致android无法正确识别到woff了
一般情况下你的iconfont.acss可能是这个样子的:
@font-face {font-family: "iconfont";
src: url('iconfont.eot?t=1557465831153'); /* IE9 */
src: url('iconfont.eot?t=1557465831153#iefix') format('embedded-opentype'), /* IE6-IE8 */
url('data:application/x-font-woff2;charset=utf-8;base64,d09GMgABAAAAA...') format('woff2'),
url('iconfont.woff?t=1557465831153') format('woff'),
url('iconfont.ttf?t=1557465831153') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+ */
url('iconfont.svg?t=1557465831153#iconfont') format('svg'); /* iOS 4.1- */
}
原因参考:Custom fonts (woff2) doesn’t work in Android making App with Visual Studio Comunity and Cordova
思路就是干掉iconfont.acss中的woff2,但之后又发现,钉钉小程序无法识别本地的woff文件…
这时,我们有两个方案来解决这个问题
1.首先找到你的iconfont.woff文件
2.找一个能在线转换woff为base64格式的网站,这里推荐:https://transfonter.org/
3.勾选base64 encode
,其他默认,截图仅供参考
点击convert后,你应该得到了一份转化后的字体文件,打开stylesheet.css
,找到woff格式的base64代码,整行复制,放到你钉钉小程序的iconfont.acss里替换原来的font-face的src,其他类型的iconfont其实都可以删掉了
4.重点来了!!!必须要把url里的base64代码用''
括起来,不然还是不能在钉钉里用
完成后你的iconfont.acss应该是这样子的
@font-face {
font-family: "iconfont";
src: url('data:application/font-woff;charset=utf-8;base64,d09GRgABAAAAAAkUAA0AAAAADXAA...') format('woff');
/* 转化成base64的woff */
}
.... //其他不动,省略
这是钉钉大佬提供的方案,由于我直接用的base64,这个方案我还没实践过,其实很简单
1.把本地的woff上传到服务器上,
2.内联的woffurl改成https
由于我没实践过,希望有人能测试下并在评论里反馈下是否可用,这里提供个大概的伪代码
@font-face {font-family: "iconfont";
src: url('https://yourdomain/iconfont.woff') format('woff');
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。