首页 > 解决方案 > 使用librsvg根据文本大小创建仅包含文本、宽度和高度的SVG?

问题描述

我正在尝试使用一个文本元素创建一个 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

标签: svgvipslibrsvg

解决方案


推荐阅读