1

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

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

字体样式:

@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');
}

主.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');
}
4

2 回答 2

4

通读源代码,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){

    });
于 2015-03-18T15:04:33.393 回答
0

我发现没有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)
    })
于 2021-11-23T08:28:13.843 回答