2015-11-04 21 views
0

处理我好几天试图找到解决如下问题:Inkscape中不允许编辑SVG的文本行,一旦它被保存为纯SVG或冲刷

  • 创建一个SVG文本(简单地用文字工具单击添加文本,不拖开帧)
  • 类型输入来创建一个多行文本,添加几行文字
  • 保存为纯SVG或优化SVG
  • 或者在命令行中处理冲刷

用Inkscape重新打开:您无法编辑文本,但它显示正确,但当您转到下一行(鼠标或键盘向下箭头)时,光标停留在第一行。

这是一个令人讨厌的bug,在Inkscape中运行一段时间并且对Web版本没有帮助。

但也有解决方案...查看以下螺纹的手动(在VIM)替换所有tspans: Vim search replace regex + incremental function

而看到我的回答如下更正,以便在SVG代码,让您在Inkscape的文件恢复工作秩序!

回答

0

桑达是非常有用的,以便纠正在批处理文件:

cd /home/user/my/svg/files 
sed -i.bak 's|<svg|<svg\nxmlns:xlink="http://www.w3.org/1999/xlink"\nxmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"|g' *.svg 

这将运行在当前文件夹中所有的SVG文件和:

  1. 创建.bak文件,你可以重新命名为svg为了获得您的原始文件(但我强烈主张复制您的工作文件夹,以避免可怕的错误时摆脱sed)

  2. 将带有换行符(\n)正确的命名空间

然后:

sed -i.2.bak 's|<tspan|<tspan sodipodi:role="line" |g' *.svg 

这追加sodipodi:role="line"到当前文件夹中所有TSPAN标签,并创建file.2.bak备份。

+0

作为一个旁注,在搜索中有一个选项来保存编辑器数据,但我不确定它仍然优化了svg。 –

0

SVG文件当前不支持多行文本。 Inkscape使用自定义的XML属性来跟踪哪些文本是文本块的一部分。

当您保存为优化SVG时,Inkscape会去除所有自定义XML属性并写入一个vanilla SVG文件。所以,什么是文本块的感觉消失了。

+0

是的,但希望冲刷不会删除'',包括''。当你通过首先创建一个带有文本工具的框架来创建一个合适的(流动的)文本块时,它在浏览器中甚至在nautilus文件浏览器中都不能正确显示......我真的不明白为什么会有这个限制。 SVG可以是支持多行文本流的出色格式。 –

+0

SVG文件旨在作为图形描述格式。与PDF不同。它并没有真正的自动布局功能。话虽如此,简单的多行文本可能会成为SVG2的一部分。 –