Minify font seamlessly
$ npm install --save fontminimport 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: <Buffer 00 01 00 ...> }
});You can use gulp-rename to rename your files:
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.
The callback will return an array of vinyl files in files and a Readable/Writable
stream in stream
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.
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.
import Fontmin from 'fontmin';
const fontmin = new Fontmin()
    .use(Fontmin.ttf2eot());Convert ttf to woff.
import Fontmin from 'fontmin';
const fontmin = new Fontmin()
    .use(Fontmin.ttf2woff({
        deflate: true           // deflate woff. default = false
    }));Convert ttf to woff2.
import Fontmin from 'fontmin';
const fontmin = new Fontmin()
    .use(Fontmin.ttf2woff2());Convert ttf to svg.
you can use imagemin-svgo to compress svg:
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.
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.
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.
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:
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.
import Fontmin from 'fontmin';
const fontmin = new Fontmin()
    .src('fonts/*.otf')
    .use(Fontmin.otf2ttf());$ npm install -g fontmin$ fontmin --help
  Usage
    $ fontmin <file> [<output>]
    $ fontmin <directory> [<output>]
    $ fontmin <file> > <output>
    $ cat <file> | fontmin > <output>
  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 costyou can use curl to generate font for websites running on PHP, ASP, Rails and more:
$ text=`curl www.baidu.com` && fontmin -t "$text" font.ttfor you can use html-to-text to make it smaller:
$ npm install -g html-to-text
$ text=`curl www.baidu.com | html-to-text` && fontmin -t "$text" font.ttfwhat is more, you can use phantom-fetch-cli to generate font for SPA running JS template:
$ npm install -g phantom-fetch-cli
$ text=`phantom-fetch http://www.chinaw3c.org` && fontmin -t "$text" font.ttfMIT © fontmin