<p align="center">
    <img src="http://upload.ouliu.net/i/202001081600304i7x6.png" width="240">
</p>


# cwfont

Vector font generation tool(svg files convert to iconfont)

[![Build Status](https://travis-ci.org/chowa/cwfont.svg?branch=master)](https://travis-ci.org/chowa/cwfont)
[![npm](https://img.shields.io/npm/v/cwfont.svg)](https://www.npmjs.com/package/cwfont)
[![npm](https://img.shields.io/npm/dm/cwfont.svg)](https://www.npmjs.com/package/cwfont)
[![license](https://img.shields.io/github/license/mashape/apistatus.svg?maxAge=2592000)](https://opensource.org/licenses/MIT)

## Install

```
npm i cwfont -g
```

## Cli Usage

### Create

```
cwfont create <dir>
```

### Compile

```
cwfont compile
```

Modify `.cwfontrc`,Customize the configuration input and output directories, enable hash and exempt CSS modules, and view the specific configuration [options](#options). (You can use js/json/yaml/yml to write it)

### Preview

```
cwfont preview
```

## API

```js
const ChowaFont = require('cwfont');
```

### Generate font

```js
ChowaFont.generator({
    // executive directory
    cwd: 'xxx',
    ...options
});
```

## Options

```js
{
    // compile options
    compile: {
        // compile syntax, optional CSS | SCSS | less
        syntax: 'css',
        // start value corresponding to font Unicode
        startPoint: 51666,
        // font name
        fontName: 'chowa-iconfont',
        // font file name
        styleFileName: 'chowa-iconfont',
        // font selector, {glyph}} must be preceded by a separator, such as: -
        selector: '.cw-icon-{{glyph}}'
    },
    // exempt CSS module
    global: false,
    // using stylelint to format output code
    stylelint?: boolean;
    // has options
    hash: {
        // font file with hash
        font: false,
        // style file with hash
        style: false,
        // length of hash
        len: 8
    },
    // create preview file
    preview: true,
    // format specific configuration view https://prettier.io/docs/en/options.html
    format: {
        printWidth: 120,
        tabWidth: 4,
        useTabs: false,
        semi: true,
        endOfLine: 'lf'
    },
    // input options
    input: {
        // svg file directory
        svgsDir: './svg-icons',
        // style file template
        styleTpl: null,
        // preview file template
        previewTpl: null
    },
    // output options
    output: {
        // font file saving directory
        font: './',
        // style file saving directory
        style: './',
        // preview file saving directory
        preview: './'
    }
}
```

## Customize template

* [style template](src/template/style.tpl)
* [preview template](src/template/preview.tpl)

## Attention

* Svg file names should be free of spaces and special symbols
* The 'selector' option '{{glyph}}' in the configuration file must be preceded by a separator
* Drawing SVG graph with single path

## License

[MIT](http://opensource.org/licenses/MIT)

Copyright (c) 2020-present, chowa.cn