我正在尝试使用一个文本元素创建一个 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>
)
但是,正如您在所附图像中看到的那样,文本的底部被截断,尤其是悬挂在基线下方的字母。如何调整 svg 的大小以完全适合文本?由于这不是在浏览器环境中呈现的,因此解决方案不得涉及 css。
另请注意,输出是使用 Vips 呈现的,它不提供 svg 保护程序选项,这就是输出为 png 格式的原因。
[!][文本呈现为 png][1]][1] [1]: https://i.stack.imgur.com/Bx7gJ.png