在pysvg中是否有一种方法可以插入换行符?

5
考虑以下最小工作示例:
from pysvg.text import *
from pysvg.builders import *

doc = svg()
doc.addElement(text("hello\nWorld", 150, 50))
doc.save('HelloWorld2.svg')

当呈现出来的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>

如何在SVG中显示换行?


这是一个换行符。你的意思是要一个文字形式的\n吗? - sshashank124
@sshashank124,澄清一下:如果在Firefox中加载SVG文件,你会看到XML中的换行符被替换为一个空格。我希望在实际的SVG图像视图中能够显示换行符。 - merlin2011
1个回答

5

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

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接