修复钉钉小程序 iconfont在android客户端无法正常显示

问题

之前发过一篇教程:如何在钉钉小程序使用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.使用base64内联字体文件

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 */
}
.... //其他不动,省略

2.使用https路径的字体文件

这是钉钉大佬提供的方案,由于我直接用的base64,这个方案我还没实践过,其实很简单

1.把本地的woff上传到服务器上,
2.内联的woffurl改成https

由于我没实践过,希望有人能测试下并在评论里反馈下是否可用,这里提供个大概的伪代码

@font-face {font-family: "iconfont";
  src: url('https://yourdomain/iconfont.woff') format('woff');
}
发布了35 篇原创文章 · 获赞 9 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/qq_31061615/article/details/102626961