Voltar ao ranking

ecomfe/fontmin

JavaScriptecomfe.github.io/fontmin

Minify font seamlessly

fontfontminsubseticon-font
Crescimento de estrelas
Estrelas
6.2k
Forks
334
Crescimento semanal
Issues
64
2k4k6k
mar. de 2015dez. de 2018out. de 2022jul. de 2026
Artefatosnpmnpm install fontmin
README

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

Thanks

License

MIT © fontmin

Repositórios relacionados
tonsky/FiraCode

Free monospaced font with programming ligatures

ClojureSIL Open Font License 1.1programming-ligaturesfont
81.8k3.2k
FortAwesome/Font-Awesome

The iconic SVG, font, and CSS toolkit

JavaScriptnpmOtherfontawesomeicons
fontawesome.com
76.8k12.2k
ryanoasis/nerd-fonts

Iconic font aggregator, collection, & patcher. 3,600+ icons, 50+ patched fonts: Hack, Source Code Pro, more. Glyph collections: Font Awesome, Material Design Icons, Octicons, & more

CSSnpmOtherfontspatched-fonts
nerdfonts.com
63.8k3.9k
subframe7536/maple-font

Maple Mono: Open source monospace font with round corner, ligatures and Nerd-Font icons for IDE and terminal, fine-grained customization options. 带连字和控制台图标的圆角等宽字体,中英文宽度完美2:1,细粒度的自定义选项

PythonPyPISIL Open Font License 1.1fontmonospace-font
font.subf.dev
27.5k1.1k
lxgw/LxgwWenKai

An unprofessional open-source Chinese font derived from Fontworks' Klee One. 一款非专业的开源中文字体,基于 FONTWORKS 出品字体 Klee One 衍生。

ShellSIL Open Font License 1.1fontcjk
lxgw.github.io/2021/01/28/Klee-Simpchin/
25.2k634
be5invis/Iosevka

Versatile typeface for code, from code.

JavaScriptnpmSIL Open Font License 1.1iosevkafont
be5invis.github.io/Iosevka
22.5k674
you-dont-need/You-Dont-Need-JavaScript

CSS is powerful, you can do a lot of things without JS.

HTMLGNU General Public License v3.0cssjavascript
20.6k1.5k
rsms/inter

The Inter font family

PythonPyPISIL Open Font License 1.1typefacefont
rsms.me/inter/
19.7k477
githubnext/monaspace

An innovative superfamily of fonts for code

ShellSIL Open Font License 1.1fontfonts
monaspace.githubnext.com
19.5k326
gztchan/awesome-design

🌟 Curated design resources from all over the world.

designui
17.3k1.2k
source-foundry/Hack

A typeface designed for source code

ShellOtherfonttypeface
sourcefoundry.org/hack/
17.3k659
adobe-fonts/source-han-sans

Source Han Sans | 思源黑体 | 思源黑體 | 思源黑體 香港 | 源ノ角ゴシック | 본고딕

PythonPyPIOthersource-hanopentype
16.9k1.4k