一般情况我通过 iconfont 或者 icomoon 来实现图标管理生成字体,导入到项目中使用。

┌────────┐                                                       ┌────────────┐
│iconfont     │──┐                                                  │  Project           │
└────────┘   │   ┌────────────┐  ┌────────┐     │ ┌────────┐   │├─▶│created font       │─▶│download     │──▶│ │use font     │   │
┌────────┐   │   └────────────┘  └────────┘     │ └────────┘  │
│icomoon      │──┘                                                  └────────────┘
└────────┘

使用说明

  1. 图标字体只能被渲染成单色,不能生成 彩色图标
  2. 图标将放到平台中维护,下载字体文件到项目中使用,这样团队维护生成字体成本将非常高。

通过图标平台网站下载 svg 图标,将图标放到项目中管理,通过 svgtofont.js 工具来生成它,这将是新的字体图标使用方式:

                                            ┌────────────────┐│      Project              ││                          │
┌────────┐                            │   ┌────────┐       │
│iconfont     │──┐                       │   │    svg      │───┐ │
└────────┘   │   ┌────────┐   │   └────────┘     │ │├─▶│download svg │─▶│   ┌─────────┐   │ │
┌────────┐   │   └────────┘   │┌─│create font    │◀─┘ │
│icomoon      │──┘                       ││  └─────────┘     │
└────────┘                            ││  ┌───────────┐  ││└─▶│ use font        │  ││   └───────────┘  │└────────────────┘

新的方式维护方式好处:

  1. 不需要知道第三方平台账号维护,将图标下载到项目中维护图标,不再维护字体文件
  2. 生成彩色图标文件 SVG Symbol 在项目中使用

svgtofont

读取一组 SVG图标并从SVG图标输出 TTF/EOT/WOFF/WOFF2/SVG 字体,字体生成器。

特性

  1. 支持的字体格式:WOFF2,WOFF,EOT,TTF和SVG。
  2. 支持 SVG Symbol 文件。
  3. 自动生成模板(例如css,less等),可以直接使用。
  4. 自动生成预览网站,预览字体文件。

实例

https://github.com/uiw-react/icons

https://github.com/uiw-react/file-icons

安装

npm i svgtofont

使用

简单的使用方式

const svgtofont = require("svgtofont");svgtofont({src: path.resolve(process.cwd(), "icon"), // svg 图标目录路径dist: path.resolve(process.cwd(), "fonts"), // 输出到指定目录中fontName: "svgtofont", // 设置字体名称css: true, // 生成字体文件
}).then(() => {console.log('done!');
});

高级用法

const svgtofont = require("svgtofont");
const path = require("path");svgtofont({src: path.resolve(process.cwd(), "icon"), // svg 图标目录路径dist: path.resolve(process.cwd(), "fonts"), // 输出到指定目录中fontName: "svgtofont", // 设置字体名称css: true, // 生成字体文件startNumber: 20000, // unicode起始编号svgicons2svgfont: {fontHeight: 1000,normalize: true},// website = null, 没有演示html文件website: {title: "svgtofont",// Must be a .svg format image.logo: path.resolve(process.cwd(), "svg", "git.svg"),version: pkg.version,meta: {description: "Converts SVG fonts to TTF/EOT/WOFF/WOFF2/SVG format.",keywords: "svgtofont,TTF,EOT,WOFF,WOFF2,SVG"},description: ``,links: [{title: "GitHub",url: "https://github.com/jaywcjlove/svgtofont"},{title: "Feedback",url: "https://github.com/jaywcjlove/svgtofont/issues"},{title: "Font Class",url: "index.html"},{title: "Unicode",url: "unicode.html"}],footerInfo: `Licensed under MIT. (Yes it's free and <a href="https://github.com/jaywcjlove/svgtofont">open-sourced</a>`}
}).then(() => {console.log('done!');
});;

API

svgtofont 提供 API,可以一个一个的自己生成,也可以自动通过上面方法自动生成

const {createSVG,createTTF,createEOT,createWOFF,createWOFF2
} = require("svgtofont/src/utils");const options = { ... };createSVG(options) // SVG => SVG Font.then(UnicodeObjChar => createTTF(options)) // SVG Font => TTF.then(() => createEOT(options)) // TTF => EOT.then(() => createWOFF(options)) // TTF => WOFF.then(() => createWOFF2(options)) // TTF => WOFF2.then(() => createSvgSymbol(options)) // SVG Files => SVG Symbol

options

svgtofont(options)

dist

Type: String
Default value: dist

svg 图标路径

src

Type: String
Default value: svg

输出到指定目录

fontName

Type: String
Default value: iconfont

您想要的字体名称。

unicodeStart

Type: Number
Default value: 10000

