Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

ecomfe/fontmin

Repository files navigation

fontmin

Minify font seamlessly

NPM version Build Status Downloads Font support

Homepage

Install

$ npm install --save fontmin

Notice

fontmin v2.x only support ES Modules, and run on Node v16+.

If you need to use CommonJS version, please install fontmin v1.x:

npm install --save fontmin@1

Usage

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: <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'));

API

new Fontmin()

Creates a new Fontmin instance.

.src(file)

Type: Array|Buffer|String

Set the files to be optimized. Takes a buffer, glob string or an array of glob strings as argument.

.dest(folder)

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.

.use(plugin)

Type: Function

Add a plugin to the middleware stack.

.run(cb)

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/Writable stream in stream

Plugins

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.

.glyph()

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
 }));

.ttf2eot()

Convert ttf to eot.

import Fontmin from 'fontmin';
const fontmin = new Fontmin()
 .use(Fontmin.ttf2eot());

.ttf2woff()

Convert ttf to woff.

import Fontmin from 'fontmin';
const fontmin = new Fontmin()
 .use(Fontmin.ttf2woff({
 deflate: true // deflate woff. default = false
 }));

.ttf2woff2()

Convert ttf to woff2.

import Fontmin from 'fontmin';
const fontmin = new Fontmin()
 .use(Fontmin.ttf2woff2());

.ttf2svg()

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());

.css()

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"
 },
 // ...
 }));

.svg2ttf()

Convert font format svg to ttf.

import Fontmin from 'fontmin';
const fontmin = new Fontmin()
 .src('font.svg')
 .use(Fontmin.svg2ttf());

.svgs2ttf()

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
 }));

.otf2ttf()

Convert otf to ttf.

import Fontmin from 'fontmin';
const fontmin = new Fontmin()
 .src('fonts/*.otf')
 .use(Fontmin.otf2ttf());

CLI

$ 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 cost

you can use curl to generate font for websites running on PHP, ASP, Rails and more:

$ text=`curl www.baidu.com` && fontmin -t "$text" font.ttf

or 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.ttf

what 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.ttf

Related

Thanks

License

MIT © fontmin

AltStyle によって変換されたページ (->オリジナル) /