文档 项目与文件

导入 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:剪贴不会被应用,所以本来被剪掉的画面可能露出来
  • pattern 填充,会退回成一片平灰
  • filter 效果:模糊、投影等等
  • 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 样式元素导出的,一片黑;右边是带外观属性导出的,有颜色。