如何在SVG 1.1中正确显示多行文字?

Jef*_*ffV 4 svg text multiline

我想采用多行文本块并在SVG中显示它.我想把线条保持为线条.有没有正确的方法来做到这一点?

我使用Inkscape作为基本绘图,使用Batik进行渲染.似乎两人不同意如何做到这一点.

Inkscape正在创建这样的结构:

<flowRoot
       xml:space="preserve"
       id="flowRoot3089"
       style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
       transform="translate(19.71875,334.88681)">
   <flowRegion id="flowRegion3091">
        <rect id="rect3093" width="50.78125" height="75" x="34.765625" y="155.89932"/>
   </flowRegion>

    <flowPara id="flowPara3123">Item 1</flowPara>
    <flowPara id="flowPara3137">Item 2</flowPara>
    <flowPara id="flowPara3139">Item 3</flowPara>
</flowRoot>
Run Code Online (Sandbox Code Playgroud)

但是,由于某种原因,这对Batik来说是不可接受的.

Dav*_*vid 5

Inkscape将文档的SVG版本设置为1.1而不是1.2,但仍使用流动文本.

对您而言,简单的解决方案是编辑svg文档并将SVG版本属性更改为1.2.Inkscape不会将其更改回1.1并且它可以处理1.2版本说明符.

然后Batik会很乐意提供大多数功能,但是如果你弄乱Inkscape创建的流根中的几乎任何文本属性,你也会遇到另一个Inkscape错误.它将背景颜色设置为文本的选定前景色,这意味着如果在Inkscape中将文本颜色设置为红色,当蜡染渲染它时,您将看到一个红色方块......文本在那里,但是它的红色也是,所以不太明显.这是一个Inkscape错误,在flowRegion - > rect元素的代码中清晰可见.

解决方案是在使用inkscape调整flowRect属性后手动编辑它们.

如果你使用标准的svg输出而不是inkscape svg输出,Batik似乎也会做得更好.