基于svg生成iconfont矢量字体图标

对于前端开发,图标是前端页面不可缺少的元素,他能更让前端页面更加丰富。前端页面的初期都是使用图片,对于小的图标使用图片拼成雪碧图不仅影响前端开发的效率,而且图片文件相对较大也会影响网页加载的速度。ionfont字体图标相较于图片他的优势就是文件大小极小,几百个图标才几十上百kb,但是换成图片可能已经有几mb了,其次制作简单,只需UI提供svg图标可以通过工具自动生成字体文件,或者网上有很多免费的图标库可以自动生成矢量字体文件,例如阿里巴巴矢量字体库。但是iconfont字体图标因为他就像字体一样只能设置color属性,所以他只能是纯色的。下面介绍几种生成方法

1、网上图标生成网站。以阿里巴巴字体库为例。登录http://www.iconfont.cn/,注册成功后,可以创建项目,然后在免费字体库中选择自己项目中需要的图标,放在购物车里,选择完了以后将选择的图表添加到项目中,然后在项目中将选择的字体添加到本地。下载下来的文件有.wof,.ttf,.eot,.svg这些是矢量字体文件,稍后解释这些不同格式的区别,还有生成好的css文件,这些就是页面中需要引用的矢量字体资源。

2、通过工具生成iconfont字体,这里介绍通过gulp-iconfont,gulp-iconfont-css生成。

首先需要全局安装gulp然后安装gulp-iconfont和gulp-iconfont-css。具体的配置文件代码

