stylus.url() base64编码woff2字体

stylus.url() base64 encodes woff2 font

我使用 Stylus 编写 CSS 和 stylus.url() 方法对所有图像进行 base64 编码。我的问题是手写笔也会对其中一种字体进行编码。它只是一种正在编码的 woff2 字体。所有其他的都保留为 URL。

如何在使用 stylus.url() 方法时忽略字体文件或以其他方式防止它被 base64 编码。

font.styl:

@font-face {
    font-family: 'GillSansMTStd';
    src: url('../fonts/2D770A_6_0.eot');
    src: local('☺︎'),
         url('../fonts/2D770A_6_0.woff2') format('woff2'),
         url('../fonts/2D770A_6_0.woff') format('woff'),
         url('../fonts/2D770A_6_0.ttf')  format('truetype');
}

main.css:

@font-face {
    font-family: 'GillSansMTStd';
    src: url("../fonts/2D770A_6_0.eot");
    src: local('☺︎'),
         url("data:application/font-woff2;base64,d09GMgABA[...]") format('woff2'),
         url('../fonts/2D770A_6_0.woff') format('woff'),
         url('../fonts/2D770A_6_0.ttf')  format('truetype');
}

通读 stylus.url() 的源代码,我找到了 mimes 选项。我没有在任何地方找到记录。我可以通过设置该选项来设置我想要 base64 编码的 mime 类型:

stylus(str)
    .set('filename', __dirname + '/css/test.styl')
    .define('url', stylus.url({
        mimes: {
            '.gif': 'image/gif',
            '.png': 'image/png',
            '.jpg': 'image/jpeg',
            '.jpeg': 'image/jpeg',
            '.svg': 'image/svg+xml'
        }
    }))
    .render(function(err, css){

    });

我发现没有 paths 选项就没有效果

stylus(stylus_str)
    .use(autoprefixer())
    .define('url', stylus.url({
        limit: 30000,
        mimes: {
            '.gif': 'image/gif',
            '.png': 'image/png',
            '.jpg': 'image/jpeg',
            '.jpeg': 'image/jpeg',
            '.svg': 'image/svg+xml'
        },
        paths: [dirname(file_path)]
    }))
    .render((err, output)=>{
        console.log(output.yellow)
    })