小程序本地iconfont工具开发

npm包:www.npmjs.com/package/min...

github: github.com/ahao430/min...

基于svgtofont开发。

背景:

平时小程序开发过程中,UI给的是一个个的svg,没有系统的iconfont维护。小程序端使用iconfont的话,首先要上传维护iconfont仓库,然后每次要转base64再下载,在项目中更新,比较麻烦。

在web端直接使用svg更加方便,如svg-sprite-loader,项目本地维护svg即可;但是小程序端svg只能作为图片使用。

思路:

svgtofont可以将本地的svg转成iconfont,但是看了文档,没有转成base64格式的选项,转base64的话,还是需要去iconmoon等网站工具。想到基于svgtofont生成的文件,继续转base64,再替换到css中,试验可行。

实现:

  1. svg转font

从www.iconfont.cn/下载了几个svg图片,引入svgtofont,传入src和dist路径,运行报错,发现下下来的svg代码中包含xml的头部,删掉就成功运行。

安装svgo,先遍历svg目录,优化后svg头部去掉了。

再次运行,成果在dist目录生成iconfont的html,css,字体文件。

  1. font转base64

用fs.readFileSync读取ttf字体文件,再用Buffer.from(file).toString('base64')转成base64字符串。

查看网上手动转的base64格式iconfont的css,发现@font-face中,src的url换成了src: url("data:font/ttf;charset=utf-8;base64,xxxx")。读取css文件,用刚刚生成的base64字符串替换src中的部分,写到本地文件。

引入这个base64格式的iconfont.css文件,发现在小程序中可以正常使用class展示图片。也可以通过fontSize和color修改大小和颜色,说明转的base64格式可以正常使用。

  1. 导出base64的css

将刚刚写到本地的base64格式的字体css文件,复制到指定目录和文件名。

详细代码见github仓库。

相关推荐
泡海椒32 分钟前
趋势分析报表:jquick-pdf折线图PDF生成实战
java·大数据·运维·服务器·前端·pdf
默_笙39 分钟前
🚙 一条腿走路会摔:ES 关键词检索、混合召回与 ReRank 裁判
前端·javascript
YIAN42 分钟前
从跨域代理到 WebSocket:梳理前端实时通信的底层逻辑与完整实践
前端·websocket
一曲终散1 小时前
创建 SVG 图标预览页面:从零实现到解决 CORS 问题
前端
静默回滚1 小时前
iPhone照片电脑上打不开:HEIC解码从原理到WASM
前端
dsyyyyy11011 小时前
Vue 3 Watch 监视完全指南
前端·javascript·vue.js
航飞光电市场经理2 小时前
人员定位系统“全栈自研”技术解析:从射频前端到定位引擎的架构拆解
前端·架构
Apifox2 小时前
Apifox 9 月更新|CLI 能力升级、GitLab 私有化部署接入与产品体验优化
前端·后端·测试
deli0072 小时前
随机乱跳为什么能画出完美三角形:混沌游戏分形实验室
前端
Gizzap_Tech2 小时前
国内官网增加英文版:URL、语言切换与 hreflang 怎么配置?
前端