diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..da057b4 --- /dev/null +++ b/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright 2013 Andrey Sitnik + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/changelog.md b/changelog.md new file mode 100644 index 0000000..70349a7 --- /dev/null +++ b/changelog.md @@ -0,0 +1,6 @@ +# 0.2.0 (2019-09-06) +* New: 支持配置 svg2ttf 的 options 参数 +* Fix: 部分字体基线错位 +* Fix: 升级 svgpath,修复 [arcs 解析错误](https://github.com/fontello/svgpath/issues/23) +* Update: 升级除 ttf2svg 以外的所有依赖 +* Doc: 增加 MIT LICENSE,增加 changelog.md diff --git a/doc/api.md b/doc/api.md index a7f5277..cc46f39 100644 --- a/doc/api.md +++ b/doc/api.md @@ -1,6 +1,5 @@ # API - ## 生成一个字体 使用`fontCarrier.create(options)`生成一个空白字体对像 @@ -14,7 +13,7 @@ eg. -``` js +```js // 创建空白字体 var font = fontCarrier.create() @@ -24,32 +23,31 @@ var transFont = fontCarrier.transfer('./test/test.ttf') // var buffer = fs.readFileSync('./test/test.ttf') // var transFont = fontCarrier.transfer(buffer) ``` + ## 导出字体 -一旦你拿到一个字体对象后,你可以选择导出它,默认会生成 svg,ttf,woff,eot 四种格式。 +一旦你拿到一个字体对象后,你可以选择导出它,默认会生成 svg,ttf,woff,woff2,eot 四种字体格式。 `font.output(options)` * options.path 可选。导出的文件路径,不需要后缀 -* options.types 可选。导出的字体类型默认是 ['ttf','eot','woff','svg'] +* options.types 可选。导出的字体类型默认是 ['ttf', 'eot', 'woff', woff2, 'svg'] 返回一个对象,包含导出的所有字体的buffer eg. -``` js +```js font.output({ path: './iconfont', types: [ttf] }) - ``` ## 相关对象 font-carrier 里面有三种对象 font,fontface,glyph。每个对象都有自己的构造参数包含一些初始化信息。所有的初始化参数后面都可以使用 `get(key)`,`set(key,value)` 来进行简单的操作。 - ### font 对象 一个 font 对象就表示解析后的字体对象,包含字体所有的信息 @@ -60,7 +58,6 @@ font-carrier 里面有三种对象 font,fontface,glyph。每个对象都有 * horizAdvX: 字体的水平画布大小,默认是 1024 * vertAdvY: 字体的垂直画布大小,默认是 1024 - #### `font.getFontface()` 获取对应的 fontface 对象 @@ -86,7 +83,7 @@ font-carrier 里面有三种对象 font,fontface,glyph。每个对象都有 * key是对应的字,也可以是 unicode * value是对应的svg图形 2. font.setSvg({key,value}) 可用于设置多个 - key,value同上,主要可以使用object的方式一次性设置多个 + * key,value 同上,主要可以使用 object 的方式一次性设置多个 #### `font.getGlyph(keys)` 获取指定文字(keys)的 glyph 对象。 @@ -95,7 +92,6 @@ font-carrier 里面有三种对象 font,fontface,glyph。每个对象都有 如果是单个字就返回一个 glyph 对象,否则返回一个 hash 对象,key 是 unicode,value 是对应的 glyph 对象 - #### `font.setGlyph()` 用于针对字设置对应的 glyph 对象 有两种使用方式: @@ -104,7 +100,7 @@ font-carrier 里面有三种对象 font,fontface,glyph。每个对象都有 * key 是对应的字,也可以是 unicode * value 是对应的 glyph 对象,或者是一个 glyph 的构造参数对象 2. font.setGlyph({key,value}) 可用于设置多个 - key,value 同上,主要可以使用 object 的方式一次性设置多个 + * key,value 同上,主要可以使用 object 的方式一次性设置多个 #### `font.allGlyph()` 用于返回所有的字体对象集合 @@ -132,9 +128,6 @@ font-carrier 里面有三种对象 font,fontface,glyph。每个对象都有 返回一个对象,包含导出的所有字体的 buffer - - - ### fontface 对象 fontface 对象包含了字体的一些特殊相关信息,参数如下: @@ -144,7 +137,6 @@ fontface 对象包含了字体的一些特殊相关信息,参数如下: * ascent: 字体的上偏移量,默认是 812 * descent: 字体的下偏移量,默认是 -212 - ### glyph 字形对象 glyph 字形对象代表了具体某个字的信息。包括下面这些参数: @@ -165,7 +157,6 @@ glyph 字形对象代表了具体某个字的信息。包括下面这些参数 #### `glyph.setFont(font)` 设置当前 glyph 的字体,会按照新的字体做一系列的变换 - #### `glyph.toSvg(path,options)` 导出当前字形对象的 SVG diff --git a/doc/example.md b/doc/example.md index 8fdf126..5424cbe 100644 --- a/doc/example.md +++ b/doc/example.md @@ -1,6 +1,5 @@ # EXAMPLE - ## 案例一 使用 SVG 设置一些 icon @@ -23,15 +22,13 @@ font.setSvg('', mail) font.output({ path: './test' }) - ``` - ## 案例二 从其他字体导出一些图标到自己的库里 -``` js +```js var transFont = fontCarrier.transfer('./test/test.ttf') var gs = transFont2.getGlyph('我是方正') @@ -42,20 +39,17 @@ font.setGlyph(gs) font.output({ path: './test' }) - - ``` ## 案例三 对中文字体精简 -``` js +```js // 使用上面的 transFont // 会自动根据当前的输入的文字过滤精简字体 transFont.min('我是精简后的字体,我可以重复') transFont.output({ path: './min' }) - -``` \ No newline at end of file +``` diff --git a/lib/class/font.js b/lib/class/font.js index 1b0fe11..3846f4a 100644 --- a/lib/class/font.js +++ b/lib/class/font.js @@ -220,7 +220,7 @@ var Font = Base.extend({ * 导出字体 * @param {object} options 导出参数 * @param {string} options.path 目标地址,没有后缀。可以不传,这样就会生成一个buffer对象,可以自己处置。 - * @param {string} options.types 导出的字体格式,默认是 ['svg', 'ttf', 'eot', 'woff'] + * @param {string} options.types 导出的字体格式,默认是 ['svg', 'ttf', 'eot', 'woff', 'woff2'],lib/helper/engine.js 中的 ALL_FONTS_TYPES * * @return {array} 字体buffer对象数组 */ @@ -234,4 +234,4 @@ var Font = Base.extend({ }) -module.exports = Font \ No newline at end of file +module.exports = Font diff --git a/package.json b/package.json index bde56bb..963b93d 100644 --- a/package.json +++ b/package.json @@ -1,16 +1,11 @@ { "name": "font-carrier", - "version": "0.1.0", + "version": "0.2.0", "description": "字体搬运工,中文字体解决方案,iconfont", "main": "./lib/index.js", "scripts": { "test": "node ./test/index.js" }, - "keywords": [ - "font", - "webfont", - "font-carrier" - ], "author": [ "purplebamboo ", "yisibl " @@ -28,12 +23,30 @@ "ttf2woff2": "^3.0.0", "xmldom": "^0.1.27" }, + "devDependencies": {}, "repository": { "type": "git", "url": "git://github.com/purplebamboo/font-carrier.git" }, - "devDependencies": {}, "engines": { "node": ">= 0.4.x" - } + }, + "keywords": [ + "font", + "webfont", + "webfont", + "iconfont", + "font-cli", + "svg2ttf", + "ttf2eot", + "ttf2woff", + "ttf2svg", + "fontmin", + "font-mini", + "font subset", + "font subsetting", + "font converter", + "font-carrier" + ], + "license": "MIT" } diff --git a/readme.md b/readme.md index 13b82d1..55fcc95 100644 --- a/readme.md +++ b/readme.md @@ -13,35 +13,31 @@ font-carrier 封装了简单的 API,让你可以将某个 SVG,设置成一 - 需要图形操作客户端,请移步[panda](https://github.com/stormtea123/panda) - 需要命令行解析代码,按需精简字体,请移步 [font-collector](https://github.com/JailBreakC/font-collector) - # Features * 支持创建一个空白字体 * 支持解析已有字体(ttf,SVG) -* 支持使用 SVG来设置字的展现 -* 支持解析 SVG的各种转换还有各种非 path 图形 +* 支持使用 SVG 来设置字的展现 +* 支持解析 SVG 的各种转换还有各种非 path 图形 * 支持针对某一个字,导出对应的 SVG -* 支持导出四种浏览器主流字体(ttf,eot,woff,svg) +* 支持导出5种浏览器主流字体(ttf,eot,woff,woff2,svg) * 支持设置各种字体相关内容 - # Getting Start -如果对iconfont还不是很了解的,请先参考这篇[文章](http://purplebamboo.github.io/2014/01/09/iconfont/) +如果对 iconfont 还不是很了解的,请先参考这篇[文章](http://purplebamboo.github.io/2014/01/09/iconfont/) ## Install - -``` +```sh npm install font-carrier --save ``` - -## Use +## Usage ### Step-1:创建一个空白字体,或者解析一个已有的字体,这样都可以得到一个字体对象 -``` js +```js var fontCarrier = require('font-carrier') //创建空白字体对象 @@ -53,7 +49,7 @@ var transFont = fontCarrier.transfer('./test/test.ttf') ### Step-2:拿到字体对象后,你就可以使用 SVG 随意操作字体了 -``` js +```js //可以设置某个字对应的形状,当然 unicode 也是支持的 font.setSvg('我', fs.readFileSync('./test/svgs/circle.svg').toString()) @@ -70,23 +66,21 @@ var svg = font.getSvg('我') //也可以先拿到对应的字形对象,再导出对应的svg var glyph = transFont.getGlyph('我') glyph.toSvg() - ``` ### Step-3:使用get,set各种操作完后,你可以选择导出字体 -``` js -// 默认会导出 svg,ttf,eot,woff 四种字体, +```js +// 默认会导出 svg,ttf,eot,woff,woff2 5种字体, // 可以不传 path,这样会默认返回一个包含四个字体 buffer 的对象 font.output({ path: './iconfont' }) - ``` ### Step-4:导出字体后就可以在 Web 中使用了 -``` html +```html