unicode起始编号

clssaNamePrefix

Type: String
Default value: font name

创建字体类名称前缀,默认值字体名称。

css

Type: Boolean
Default value: false

创建CSS / LESS文件,默认为“true”。

svgicons2svgfont

这是 svgicons2svgfont 的设置

svgicons2svgfont.fontName

Type: String
Default value: 'iconfont'

您想要的字体名称,与前面 fontName 一样。

svgicons2svgfont.fontId

Type: String
Default value: the options.fontName value

你想要的字体ID。

svgicons2svgfont.fontStyle

Type: String
Default value: ''

你想要的字体样式。

svgicons2svgfont.fontWeight

Type: String
Default value: ''

你想要的字体粗细。

svgicons2svgfont.fixedWidth

Type: Boolean
Default value: false

创建最大输入图标宽度的等宽字体。

svgicons2svgfont.centerHorizontally

Type: Boolean
Default value: false

计算字形的边界并使其水平居中。

svgicons2svgfont.normalize

Type: Boolean
Default value: false

通过将图标缩放到最高图标的高度来标准化图标。

svgicons2svgfont.fontHeight

Type: Number
Default value: MAX(icons.height)

输出的字体高度(默认为最高输入图标的高度)。

svgicons2svgfont.round

Type: Number
Default value: 10e12

设置SVG路径舍入。

svgicons2svgfont.descent

Type: Number
Default value: 0

字体下降。 自己修复字体基线很有用。

警告: 下降是一个正值!

svgicons2svgfont.ascent

Type: Number
Default value: fontHeight - descent

字体上升。 仅当您知道自己在做什么时才使用此选项。 为您计算一个合适的值。

svgicons2svgfont.metadata

Type: String
Default value: undefined

字体 metadata。 你可以设置任何
字符数据,但它是适合提及版权的地方。

svgicons2svgfont.log

Type: Function
Default value: console.log

允许您提供自己的日志记录功能。 设置为 function(){} 禁用日志记录

svg2ttf

这是 svg2ttf 的设置

svg2ttf.copyright

Type: String

版权字符串

svg2ttf.ts

Type: String

用于覆盖创建时间的Unix时间戳(以秒为单位)

svg2ttf.version

Type: Number

font version string, can be Version x.y or x.y.

website

定义预览Web内容。 例:

{...// website = null, no demo html fileswebsite: {title: "svgtofont",logo: path.resolve(process.cwd(), "svg", "git.svg"),version: pkg.version,meta: {description: "Converts SVG fonts to TTF/EOT/WOFF/WOFF2/SVG format.",keywords: "svgtofont,TTF,EOT,WOFF,WOFF2,SVG",favicon: "./favicon.png"},footerLinks: [{title: "GitHub",url: "https://github.com/jaywcjlove/svgtofont"},{title: "Feedback",url: "https://github.com/jaywcjlove/svgtofont/issues"},{title: "Font Class",url: "index.html"},{title: "Unicode",url: "unicode.html"}]}
}

website.template

Type: String
Default value: index.ejs

自定义模板可自定义参数。 您可以根据默认模板定义自己的模板。

{website: {template: path.join(process.cwd(), "my-template.ejs")}
}

website.index

Type: String
Default value: font-class, Enum{font-class, unicode, symbol}

设置默认主页。

字体使用

假设字体名称定义为 svgtofont,默认主页为unicode,将生成:

font-class.html
index.html
symbol.html
svgtofont.css
svgtofont.eot
svgtofont.less
svgtofont.svg
svgtofont.symbol.svg
svgtofont.ttf
svgtofont.woff
svgtofont.woff2

预览demo font-class.html, symbol.htmlindex.html。自动生成样式svgtofont.csssvgtofont.less

symbol svg

<svg class="icon" aria-hidden="true"><use xlink:href="svgtofont.symbol.svg#svgtofont-git"></use>
</svg>

Unicode

<style>
.iconfont {font-family: "svgtofont-iconfont" !important;font-size: 16px;font-style: normal;-webkit-font-smoothing: antialiased;-webkit-text-stroke-width: 0.2px;-moz-osx-font-smoothing: grayscale;
}
</style>
<span class="iconfont"></span>

Class Name

支持.less.css样式引用。

<link rel="stylesheet" type="text/css" href="node_modules/fonts/svgtofont.css">
<i class="svgtofont-apple"></i>

License

Licensed under the MIT License.

