Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用librsvg创建仅包含文本、基于文本大小的宽度和高度的SVG?_Svg_Vips_Librsvg - Fatal编程技术网

使用librsvg创建仅包含文本、基于文本大小的宽度和高度的SVG?

使用librsvg创建仅包含文本、基于文本大小的宽度和高度的SVG?,svg,vips,librsvg,Svg,Vips,Librsvg,我正在尝试创建一个带有单个文本元素的svg。svg的大小应该完全由文本的字体大小决定,并且它应该完全适合文本。我最接近我所寻找的是: txt_img = Vips::Image.svgload_buffer %( <svg height="#{font_size}*2"> <g> <text

我正在尝试创建一个带有单个文本元素的svg。svg的大小应该完全由文本的字体大小决定,并且它应该完全适合文本。我最接近我所寻找的是:

             txt_img = Vips::Image.svgload_buffer %(
              <svg height="#{font_size}*2">
                <g>
                <text
                    font-family="some value"
                    font-size="#{font_size}"
                    font-weight="some value"
                    fill="some value"
                    fill-opacity="some value"
                    stroke="some value"
                    stroke-width="some value"
                    dominant-baseline="hanging"
                    text-anchor="start"
                    x="0"
                    y="#{font_size}"
                  >
                  #{txt}
                  </text>
                </g>
               </svg>
             )
txt\u img=Vips::Image.svgload\u缓冲区%(
#{txt}
)
但是,正如您在所附图像中看到的,文本的底部被切断,特别是悬挂在基线下方的字母。如何调整svg的大小以完全适合文本?因为这不是在浏览器环境中呈现的,所以解决方案不能涉及css

还请注意,输出是用Vips呈现的,Vips不提供svg保护程序选项,这就是为什么输出是png格式的

[!][文本呈现为png][1][1]
[1] :

你能解释一下你的大目标吗?如果您只想将文本渲染为位图,请查看
Vips::Image.text
,它可能可以执行您想要的操作。@jcupitt我正在尝试完美地重新创建最初在客户端渲染的svg。我尝试使用vips::image.text,问题是我看不到如何让它尊重svg属性,如笔划宽度、笔划颜色和填充颜色,这实际上相当于生成气泡字母。我在svg呈现中遇到的问题似乎是librsvg不解析主要的基线属性。另外,librsvg似乎不支持加载外部字体,而不是文件系统的本地字体,这也是我需要的(我知道vips::image.text支持通过fontfile参数加载字体,但出于上述原因,我同样看不到如何使其支持我的用例)啊,我理解。是的,这听起来很棘手:(