微信小程序自定义字体及自定义图标问题说明

9

自定义图标及自定义字体,一直是很多小程序开发者的心病,其实本站是很多解决方案的,为了集中起来,方便直接跳过此坑,我特别做了这次针对字体及字体图标的跳坑;

相关文章:
微信小程序添加并使用外部字体(成功添加到维吾尔语了...
新手跳坑指南《六十七》字体文件无法找到报404错误
在微信小程序中使用字体图标/自定义字体/外部字体

相关插件:
微信小程序实用组件:使用font-awesome字体,真机可用
微信小程序demo:bootstrap字体样式使用

相关帖子:
小程序里面能用阿里字体图标吗
微信小程序中怎么使用字体图标

相关讨论:
Q:小程序开发时能否使用我们自定义的字体图标。
A:自定义字体是支持的,但是需要使用线上字体,并且存放字体的服务器需要允许跨域。

相关讨论一:
字体文件无法加载,确认文件是存在的

@font-face {
  font-family: 'Glyphicons Halflings';

  src: url('/assets/fonts/glyphicons-halflings-regular.eot');
  src: url('/assets/fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('/assets/fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('/assets/fonts/glyphicons-halflings-regular.woff') format('woff'), url('/assets/fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('/assets/fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');
}

控制台报错

VM884:2 Failed to load font http://1701630871.debug.open.wei ... flings-regular.woff : the server responded with a status of 404 (HTTP/1.1 404 Not Found)
From server 127.0.0.1

文件确实存在的,其他jpg/png图片文件都没问题
是bug,还是限制了这些文件类型?

字体文件要放在网络上请求。

相关讨论二:
小程序使用字体图标的方法分享:原文链接
一、先到阿里巴巴矢量图标库(http://iconfont.cn/)生成自己的字体图标,并下载下来,找到ttf格式文件
图片描述
二、到这个平台https://transfonter.org/,把字体文件转化成base64格式
图片描述
三、在wxss文件中引入
图片描述
图片描述

四、在wxml加入字体
图片描述
五、显示效果
图片描述

相关讨论二:
直接引用不行,本地远程的都不行
图片描述

相关讨论三:input更改字体无效第一个是textarea 第二个是input 第三个是text 用的是缅文, 已经在app.wxss设置了@font-face 结果发现input无法设置字体

input 组件是一个 native 组件,字体是系统字体,所以无法设置 font-family;

官方文档有说明

相关讨论四:
小程序里使用 iconfont,font-face的src能使用网络地址吗?

@font-face {
   font-family: 'fontello';
   src: url('http://cdn.example.com/iconfont.ttf') format('truetype');
   font-weight: normal;
   font-style: normal;
   line-height: 1;
}

发现src如果用网络地址就不能在iOS上显示,Android和开发工具上是可以的。src用base64值则都是可以显示的。

iOS要使用https的连接的

相关讨论五:
小程序可以使用font-awesome来做icon么?能不能用icon-font来做icon,如果不能话有什么好的方案来做icon?

可以, 字体放入到服务器, 远程地址引用就可以了, 例如:

@font-face {font-family: "iconfont";
  src: url('//at.alicdn.com/t/xxx.eot?t=1482899691162'); /* IE9*/
  src: url('//at.alicdn.com/t/xxx.eot?t=1482899691162#iefix') format('embedded-opentype'), /* IE6-IE8 */
  url('//at.alicdn.com/t/xxx.woff?t=1482899691162') format('woff'), /* chrome, firefox */
  url('//at.alicdn.com/t/xxx.ttf?t=1482899691162') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+*/
  url('//at.alicdn.com/xxx.svg?t=1482899691162#iconfont') format('svg'); /* iOS 4.1- */
}

你可能感兴趣的

17 条评论
icelongmm · 2017年03月13日

把字体文件转化成base64格式的方法我试了没用啊,放在网站试也没用,说明这个方法本身是没用的。是不是还有什么要注意的细节?

回复

0

是有用的,你可以在网站内把自己的demo和字体文件发上来让nazi帮你看看http://www.wxapp-union.com/fo...

chuxue2005 作者 · 2017年03月13日
0

@chuxue2005 确实有用,可能是微信工具抽风了,电脑重启后发现可以的。。。谢谢楼主的帖子

icelongmm · 2017年03月21日
0

@icelongmm 真机试试吧,工具和真机的图标确定可用,但是字体一直比较尴尬,有说可以又有说不可以的

chuxue2005 作者 · 2017年03月21日
老婆_搓衣板坏了 · 2017年08月07日

搞了半天就只能显示一个图标,其他的都显示不了 before { content: "e732"; }, content 里的编码是怎么得到的啊

回复

0

搜索,我忘记了这个叫什么编码了。。。可以查到的。。。

chuxue2005 作者 · 2017年08月07日
0

因为临时没有想到解决方法,所以就直接F12查看了图标库网站的后台!在::before中得到了相应图标的编码
时间紧迫没有查找到这是 什么编码,就只能如此了。。。

老婆_搓衣板坏了 · 2017年08月07日
0

你这个content的值少点前缀吧

不要这样看着我 · 2018年02月03日
泛白的夜 · 2017年09月28日

请问下:为什么你这弄好的图标是有颜色的?我之前弄的都是黑色的...

回复

0

这图标的颜色是后面自己定义的还是照着上面的方法不需要自己定义就有的?

泛白的夜 · 2017年09月28日
xrlu0929 · 2017年11月22日

不行啊。。。报错说 something must be wrong..

回复

0

我的报错也是这个 请问你后来解决了吗

吃土少女_mint · 2018年02月05日
0

@吃土少女_mint 并没有 猜测是因为太大了 英文的字体包就可以

xrlu0929 · 2018年08月07日
妖灵贰肆 · 2017年12月21日

报错说我编译错误 我就是把css的代码复制到小程序里就报错 什么情况 你们没遇到么

回复

dandantt · 2018年03月04日

可以用。谢谢lz提供的思路和方法。感谢~~~楼上报错的试试这篇文章,结合lz的一起看。http://blog.csdn.net/nongweiy...

回复

载入中...