有没有办法在pysvg中添加换行符?

mer*_*011 4 python svg

考虑以下最小工作示例:

from pysvg.text import *
from pysvg.builders import *

doc = svg()
doc.addElement(text("hello\nWorld", 150, 50))
doc.save('HelloWorld2.svg')
Run Code Online (Sandbox Code Playgroud)

当以图形方式查看生成的svg时,由于XML不遵守换行符,因此换行符已转换为一个空格。

<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink"  >
<text font-size="12" y="50" x="150"  >
hello
World</text>
</svg>
Run Code Online (Sandbox Code Playgroud)

如何获得换行符以显示在SVG中?

Jan*_*ila 5

SVG规范的10.1节提供了三种选择:

每个“文本”元素都会导致呈现单个文本字符串。SVG不执行自动换行或自动换行。要获得多行文本的效果,请使用以下方法之一:

  • 作者或创作包需要预先计算换行符,并使用多个“文本”元素(每行文本一个)。
  • 作者或创作包需要预先计算换行符,并使用单个“ text”元素和一个或多个“ tspan”子元素,并为属性“ x”,“ y”,“ dx”和“ dy”使用适当的值为开始换行的那些字符设置新的开始位置。(此方法允许跨多行文本选择用户文本-请参阅文本选择和剪贴板操作。)
  • 表示要在另一个XML名称空间中呈现的文本,例如XHTML内嵌在'foreignObject'元素内。(注意:此方法的确切语义目前尚未完全定义。)