文件 專案與檔案

匯入 SVG

把 Illustrator、Affinity Designer、Inkscape 或 Figma 的向量作品帶進來,變成可編輯的形狀圖層,以及哪些 SVG 功能撐不過這趟路。

SVG 在這裡會變成真正的幾何:路徑變成形狀圖層,帶著你可以用節點工具編輯的錨點和控制桿,而不是一張畫的圖片。檔案裡的群組會變成圖層面板裡的群組。

有四條路可以進來,而且它們走的是同一個讀取器:

  • 檔案 ▸ 匯入 ▸ SVG… 匯入你目前開著的專案
  • 檔案 ▸ 開啟… 選一個 SVG,會圍著它建一份新的未命名專案
  • 把檔案丟在畫布上會匯入它;丟在別處則會把它開成一個新專案
  • Ctrl+V 貼上從別的軟體複製來的 SVG 標記

從檔案匯入時,外層群組取檔案的名字。從剪貼簿貼上時,它叫做 SVG。

什麼變成什麼

SVG 裡Celas Studio 裡
g、a,以及巢狀的 svg一個群組圖層
path、rect、circle、ellipse、polygon、polyline、line各自一個形狀圖層
image一個影像圖層
linearGradient、radialGradient用到它的那個形狀上的漸層填色或筆畫
text一個空的佔位圖層,用前幾個字命名

每一個路徑指令都讀得懂,包括橢圓弧,而且全部轉成三次貝茲曲線。複合路徑(一個字母 O、一個甜甜圈,任何帶洞的東西)會維持成一個形狀圖層,內部的輪廓原封不動,所以洞還是洞,整體也仍然可以當成單一物件編輯。

填色、填色規則、筆畫、筆畫寬度、端點和轉角、不透明度和漸層全部都會過來,而且筆畫寬度會跟著作品一起縮放,所以線條粗細看起來是對的。檔案裡標成隱藏的東西,進來時也是隱藏的。

顏色會依繪圖模型用到的每一種 CSS 寫法讀取:具名顏色、#RGB、#RGBA、#RRGGBB、#RRGGBBAA、rgb() 和 rgba(),數值寫法裡也接受百分比。四位和八位的十六進位寫法會把它們的 alpha 一起帶過來。

rx 和 ry 不同的圓角矩形,匯入後真的會是橢圓形的角。rx 和 ry 相同時,它會維持成一個普通矩形並改帶一個圓角半徑,這樣節點工具的圓角控制點在它身上仍然有用。

連結的 <image> 會相對於 SVG 自己的資料夾去解析,所以參照到同層檔案的作品載得進來。內嵌的 data: URI 則會直接解碼。

匯入的一個標誌在圖層面板裡,它的複合路徑在畫布上被選取,節點工具顯示著兩條輪廓上的錨點。

群組不帶變形

檔案裡的變形會被烘進作品本身,所以你拿到的群組是純粹的結構,自己不帶旋轉或縮放。圖會準確落在檔案說的位置,之後你要旋轉或縮放這個群組,底下也不會有東西跟著位移。

哪些不支援

讀取器涵蓋的是繪圖模型,不是整份 SVG 規格。以下全部都會被略過,而且不會有訊息。

  • CSS style 區塊和 class 屬性:見下面的警告
  • use 和 symbol:圖示集和重複的實例會匯入成空的
  • clipPath 和 mask:剪裁不會被套用,所以原本被剪掉的作品可能會跑出來
  • 圖樣填色,會退回成平灰色
  • 濾鏡效果:模糊、陰影之類的
  • marker:箭頭和線端符號
  • stroke-dasharray 和 stroke-dashoffset,所以虛線筆畫會匯入成實線
  • switch、foreignObject,以及 SMIL 動畫
  • 文字:字體、大小和位置都會遺失,只留下一個具名的佔位圖層
  • 百分比與相對單位,以及寫在 style 屬性裡的變形
從 Illustrator 匯出時選了「樣式元素」,顏色會被寫進一個 CSS 區塊,而那是不會被讀取的:作品會整個匯入成黑色。請改在 Illustrator 的 SVG 選項裡選「呈現屬性」,顏色就會過來。
完全解析不了的檔案現在會直說,貼上和檔案匯入兩條路都會。如果你看到那則訊息,請把檔案重新匯出成 UTF-8 的純 SVG 1.1。

準備一個匯得乾淨的檔案

  1. 匯出前先把文字轉成外框;文字進來只會是一個佔位圖層。
  2. 把你想保留的筆畫、虛線、圖樣和任何濾鏡效果展開。
  3. 釋放剪裁遮色片,或是把作品裁到該看得見的範圍。
  4. 把符號和重複的實例展開,讓任何東西都不依賴 use。
  5. 匯出時用呈現屬性而不是 CSS,並替文件加上 viewBox。

尺寸與擺放

文件的寬度和高度可以是像素、點、派卡、英吋、公釐或公分,會和 viewBox 一起換算,把圖縮放到合理的大小。以百分比標尺寸的檔案(常見的 width=100% 網頁標誌)會依它的 viewBox 尺寸匯入,而不是被拉開。作品接著會置中到你的畫布上。

同一個標誌匯入兩次:左邊是用 CSS 樣式元素匯出的,全黑;右邊是用呈現屬性匯出的,有顏色。