非常方便的将 SVG 图标生成 TTF/EOT/WOFF/WOFF2/SVG 字体相关推荐

  1. 【Flutter】Icons 组件 ( FlutterIcon 下载图标 | 自定义 svg 图标生成 ttf 字体文件 | 使用下载的 ttf 图标文件 )

    文章目录 一.FlutterIcon 下载图标 二.自定义 svg 图标生成 ttf 字体文件 三.使用下载的 ttf 图标文件 四.完整代码示例 五.相关资源 一.FlutterIcon 下载图标 ...

  2. Php在线字体woff转svg,在线字体格式转换ttf/otf/eot/woff/woff2格式工具

    在做网站样式时,我们有时找不到自己需要的字体文件,就需要自己需要自己来制作一个,如何制作了?这里给大家推荐一款自己在用的在线字体转换ttf/otf/eot/woff/woff2格式工具. 这款在线字体 ...

  3. 把svg图片生成到svg_“迷失”:SVG指南针玫瑰生成器

    把svg图片生成到svg While simple circles and paths are easy enough to generate by hand-coding or a vector a ...

  4. 如何获取网站字体,网站字体获取方法,网页设计字体获取,网页字体提取方法,获取网站ttf,otf,eot,woff,woff2,dfont,paf,ptb,ps,pas,t42,t11,svg字体文件

    网站字体获取方法 1.进入需要获取字体的站点页面,点击F12进入网页开发者模式 2.进入F12后出现选着Network面板-->>>字体栏-->>>按F5刷新页面即 ...

  5. SVG 图标制作指南

    iconfont解决了我们以前大量使用小图标带来的种种问题,但是也有自身的各种缺陷.比如不支持多色,不同浏览器下的表现不同,需要做各种兼容等. 不久的将来iconfont应该会被svg symbol技 ...

  6. 如何简单快速的获取到页面上的svg图标?

    这里小编提供两个方法都可以获取到页面中的svg图标 火狐浏览器快速获取 小编拿花瓣网的这个svg图标来进行演示 第一步,在火狐浏览器中鼠标右击 => 查看页面信息 在媒体选项中找到我们要获取的s ...

  7. PowerBI中使用SVG图标简单介绍

    PowerBI中使用SVG图标简单介绍 1. 什么是SVG? SVG 意为可缩放矢量图形(Scalable Vector Graphics). SVG 是使用 XML 来描述二维图形和绘图程序的语言. ...

  8. mpvue微信小程序中使用svg图标,并通过代码动态改变图标颜色

    微信小程序,mpvue中使用svg图标,并通过代码改变图标颜色 本文主要是mpvue开发小程序的代码,不过微信小程序原生开发应该也是一样的,思路都是通用的,按照这个思路微信小程序原生开发一样可以实现同 ...

  9. 更改html网页的图标大小吗,html-使用path元素调整svg图标的大小

    我正在使用一个预先设计的菜单,该菜单已使用svg绘制图标. 由于某些原因,我必须使用path元素更改图标大小. 现在,我想更改图标,并且有自己的自定义图标:因此,即使我使用的是由material de ...

最新文章

  1. Linux命令缩写来由
  2. openFeign 服务接口的调用01——概述
  3. 3.APC的挂入过程
  4. 为什么优秀的程序员都写博客?谈谈我都是如何写作的
  5. Jquery_JQuery之DataTables强大的表格解决方案
  6. 学习Spring Boot:(二十三)Spring Boot 中使用 Docker
  7. 从竞品数据搜集切入,NiucoData要做商业情报追踪分析工具
  8. asm冗余 oracle_oracle 11.2.0.1 rac 修改asm磁盘组的冗余模式(redundancy mode)为normal
  9. iosalipay_iOS支付宝支付主要代码
  10. Linux软件包安装和卸载
  11. 【转贴】CSS Sticky Footer: 完美的CSS绝对底部
  12. 标签系统 -- 用户画像
  13. VAssistX的卸载方法
  14. Adobe Illustrator CS5 序列号及安装方法
  15. 对 Python 代码使用的词语标记化器 tokenize,你懂了吗?【Python|标准库|tokenize】
  16. Cannot find name ‘console‘. Do you need to change your target library?ging the ‘lib‘ compiler option
  17. SpringBoot + MyBatis + MySQL +IDEA2021 增删改查 2021-06-04
  18. 微服务系列笔记之Mico Api详解
  19. 分布式服务框架Dubbo/Dubbox入门示例
  20. 一个H.265/HEVC码流分析工具

热门文章

  1. 简单、易用、易学,这个全自动测试平台真香
  2. JS----hover时间延迟设置
  3. win10如何显示文件扩展名
  4. 【PWA】web推送技术
  5. 关于asp用python做脚本语言
  6. GMAT750 Verbal
  7. iOS 动态改变应用图标
  8. 北京交通大学计算机学院考研,2019北京交通大学计算机考研考生科目、参考书目、招生人数...
  9. 存储卡丢失照片数据用什么办法能免费恢复
  10. 综述:联邦学习隐私保护