Создать SVG только с текстом, шириной и высотой в зависимости от размера текста с помощью librsvg? - PullRequest
3 голосов
/ 19 июня 2020

Я пытаюсь создать 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 saver, поэтому вывод в формате png.

[!] [текст преобразован в png] [1]] [1] [1]: https://i.stack.imgur.com/Bx7gJ.png

...