首页 > 其他分享 >认识 Iconfont 以及什么是 .eot、.woff、.ttf、.svg

认识 Iconfont 以及什么是 .eot、.woff、.ttf、.svg

时间:2022-10-05 14:05:08浏览次数:78  
标签:浏览器 svg Iconfont face 字体 格式 font ttf 图标

一、Iconfont

1. 概述

在前端作业中,二十年前只有页面中铺满文字就算上线产品,现如今,不加点俏皮的“图标”会让页面显得很 Low 很 Low。

 

认识 Iconfont 以及什么是 .eot、.woff、.ttf、.svg_safari

图标

在写这篇文章之前,我一直以为上图中的“图标”是一个个的图片组成,但学习总是给人新知,现在我知道了它们只是一种字体,类似于“宋体”、“楷体”这种。如果我们要使用它们,也只需要在 css 文件中使用 @font-face 引入这种字体即可。@font-face 是 css3 的一个语法,刚兴趣的可以自行阅读 ​​@font-face 用法​​ 。

2. Iconfont 介绍

Iconfont 是阿里提供了一个图标库,你可以想象成是一个售卖图标的超市,挑选你需要的图标放入购物车,然后 Iconfont 会为你打包你购物车里的图标,自动生成一种新的字体,你可以选择下载到本地,在你的项目中引入这种字体,这样即便没有网络的情况也可以使用图标。

这种模式的一大优点就是只挑选出需要的图标,不会像其他图标库那样直接下载一整个图标库的内容,尽管你可能只会使用到其中一到两个图标。要知道,有的项目打包上线对大小是有严格要求的,比如微信小程序打包之后的代码大小就要控制在 1 M以下。

关于如何使用 Iconfont,网络已经有人赘述的很详细了,这里就不再重复。具体步骤参阅: iconfont字体图标的使用方法。

注:除了阿里的 Iconfont,Bootstrap 的图标是 Font-Awsome。

二、字体格式 —— .eot、.woff、.ttf、.svg

1. 概述

在阿里图标库中下载图标到本地后,目录结构如下:

 

认识 Iconfont 以及什么是 .eot、.woff、.ttf、.svg_css_02

图标库下载到本地目录结构

第一次看到这几个文件时,不知道有什么用,可能会直接删除,但万万不可,打开 iconfont.css 文件可以在 @font-face 中都有引用这几个文件。查询资料后得知:虽然现代浏览器支持自定义字体样式,并且可以通过 @font-face 引入自定义的字体,但是各个浏览器对于字体样式是存在兼容性问题的,而这几个文件就是分别处理对应浏览兼容性问题的。

2. 字体格式介绍

目前最主要的几种网络字体(web font)格式包括WOFF,SVG,EOT,OTF/TTF。

WOFF

WOFF是Web Open Font Format几个词的首字母简写。这种字体格式专门用于网上,由Mozilla联合其它几大组织共同开发。WOFF字体通常比其它字体加载的要快些,因为使用了OpenType (OTF)和TrueType (TTF)字体里的存储结构和压缩算法。这种字体格式还可以加入元信息和授权信息。这种字体格式有君临天下的趋势,因为所有的现代浏览器都开始支持这种字体格式。【支持的浏览器:IE9+,Firefox3.5+,Chrome6+,Safari3.6+,Opera11.1+】

SVG / SVGZ

Scalable Vector Graphics (Font). SVG是一种用矢量图格式改进的字体格式,体积上比矢量图更小,适合在手机设备上使用。【支持的浏览器:Chrome4+,Safari3.1+,Opera10.0+,iOS Mobile Safari3.2+】

EOT

Embedded Open Type。这是微软创造的字体格式。这种格式只在IE6-IE8里使用。【支持的浏览器:IE4+】

OTF / TTF

OpenType Font 和 TrueType Font。部分的因为这种格式容易被复制(非法的),这才催生了WOFF字体格式。然而,OpenType有很多独特的地方,受到很多设计者的喜爱。【支持的浏览器:IE9+,Firefox3.5+,Chrome4+,Safari3+,Opera10+,iOS Mobile Safari4.2+】