var gulp = require(‘gulp‘),
iconfont = require(‘gulp-iconfont‘),
iconfontCss = require(‘gulp-iconfont-css‘);
gulp.task(‘iconfont‘, function () {
    let svg =‘./svgs/*.svg‘;
    let fontName = ‘iconfont‘;
    gulp.src(svg).pipe(iconfontCss({
		fontName: fontName,
		targetPath: ‘font.css‘, //生成的css样式的路径
		fontPath: ‘./‘ //生成的iconfont的路径
    })).pipe(iconfont({
		fontName: fontName, // required
		prependUnicode: true, // recommended option
		formats: [‘ttf‘, ‘eot‘, ‘woff‘, ‘svg‘], // default, ‘woff2‘ and ‘svg‘ are available
		timestamp: new Date().getTime()
	})).pipe(gulp.dest(‘./dist‘));
});

  我们将svg字体文件放到配置文件同级的svgs文件夹内,运行gulp iconfont就可以生成iconfont字体文件和对应的css,放在dist目录下。这里生成矢量字体文件已经生成好了,但是在实际项目中,我们需要知道字体库里有哪些图标字体,这样就不会重复生成图标。所以我们还要搭建一个展示图标的服务。这里我们使用koa启web服务,需要安装koa,koa-static, koa-router包。我们在根目录下生成server.js。dist目录下新建index.html用来展示图标的网页,server.js的配置:

const koa = require(‘koa‘);
const koa_static = require(‘koa-static‘);
const path = require(‘path‘)
const router = require(‘koa-router‘)();
const fs = require(‘fs‘);

const app = new koa();

app.use(koa_static(‘./dist‘))

router.get(‘/geticonfont‘, function (ctx, next){
	let arr = fs.readdirSync(‘./svgs‘)
	let tmp = [];
	arr.forEach(item=>{
		tmp.push(item.split(‘.‘)[0])
	})
	ctx.body = {
		status: 200,
		data: tmp
	}
	next();

})
app.use(router.routes()).use(router.allowedMethods());

app.listen(‘8097‘, function (){
	console.log(‘listening 8097‘);
})

  这里我们写了一个获取ionfont图标的接口‘/geticonfont’,用来读取svgs文件夹下的文件名。html文件:

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>iconfont</title>
	<link rel="stylesheet" href="./font.css">
	<style>
		ul{
			list-style: none;
			padding: 0;
			margin: 0;
		}
		ul li{
			font-size: 40px;
			float: left;
			width: 120px;
			text-align: center;
			margin: 20px;
		}
		ul li p{
			font-size: 14px;
			margin-top: 0px;
		}
	</style>
</head>
<body>
	<ul>
		<ul id="wrap"></ul>
	</ul>
	<script src="./jquery.min.js"></script>
	<script>
		$(function (){
			$.ajax({
				url:‘/geticonfont‘,
				method: ‘get‘,
				data: {},
				success: function (res){
					var arr = [];
					for(var i=0;i<res.data.length;i++){
						arr.push(‘<li><i class="icon icon-‘+res.data[i]+‘"></i><p>icon-‘+res.data[i]+‘</p></li>‘)
					}
					$(‘#wrap‘).html(arr.join(‘‘));
				}
			})
			$(‘#wrap‘).html()
		})
	</script>
</body>
</html>

  html文件放在dist目录下。这样就配置完成了,只要启服务server.js就可以在本地访问localhost:8097查看有哪些矢量字体,如下图

最后我们介绍矢量字体woff,ttf,eot,svg,woff2格式的的区别,以及为什么要将这四种格式都引入。eot格式是兼容ie9以下版本,svg格式是兼容ios4以下版本,ttf,woff格式基本上主流浏览器都支持,但是woff格式要比ttf格式的文件小很多,所以加载速度会快很多。最后还有一种woff2这种格式,他是woff的下一代,压缩率更高,文件大小更小,加载速度更快。

原文地址:https://www.cnblogs.com/leejay6567/p/9251689.html

时间: 2024-08-27 11:32:38

基于svg生成iconfont矢量字体图标的相关文章

UWP 矢量字体图标(iconfont)使用

本文使用 阿里巴巴开源字体: 选择矢量字体图标: 查看或编辑 Unicode编码 或字体名称 下载到本地,添加到uwp项目 代码中写法 Text:Unicode编码 FontFamily:文件路径#字体名称 效果图: 参考资料 http://www.alessiosimoni.com/custom-fonts-in-windows-10-uwp/ http://www.cnblogs.com/anding/p/4961215.html

矢量字体图标

1.首先使用 iconfont.cn在线生成矢量图标 2.然后,将生成的矢量字体下载到本地,使用font-face在网页上定义该矢量图标对应的字体,最后引用该自定义的字体. <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>矢量字体图标应用</title> <style> /*font-face

Font Awesome 4.0.3 提供了369个网页常用的矢量字体图标

Font Awesome 为您提供了一套可缩放的字体矢量图标,可以快速自定义图标的大小,颜色,阴影,这些都可以通过CSS来实现,无需任何的JS代码哦. 一,主要特点如下: 1,一个字体,369个图标 2,无需要使用JavaScript 3,通过CSS自定义图标的大小,颜色,阴影 4,用户界面友好 5,支持 Internet Explorer 7 浏览器 6,能够在 Retina 屏幕完美呈现 7,和其它图标字体不同,兼容屏幕阅读器 8,可扩展性强 9,文档完善 10,免费 二,图标类型下面简单罗

WPF自定义控件与样式(1)-矢量字体图标(iconfont)

一.图标字体 图标字体在网页开发上运用非常广泛,具体可以网络搜索了解,网页上的运用有很多例子,如Bootstrap.但在C/S程序中使用还不多,字体图标其实就是把矢量图形打包到字体文件里,就像使用一般外置字体一样的使用,因此Winform.WPF中都是可以用的. 在我们多个WPF项目中广泛使用了图标字体,包括自定义控件.自定义样式.模板等.总结下: 网上开源字体图标很多,很容易获取,项目开发中需要的绝大部分图标都可以找到,非常方便,推荐 阿里巴巴开源字体: 字体文件非常小,比使用png等图片文件

vue引入iconfont阿里字体图标库以及报错解决

下载阿里的字体图标库文件,放在\src\assets\font文件夹下面. 安装style-loader,css-loader和file-loader (或url-loader)  ,记得--save-dev webpack的配置文件中添加: { test: /\.css$/, use:['style-loader','css-loader'] }, { test:/\.(ttf|eot|woff|woff2|svg)$/, use:['file-loader'] } 入口文件main.js引入

svg图片转换为WEB字体图标

今天我学会了使用字体制作网站   icomoon.io 制作web文本图标.跟我一起学习吧! (1)字体制作网站   icomoon.io   点击 icomoon APP  --->  import icons 导入文件入口 (2)SVG下载网站   iconsvg.com 专门下载svg图标 具体案例: 将SVG图标转换为字体文件,并可以应用到网页中. 一.下载svg   二.将svg文件转换为字体文件 三.字体图标的使用  显示效果

如何应用Font Awesome矢量字体图标

Font Awesome 是一套专门为 Twitter Boostrap 设计的图标字体库.这套图标字体集几乎囊括了网页中可能用到的所有图标,除了包括 Twitter Boostrap 的默认图标外,还有社交网络图标.Web 应用程序图标和编辑器图标等等,可以免费用于商业项目. 可以到官方站点查看更详细的信息和使用样例. 下面仅记录使用步骤: 1.到官网上下载最新版本的Font Awesome. 2.解压文件,将其中的css和fonts文件夹拷贝到项目中,其中css文件夹中有两个css文件(fo

jQuery---bootstrap的下载使用,栅格(12个格子),轮播图,矢量图字体图标,进度条,选项卡,标签,表达校验

jQuery---bootstrap的下载使用,栅格(12个格子),轮播图,矢量图字体图标,进度条,选项卡,标签,表达校验 一丶bootstrap的使用 下载资源文件: bootstrap官网 导入 // 1.导入样式 <link rel="stylesheet" href="bootstrap-3.3.7-dist/css/bootstrap.css"> // 2.导入bootstrap的js,依赖jquery,先导入jquer <script

封装字体图标库

参考了以下博客: https://blog.csdn.net/Doulvme/article/details/54290450 https://blog.csdn.net/qq_25479327/article/details/77167585 https://blog.csdn.net/muzidigbig/article/details/80371341 查找图标并下载 1.打开阿里的矢量字体图标库(http://iconfont.cn/collections)并登陆. 2.搜寻需要的图标加