首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >librsvg css与后代选择器不匹配

librsvg css与后代选择器不匹配
EN

Stack Overflow用户
提问于 2017-06-27 15:00:43
回答 1查看 271关注 0票数 0

我正在尝试使用librsvg来呈现一些以SVG格式生成的图表(一个更大的项目的一部分)。但是,渲染结果看起来与在web浏览器中打开SVG文件时的外观有很大不同。

通过一点一点地拆分SVG文件,我发现其中一个关键原因是我的CSS样式没有被应用。

这是一个mcve

代码语言:javascript
复制
<?xml version="1.0"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" width="500" height="300" version="1.1">
    <style type="text/css"><![CDATA[

g path {
    fill: none;
    stroke: #00285f;
}
    
    
    ]]></style>
    
    <g class="parent" transform="translate(50,50)">
        <path class="mypath" d="M0,6V0H430V6" />
        <line y2="6" x2="0" />
    </g>
    

</svg>

在web浏览器中,它看起来像这样:

当我使用以下命令转换为png时:

代码语言:javascript
复制
rsvg-convert -f png -o s2.png s2.svg

它看起来是这样的:

您可以看到,填充和描边并未应用于路径,因此它显示为一个黑色矩形。

如果我将CSS更改为:

代码语言:javascript
复制
path {
    fill: none;
    stroke: #00285f;
}

那么它的样式是正确的。

这里发生了什么事?librsvg肯定支持像CSS后代选择器这样基本的东西吗?我已经浏览了文档,但没有发现提到这样的基本限制。

或者我使用CSS的方式只能在浏览器中工作?

我使用的是librsvg 2.39.0。

EN

回答 1

Stack Overflow用户

发布于 2017-07-11 15:08:17

我最终抽出时间研究了librsvg源代码。

至少从librsvg 2.41.0开始,后代选择器(以及所有其他类型的组合器)似乎不受支持。

正如@RobertLongson所指出的,Bug #702537涵盖了这一点。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44774063

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档