3. 使用 @font-face 引入字体格式

因为各个浏览器对字体格式的不兼容,作为前端开发人员,我们需要考虑的全面性,将各个格式的字体都引入进来,这样就不怕刁钻的用户使用哪种浏览器了。

常见兼容性写法:

@font-face {
font-family: 'yourfontname';
src: url('../fonts/singlemalta-webfont.eot');
src: url('../fonts/singlemalta-webfont.eot?#iefix') format('embedded-opentype'),
url('../fonts/singlemalta-webfont.woff') format('woff'),
url('../fonts/singlemalta-webfont.ttf') format('truetype'),
url('../fonts/singlemalta-webfont.svg#defineName') format('svg');
font-weight: normal;
font-style: normal;
}

如果你是使用 Iconfont 下载字体到本地,那么恭喜你,打开 iconfont.css 文件,可以看到 Iconfont 已经帮助你配好了这些内容,你只需要在页面中引入 iconfont.css 即可直接使用。

三、参考文章

  1. - iconfont字体图标的使用方法--超简单!
  2. ​Airen的博客 - CSS3 @font-face​
  3. ​简书 - CSS3 @font-face属性​

 

 



标签:浏览器,svg,Iconfont,face,字体,格式,font,ttf,图标
From: https://blog.51cto.com/u_15707676/5732597

相关文章

  • SVG
    矢量图VS位图SVG是矢量图,如jpg/png等是位图位图在放大时失真体积大,矢量图不会失真且体积小位图是一个个很小的颜色方块组成的每个小方块为1px,矢量图是XML定义的,通过各......
  • manim 导入ai生成的svg无法显示的问题
    使用inkscape产生的svg导入manim后可以正常显示,但是ai产生的svg导入后无法显示,在manim中set_color后可显示,这给动画制作带来了很大的不便我将inkscape和ai产生的svg源代码......
  • manim 动画 svg 的准备工作
    1、选择图像后,选择窗口>图像描摹,注意将图像描摹成黑白色的,且大致内容为白色,仅边框为黑色。这样做的目的是尽可能简化svg,彩色svg会有更多的路径来显示颜色的变化。随后选择......
  • 如何将网页中的svg图片转换为图片
    描述有的图片在网页中是使用的svg图片进行展示,想要下载作为图片步骤打开控制台,选择对应的元素,"右键"--"复制"--“复制元素”将上面的代码拷贝到一个txt文件中,并......
  • Svg 图标 — 蒙版样式问题
    Svg图标—蒙版样式问题我在Next.js中创建SVG图标组件时遇到了这个问题。问题解决方案参考[不处理有关·问题#336·gregberge/svgr的mask-type属性......
  • antdv 添加自定义svg图标
    1引入importIconfrom'@ant-design/icons-vue'2调用添加icon的方法Icon.add使用方式:<a-icontype="svg1"/>因为是添加到ant-design的,升级antdv出现异常时要查阅源码......
  • 2022-09-27 uniapp项目中iconfont阿里云图标不显示
    前言:uniapp项目中iconfont阿里云图标不显示,运行到浏览器能显示,打包到真机(Android)和模拟器(Android)上能显示,ios不能显示,打包h5不能显示(ios和android和浏览器不能显示)原......
  • react-antd组件之Steps组件自定义icon svg图片颜色跟随完成进度改变
    demo.svg<?xmlversion="1.0"encoding="UTF-8"?><svgwidth="58px"height="44px"viewBox="005844"version="1.1"xmlns="http://www.w3.org/2000/svg"xmlns:xli......
  • dotnet 解析 TTF 字体文件格式
    在Windows下,可以使用DX提供的强大能力,调用DX读取TTF字体文件,获取字体文件的信息以及额外的渲染信息。特别是基于DX的WPF更是加了一层封装,使用FontFamily类型......
  • SvgIcon svg-icon
    <svg-iconslot="prefix"icon-class="user"class="el-input__iconinput-icon"/>  用法   <el-inputtype="text"auto-complete="off"placeholder="账号"> ......