# svgtofont
**Repository Path**: jishichang/svgtofont
## Basic Information
- **Project Name**: svgtofont
- **Description**: Read a set of SVG icons and ouput a TTF/EOT/WOFF/WOFF2/SVG font.
- **Primary Language**: JavaScript
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2020-11-27
- **Last Updated**: 2021-01-16
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
svg to font
---
Read a set of SVG icons and ouput a TTF/EOT/WOFF/WOFF2/SVG font, Generator of fonts from SVG icons.
[Install](#install) · [Usage](#usage) · [Font Usage](#font-usage) · [API](#api) · [options](#options) · [npm](http://npm.im/svgtofont) · [License](#license)
Features:
- Supported font formats: `WOFF2`, `WOFF`, `EOT`, `TTF` and `SVG`.
- Support SVG Symbol file.
- Allows to use custom templates (example `css`, `less` and etc).
- Automatically generate a preview site.
**Icon Font Created By svgtofont**
- [file-icons](https://uiw-react.github.io/file-icons/) File icons in the file tree.
- [uiw-iconfont](https://github.com/uiw-react/icons) The premium icon font for [@uiw-react](https://github.com/uiw-react) Component Library..
## Install
```bash
npm i svgtofont
```
## Usage
```js
const svgtofont = require('svgtofont');
const path = require('path');
svgtofont({
src: path.resolve(process.cwd(), 'icon'), // svg path
dist: path.resolve(process.cwd(), 'fonts'), // output path
fontName: 'svgtofont', // font name
css: true, // Create CSS files.
}).then(() => {
console.log('done!');
});
```
Or
```js
const svgtofont = require("svgtofont");
const path = require("path");
svgtofont({
src: path.resolve(process.cwd(), "icon"), // svg path
dist: path.resolve(process.cwd(), "fonts"), // output path
fontName: "svgtofont", // font name
css: true, // Create CSS files.
startNumber: 20000, // unicode start number
svgicons2svgfont: {
fontHeight: 1000,
normalize: true
},
// website = null, no demo html files
website: {
title: "svgtofont",
// Must be a .svg format image.
logo: path.resolve(process.cwd(), "svg", "git.svg"),
version: pkg.version,
meta: {
description: "Converts SVG fonts to TTF/EOT/WOFF/WOFF2/SVG format.",
keywords: "svgtofont,TTF,EOT,WOFF,WOFF2,SVG"
},
description: ``,
links: [
{
title: "GitHub",
url: "https://github.com/jaywcjlove/svgtofont"
},
{
title: "Feedback",
url: "https://github.com/jaywcjlove/svgtofont/issues"
},
{
title: "Font Class",
url: "index.html"
},
{
title: "Unicode",
url: "unicode.html"
}
],
footerInfo: `Licensed under MIT. (Yes it's free and open-sourced`
}
}).then(() => {
console.log('done!');
});;
```
## API
```js
const {
createSVG,
createTTF,
createEOT,
createWOFF,
createWOFF2,
createSvgSymbol
} = require("svgtofont/src/utils");
const options = { ... };
createSVG(options) // SVG => SVG Font
.then(UnicodeObjChar => createTTF(options)) // SVG Font => TTF
.then(() => createEOT(options)) // TTF => EOT
.then(() => createWOFF(options)) // TTF => WOFF
.then(() => createWOFF2(options)) // TTF => WOFF2
.then(() => createSvgSymbol(options)) // SVG Files => SVG Symbol
```
## options
> svgtofont(options)
### dist
> Type: `String`
> Default value: ~~`dist`~~ => `fonts`
svg path
### outSVGPath
> Type: `Boolean`
> Default value: `false`
Output `./dist/svgtofont.json`, The content is as follows:
```js
{
"adobe": ["M14.868 3H23v19L14.868 3zM1 3h8.138L1 22V3zm.182 11.997H13.79l-1.551-3.82H8.447z...."],
"git": ["M2.6 10.59L8.38 4.8l1.69 1.7c-.24.85.15 1.78.93 2.23v5.54c-.6.34-1 .99-1..."],
"stylelint": ["M129.74 243.648c28-100.109 27.188-100.5.816c2.65..."]
}
```
Or you can generate the file separately:
```js
const { generateIconsSource } = require('svgtofont/src/generate');
const path = require('path');
async function generate () {
const outPath = await generateIconsSource({
src: path.resolve(process.cwd(), 'svg'),
dist: path.resolve(process.cwd(), 'dist'),
fontName: 'svgtofont',
});
}
generate();
```
### src
> Type: `String`
> Default value: `svg`
output path
### emptyDist
> Type: `String`
> Default value: `false`
Clear output directory contents
### fontName
> Type: `String`
> Default value: `iconfont`
The font family name you want.
### unicodeStart
> Type: `Number`
> Default value: `10000`
unicode start number
### clssaNamePrefix
> Type: `String`
> Default value: font name
Create font class name prefix, default value font name.
### css
> Type: `Boolean`
> Default value: `false`
Create CSS/LESS files, default `true`.
### svgicons2svgfont
This is the setting for [svgicons2svgfont](https://github.com/nfroidure/svgicons2svgfont/tree/dd713bea4f97afa59f7dba6a21ff7f22db565bcf#api)
#### svgicons2svgfont.fontName
> Type: `String`
> Default value: `'iconfont'`
The font family name you want.
#### svgicons2svgfont.fontId
> Type: `String`
> Default value: the options.fontName value
The font id you want.
#### svgicons2svgfont.fontStyle
> Type: `String`
> Default value: `''`
The font style you want.
#### svgicons2svgfont.fontWeight
> Type: `String`
> Default value: `''`
The font weight you want.
#### svgicons2svgfont.fixedWidth
> Type: `Boolean`
> Default value: `false`
Creates a monospace font of the width of the largest input icon.
#### svgicons2svgfont.centerHorizontally
> Type: `Boolean`
> Default value: `false`
Calculate the bounds of a glyph and center it horizontally.
#### svgicons2svgfont.normalize
> Type: `Boolean`
> Default value: `false`
Normalize icons by scaling them to the height of the highest icon.
#### svgicons2svgfont.fontHeight
> Type: `Number`
> Default value: `MAX(icons.height)`
The outputted font height (defaults to the height of the highest input icon).
#### svgicons2svgfont.round
> Type: `Number`
> Default value: `10e12`
Setup SVG path rounding.
#### svgicons2svgfont.descent
> Type: `Number`
> Default value: `0`
The font descent. It is useful to fix the font baseline yourself.
**Warning:** The descent is a positive value!
#### svgicons2svgfont.ascent
> Type: `Number`
> Default value: `fontHeight - descent`
The font ascent. Use this options only if you know what you're doing. A suitable
value for this is computed for you.
#### svgicons2svgfont.metadata
> Type: `String`
> Default value: `undefined`
The font [metadata](http://www.w3.org/TR/SVG/metadata.html). You can set any
character data in but it is the be suited place for a copyright mention.
#### svgicons2svgfont.log
> Type: `Function`
> Default value: `console.log`
Allows you to provide your own logging function. Set to `function(){}` to
disable logging.
### svg2ttf
This is the setting for [svg2ttf](https://github.com/fontello/svg2ttf/tree/c33a126920f46b030e8ce960cc7a0e38a6946bbc#svg2ttfsvgfontstring-options---buf)
#### svg2ttf.copyright
> Type: `String`
copyright string
#### svg2ttf.ts
> Type: `String`
Unix timestamp (in seconds) to override creation time
#### svg2ttf.version
> Type: `Number`
font version string, can be Version `x.y` or `x.y`.
### website
Define preview web content. Example:
```js
{
...
// website = null, no demo html files
website: {
title: "svgtofont",
logo: path.resolve(process.cwd(), "svg", "git.svg"),
version: pkg.version,
meta: {
description: "Converts SVG fonts to TTF/EOT/WOFF/WOFF2/SVG format.",
keywords: "svgtofont,TTF,EOT,WOFF,WOFF2,SVG",
favicon: "./favicon.png"
},
footerLinks: [
{
title: "GitHub",
url: "https://github.com/jaywcjlove/svgtofont"
},
{
title: "Feedback",
url: "https://github.com/jaywcjlove/svgtofont/issues"
},
{
title: "Font Class",
url: "index.html"
},
{
title: "Unicode",
url: "unicode.html"
}
]
}
}
```
#### website.template
> Type: `String`
> Default value: [index.ejs](src/website/index.ejs)
Custom template can customize parameters. You can define your own template based on the [default template](src/website/index.ejs).
```js
{
website: {
template: path.join(process.cwd(), "my-template.ejs")
}
}
```
#### website.index
> Type: `String`
> Default value: `font-class`, Enum{`font-class`, `unicode`, `symbol`}
Set default home page.
## Font Usage
Suppose the font name is defined as `svgtofont`, The default home page is `unicode`, Will generate:
```bash
font-class.html
index.html
symbol.html
svgtofont.css
svgtofont.eot
svgtofont.less
svgtofont.svg
svgtofont.symbol.svg
svgtofont.ttf
svgtofont.woff
svgtofont.woff2
```
Preview demo `font-class.html`, `symbol.html` and `index.html`. Automatically generated style `svgtofont.css` and `svgtofont.less`.
### symbol svg
```xml
```
### Unicode
```html
```
### Class Name
Support for `.less` and `.css` styles references.
```html
```
## License
Licensed under the [MIT License](https://opensource.org/licenses/MIT).