javascript - 使用从 gulp-iconfont 生成的 css,字体符号无法正确显示

标签 javascript css svg gulp icon-fonts

所以,我正在使用 gulp-iconfont从 svg 图标生成图标字体。我用下一种方式设置了任务:

gulp.task('iconfont', function(){
  gulp.src(['src/assets/icons/*.svg'])
    .pipe($.iconfont({
      fontName: 'material',
      normalize: true
    }))
    .on('codepoints', function(codepoints) {
      console.log(codepoints);
      gulp.src('src/templates/material.styl')
        .pipe($.consolidate('mustache', {
          glyphs: codepoints,
          fontName: 'material',
          fontPath: '../fonts/',
          className: 'md'
        }))
        .pipe(gulp.dest('src/styles/plugins'));
    })
    .pipe(gulp.dest('build/fonts/'));
});

console.log(codepoints) 给我类似的东西:

[ { name: 'notifications', codepoint: 57345 },
  { name: 'offline', codepoint: 57346 },
  { name: 'online', codepoint: 57347 },
...
]

我在我的 CSS 中使用这个代码点来生成如下内容:

.md-notifications {
  content: "\57345";
}

而且它不起作用,有一个空白区域而不是我的图标。但是,如果我使用直接从生成的 svg 字体中获取的代码点,它就可以工作:

.md-notifications {
  content: "\E001"
}

我做错了什么?

最佳答案

在 JavaScript 中,当反斜杠后跟数字时,您正在创建一个八进制转义序列。斜线后的数字需要以 8 为基数(八进制)。

代码点 57345 应指定为“\160001”。

您还可以使用“\u”前缀进行十六进制转义序列。所以57345也可以写成“\uE001”。

你声称的第二个是工作“\E001”是不对的。并且不会按照您的想法去做。它应该只生成字符串“E001”。

关于javascript - 使用从 gulp-iconfont 生成的 css,字体符号无法正确显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30557122/

相关文章:

Javascript 仅删除字符串末尾多余的下划线

html - inline-block 内容在不同的浏览器中显示不同的结果?

html - 是否可以制作 HTML/CSS 折线的一部分,贝塞尔曲线?

svg - SVG 平移变换函数的单位

javascript - 使带有文本的 svg 多边形按钮在鼠标悬停时改变颜色?

javascript - 事件监听器 - 等效于 Firefox?

javascript - 按值分组到数组、includes()、自定义结构

javascript - 如何更改信息窗口(气泡)中的关闭按钮?

html - 如果父元素高度很短,则在父元素中创建一个相对子元素

javascript - 动画 SVG anchor