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

时间:2014-05-07 08:21:26

标签: python svg

考虑以下最低工作示例:

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中显示换行符?

1 个答案:

答案 0 :(得分:4)

Section 10.1 of the SVG spec有三个选项:

  

每个'text'元素都会生成一个单独的文本字符串。 SVG   不执行自动换行或自动换行。实现了   多行文本的效果,请使用以下方法之一:

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