gulp-iconfont任务没有填充unicode值

时间:2016-01-03 08:56:20

标签: gulp

我正在从咕噜咕噜咕噜咕噜咕噜咕噜咕噜咕噜咕噜咕噜咕噜咕噜咕噜咕噜咕噜咕噜咕噜咕噜咕噜咕噜呜呜呜

依赖关系:

"devDependencies": {
  "gulp": "^3.9.0",
  "gulp-iconfont": "^5.0.1"
}

Gulpfile:

我有以下gulfile设置来构建字体:

var gulp     = require('gulp'),
    iconfont = require('gulp-iconfont');

var paths = {
    fonts:   'site/fonts/',
    icons:   'site/fonts/icons/src/',
    styles:  'site/styles/',
    scripts: 'site/scripts/'
};

gulp.task('icons', function(){
    return gulp.src([paths.icons + '*.svg'])
    .pipe(iconfont({
        fontName: 'icons',
        appendUnicode: true,
        formats: ['woff']
    }))
    .on('glyphs', function(glyphs, options) {
         console.log(glyphs, options);
         // the value for unicode in the glyphs object is a question mark in a box
     })
    .pipe(gulp.dest(paths.styles));
});

问题:

当我在控制台上记录字形对象时,字形对象中unicode的值是一个框中的问号。

gulp-iconfont

我尝试过从头开始重新安装所有模块,以防万一有些不寻常,没有运气。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:2)

背景故事:

好的 - 所以我挖到了svgicons2svgfont模块并找到了罪魁祸首。大约line 48 of src/metadata.js有以下内容:

metadata.unicode[0] = String.fromCodePoint(options.startUnicode++);

我注意到在这之下,模块正在对生成的字符串进行一些操作,以获取附加到文件名的unicode值。以下是提取unicode值的过程:

metadata.unicode[0].codePointAt(0).toString(16).toUpperCase();

<强>解决方案:

我对我的scss模板文件中的glyph变量做了同样的事情,现在我的unicode值正确填充。

$icons: (<% _.each(glyphs, function(glyph) { %>
    <%= glyph.name %>: "\<%= glyph.unicode[0].codePointAt(0).toString(16).toUpperCase() %>",<% }) %>
);

这对我来说似乎非常荒谬和令人困惑。由于没有关于使用svgicons2svgfont从这些库创建css模板的文档,所以更令人沮丧。

我希望这可以帮助其他人同样令人沮丧的

我将尝试将此作为拉动请求,以便将来使用这些模块的人更清楚。