Minify font seamlessly, font subsetter, webfont (eot, woff, svg) converter.
npm install fontmin[![NPM version][npm-image]][npm-url]
[![Build Status][travis-image]][travis-url]
[![Downloads][downloads-image]][npm-url]
[![Dependencies][dep-image]][dep-url]
[![Font support][font-image]][font-url]
- 简体中文
- 繁體中文
- 日本語
- 한국어
- English
``sh`
$ npm install --save fontmin
`js
import Fontmin from 'fontmin';
const fontmin = new Fontmin()
.src('fonts/*.ttf')
.dest('build/fonts');
fontmin.run(function (err, files) {
if (err) {
throw err;
}
console.log(files[0]);
// => { contents:
});
`
You can use gulp-rename to rename your files:
`js
import Fontmin from 'fontmin';
const rename = require('gulp-rename');
const fontmin = new Fontmin()
.src('fonts/big.ttf')
.use(rename('small.ttf'));
`
Creates a new Fontmin instance.
Type: Array|Buffer|String
Set the files to be optimized. Takes a buffer, glob string or an array of glob strings
as argument.
Type: String
Set the destination folder to where your files will be written. If you don't set
any destination no files will be written.
Type: Function
Add a plugin to the middleware stack.
Type: Function
Optimize your files with the given settings.
#### cb(err, files, stream)
The callback will return an array of vinyl files in files and a Readable/Writablestream
stream in
The following plugins are bundled with fontmin:
* glyph — Compress ttf by glyph.
* ttf2eot — Convert ttf to eot.
* ttf2woff — Convert ttf to woff.
* ttf2woff2 — Convert ttf to woff2.
* ttf2svg — Convert ttf to svg.
* css — Generate css from ttf, often used to make iconfont.
* svg2ttf — Convert font format svg to ttf.
* svgs2ttf — Concat svg files to a ttf, just like css sprite.
* otf2ttf — Convert otf to ttf.
Compress ttf by glyph.
`js
import Fontmin from 'fontmin';
const fontmin = new Fontmin()
.use(Fontmin.glyph({
text: '天地玄黄 宇宙洪荒',
hinting: false // keep ttf hint info (fpgm, prep, cvt). default = true
}));
`
Convert ttf to eot.
`js
import Fontmin from 'fontmin';
const fontmin = new Fontmin()
.use(Fontmin.ttf2eot());
`
Convert ttf to woff.
`js
import Fontmin from 'fontmin';
const fontmin = new Fontmin()
.use(Fontmin.ttf2woff({
deflate: true // deflate woff. default = false
}));
`
Convert ttf to woff2.
`js
import Fontmin from 'fontmin';
const fontmin = new Fontmin()
.use(Fontmin.ttf2woff2());
`
Convert ttf to svg.
you can use imagemin-svgo to compress svg:
`js
import Fontmin from 'fontmin';
const svgo = require('imagemin-svgo');
const fontmin = new Fontmin()
.use(Fontmin.ttf2svg())
.use(svgo());
`
Generate css from ttf, often used to make iconfont.
`js
import Fontmin from 'fontmin';
const fontmin = new Fontmin()
.use(Fontmin.css({
fontPath: './', // location of font file
base64: true, // inject base64 data:application/x-font-ttf; (gzip font with css).
// default = false
glyph: true, // generate class for each glyph. default = false
iconPrefix: 'my-icon', // class prefix, only work when glyph is true. default to "icon"`
fontFamily: 'myfont', // custom fontFamily, default to filename or get from analysed ttf file
asFileName: false, // rewrite fontFamily as filename force. default = false
local: true // boolean to add local font. default = false
}));
Alternatively, a transform function can be passed as fontFamily option.`js
import Fontmin from 'fontmin';
const fontmin = new Fontmin()
.use(Fontmin.css({
// ...
fontFamily: function(fontInfo, ttf) {
return "Transformed Font Family Name"
},
// ...
}));
`
Convert font format svg to ttf.
`js
import Fontmin from 'fontmin';
const fontmin = new Fontmin()
.src('font.svg')
.use(Fontmin.svg2ttf());
`
Concat svg files to a ttf, just like css sprite.
awesome work with css plugin:
`js
import Fontmin from 'fontmin';
const fontmin = new Fontmin()
.src('svgs/*.svg')
.use(Fontmin.svgs2ttf('font.ttf', {fontName: 'iconfont'}))
.use(Fontmin.css({
glyph: true
}));
`
Convert otf to ttf.
`js
import Fontmin from 'fontmin';
const fontmin = new Fontmin()
.src('fonts/*.otf')
.use(Fontmin.otf2ttf());
`
`bash`
$ npm install -g fontmin
`sh
$ fontmin --help
Usage
$ fontmin
Example
$ fontmin fonts/* build
$ fontmin fonts build
$ fontmin foo.ttf > foo-optimized.ttf
$ cat foo.ttf | fontmin > foo-optimized.ttf
Options
-t, --text require glyphs by text
-b, --basic-text require glyphs with base chars
-d, --deflate-woff deflate woff
--font-family font-family for @font-face CSS
--css-glyph generate class for each glyf. default = false
-T, --show-time show time fontmin cost
`
you can use curl to generate font for websites running on PHP, ASP, Rails and more:
`shcurl www.baidu.com
$ text= && fontmin -t "$text" font.ttf`
or you can use html-to-text to make it smaller:
`shcurl www.baidu.com | html-to-text
$ npm install -g html-to-text
$ text= && fontmin -t "$text" font.ttf`
what is more, you can use phantom-fetch-cli to generate font for SPA running JS template:
`shphantom-fetch http://www.chinaw3c.org
$ npm install -g phantom-fetch-cli
$ text= && fontmin -t "$text" font.ttf``
- fontmin-app
- gulp-fontmin
- fonteditor
- imagemin
- free chinese font
- [浙江民间书刻体][font-url]
MIT © fontmin
[downloads-image]: http://img.shields.io/npm/dm/fontmin.svg
[npm-url]: https://npmjs.org/package/fontmin
[npm-image]: http://img.shields.io/npm/v/fontmin.svg
[travis-url]: https://travis-ci.org/ecomfe/fontmin
[travis-image]: http://img.shields.io/travis/ecomfe/fontmin.svg
[dep-url]: https://david-dm.org/ecomfe/fontmin
[dep-image]: http://img.shields.io/david/ecomfe/fontmin.svg
[font-image]: https://img.shields.io/badge/font-eonway-blue.svg
[font-url]: http://weibo.com/eonway