考虑以下最低工作示例:
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中显示换行符?
答案 0 :(得分:4)
Section 10.1 of the SVG spec有三个选项:
每个'text'元素都会生成一个单独的文本字符串。 SVG 不执行自动换行或自动换行。实现了 多行文本的效果,请使用以下方法之一:
- 作者或创作包需要预先计算换行符并使用多个“文本”元素(每行文本一个)。
- 作者或创作包需要预先计算换行符,并将一个“text”元素与一个或多个“tspan”子元素一起使用 具有适当值的元素'x','y','dx'和 'dy'为那些开始新的角色设置新的起始位置 线。 (此方法允许跨多行进行用户文本选择 文本 - 请参阅文本选择和剪贴板操作。)
- 表示要在另一个XML命名空间中呈现的文本,例如嵌入在“foreignObject”元素中的内嵌的XHTML。 (注意: 这种方法的确切语义没有完全定义 这一次。)