为什么SVG不起作用?rsvg转换

为什么SVG不起作用?rsvg转换,svg,transform,scaling,viewbox,rsvg,Svg,Transform,Scaling,Viewbox,Rsvg,我正在使用SVG图形为我正在开发的应用程序创建图像。作为一个例子,我将使用我最简单的图像之一 <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.d

我正在使用SVG图形为我正在开发的应用程序创建图像。作为一个例子,我将使用我最简单的图像之一

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" width="100%" height="100%" viewBox="0 0 270 50" 
    preserveAspectRatio="xMaxYMax meet">
    <path d="M 25 0 l 220 0 a 25 25 0 0 1 0 50 l -220 0 a 25 25 0 0 1 0 -50"
        stroke="none" fill="blue"/>
    <text text-anchor="middle" x="50%" y="35" font-size="30" fill="white"
        font-family="Montserrat">Login</text>
</svg>
我一直认为,设置
preserveAspectRatio=“xMaxYMax meet”
会使我的
viewBox
放大到我的视口大小。然而,当我实现它时,我得到了以下结果

login-1x.png

login-2x.png

login-3x.png

你可以看到根本没有缩放。事实上,如果我加上

<rect width="100%" height="100%" x="0" y="0" fill="none" stroke="white"/>

要看到100%乘100%矩形的轮廓,我得到了这个

100%乘100%提纲


因此,对我来说很明显,出于某种原因,rsvg convert将100%解释为viewBox的100%,而不是视口。我做错了什么?

你的SVG看起来不错。可能是rsvg不正确支持ViewBox。也许在他们的追踪器上发布一个bug。我同意@Paul_LeBeau。。这是代码笔上50%宽度和高度的svg,上面的svg代码仍然保持其
preserveSpectratio
@PaulLeBeau嗯,好吧,这很奇怪,我以为librsvg是SVG解析库……但我想一切都可能出错。感谢您让我知道。rsvg/librsvg只是Gnome的SVG解析库。它看起来相当成熟,但我不使用它,所以我不知道它对SVG规范的实现有多完整或彻底。@PaulLeBeau有没有其他的实现可以推荐给在POSIX系统上工作的人?
<rect width="100%" height="100%" x="0" y="0" fill="none" stroke="white"/>