2015-11-04 25 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的一部分。 –