iconfont是通过矢量字体的方式来做icon,可以在高分辨率的屏幕上
也不会失真,能通过css来控制其样式,就像控制普通的文字一样。
像很多浏览器特性一样,使用iconfont是有兼容性问题的,要使用
iconfont,你不得不这样写字体声明:
@font-face {
font-family: 'mui-wl';
src: url('http://at.alicdn.com/t/font_1384420140_864115.eot'); /* IE9*/
src: url('http://at.alicdn.com/t/font_1384420140_864115.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
url('http://at.alicdn.com/t/font_1384420140_8889937.woff') format('woff'), /* chrome、firefox */
url('http://at.alicdn.com/t/font_1384420140_8170962.ttf') format('truetype'), /* chrome、firefox、opera、Safari, Android, iOS 4.2+*/
url('http://at.alicdn.com/t/font_1384420140_9259503.svg#svgFontName') format('svg'); /* iOS 4.1- */
}
字体编辑的工具,windows平台下有fontlab配合AI能很好的生成
iconfont,具体介绍参看这里,CSS3 icon font完全指南
生成ttf格式的文件后,要兼容ie系列浏览器,还需要转为其它几种
格式
网上有一些工具能够进行字体转化的工具,能将ttf格式的字体文件,
转为各种格式的iconfont字体文件,比如这
个:http://www.fontsquirrel.com/fontface/generator
那么整个过程就完毕了,下面要介绍的是在linux环境下进行字体文
件的的制作
需要的环境
- inkscape ,用于生成字体路径
- fontforge ,linux下面的字体编辑器,需要忍耐下,界面非常丑,
有很多快捷键
制作过程
- 准备好svg字体路径,可以用inkscape ,或者AI
- 用fontforge打开一个svg字体文件(也可以是ttf格式的),比如
http://at.alicdn.com/t/font_1384420140_9259503.svg ,看到很多图形
- 点击一个字体空位,复制画好的svg路径到空位上
- 文件->生成字体,完成
- 借助上面的字体转换工具,将生成的ttf文件上传,生成其它格
式的文件 - demo
需要注意的点
- fontforge 打开生成的ttf文件,前32个字符是不可见字符,如
果你在这前32个字符中填充了图形也是没用的 如果你自己托管字体文件的的话,需要注意字体的跨域问题:
firefox和IE9不支持对icon font字体的跨域。解决办法是在服
务器的header中添加acceess-control
总结
这样的制作过程还是比较麻烦的,但是能通过操作fontforge这个
软件,对字体文件有个感性的认识,再使用在线的工具的时候就不
会觉得完全是个黑箱了