- 前端
- 桌面应用
- AI 应用
- MCP 服务
【免费下载链接】open-pencil
AI-native design editor. Open-source Figma alternative.
本文档(packages/docs/es/reference/figma-compatibility.md)以功能矩阵的形式,逐项对比了 Figma Design 的 158 项核心能力与开源 AI 原生设计编辑器 OpenPencil 的当前实现状态。阅读本文后,你可以快速掌握 OpenPencil 已覆盖的 94 项功能、18 项部分支持与 64 项待实现能力的具体边界,并了解每项能力背后的仓库源码支撑(Kiwi 编解码、CanvasKit 渲染、Yjs 协作、CLI 工具链等),从而准确判断 OpenPencil 是否满足你的迁移、二次开发或插件兼容需求。
一、功能矩阵总览与状态图例
Figma 兼容性是 OpenPencil 设计能力评估的核心指标。官方以「逐功能对照表」的方式维护这份矩阵,每个条目对应 Figma Design 中的一项具体能力,并标注 OpenPencil 的实现程度。表格采用三种状态标识:
- ✅兼容(Supported)——该功能端到端可用;
- 🟡部分支持(Partial)——核心行为已存在,但缺少部分子功能;
- 🔲未实现(Not yet implemented)——当前版本尚无对应能力。
截至文档更新时间2026-03-07,矩阵覆盖158 项Figma 功能条目,其中:
94 项已纳入实现评估 —— 76 项 ✅ 完全支持、18 项 🟡 部分支持、64 项 🔲 尚未实现。
这一统计口径同时体现在 packages/docs/reference/figma-compatibility.md(英文原版)及其西班牙语、法语、意大利语、波兰语、俄语等多语言译本中,各语言版本内容保持一致。
二、界面与导航(Interface & Navigation)
2.1 已完整支持的界面能力
| 功能 | 状态 | 说明 |
|---|---|---|
| 工具栏 | ✅ | UI3 风格底部工具栏:选择(Select)、画板(Frame)、分区(Section)、矩形、椭圆、直线、文本、手型(Hand)与钢笔(Pen) |
| 图层面板(左侧栏) | ✅ | 树形展开/折叠视图、拖拽排序、可见性切换、可调宽度 |
| 页面面板 | ✅ | 创建、删除、重命名页面;每页独立的视口状态 |
| 属性面板(右侧栏) | ✅ | 分区包含外观、填充、描边、效果、排版、布局与位置;可调宽度 |
| 缩放与平移 | ✅ | Ctrl+ 滚轮、捏合手势、⌘+/⌘−/⌘0(100%)/⌘1(适应)/⌘2(选中)、Space+ 拖拽、中键平移、手型工具(H) |
| 标尺 | ✅ | 顶部与左侧标尺,带选区高亮带与坐标徽标 |
| 画布背景 | ✅ | 通过属性面板设置每页独立背景色 |
| 右键菜单 | ✅ | 剪贴板、层级顺序、编组、组件、可见性、锁定与移动至页面等操作 |
| 应用菜单(浏览器模式) | ✅ | 文件、编辑、视图、对象、文本与排列菜单;Tauri 桌面端使用原生菜单 |
其中标尺与画布交互的实现位于 packages/core/src/canvas/rulers.ts 与 packages/core/src/canvas/ 下的渲染模块,与 Figma 的选区高亮与坐标提示行为保持一致。
2.2 部分支持与待实现项
| 功能 | 状态 | 说明 |
|---|---|---|
| 快捷键 | 🟡 | 核心快捷键、组件、层级顺序、可见性/锁定已实现;缩放工具、箭头、铅笔、翻转及部分文本格式尚未接线 |
| AI 工具 | 🟡 | 经 OpenRouter 与 MCP 服务器提供 90 个工具;尚不支持 AI 生成图片或 AI 驱动的搜索 |
| 画布参考线 | 🔲 | 无法从标尺拖出参考线 |
| 操作菜单/命令面板 | 🔲 | 缺少 Figma 的快速动作搜索 |
| 查找与替换 | 🔲 | 无跨文档文本搜索/替换 |
| 图层轮廓视图 | 🔲 | 无全图层线框视图 |
| 自定义文件缩略图 | 🔲 | 导出时会生成缩略图,但无法自选 |
| 微调步长设置 | 🔲 | 默认 1px/10px,不支持自定义步长 |
三、图层与形状(Layers & Shapes)
3.1 基础形状与图层操作
| 功能 | 状态 | 说明 |
|---|---|---|
| 形状工具(矩形、椭圆、直线、多边形、星形) | ✅ | 支持全部基础形状;多边形边数与星形内半径可配置 |
| 画板(Frame) | ✅ | 内容裁剪、独立坐标系、Figma 风格创建与尺寸预设 |
| 编组 | ✅ | ⌘G编组、⇧⌘G取消编组 |
| 分区(Section) | ✅ | 标题药丸、自动收纳重叠节点、随亮度自适应文字 |
| 圆弧工具(弧、半圆、圆环) | ✅ | arcData含起始/结束角度与内半径 |
| 图层类型与层级 | ✅ | 17 种节点类型,扁平 Map + 父子树结构 |
| 选择 | ✅ | 单击、Shift 连选、框选 |
| 对齐与位置 | ✅ | 属性面板中可调位置、旋转与尺寸 |
| 复制与粘贴 | ✅ | 标准剪贴板 + Figma Kiwi 二进制格式;支持复制为文本/SVG/PNG/JSX |
| 锁定与解锁 | ✅ | ⇧⌘L切换锁定;锁定节点无法从画布选中/移动 |
| 可见性切换 | ✅ | 图层面板眼睛图标 +⇧⌘H快捷键 |
| 重命名图层 | ✅ | 图层面板双击内联重命名;Enter/Escape/失焦提交 |
| 置前/置后 | ✅ | ]与[快捷键,右键菜单同样可用 |
| 移动到页面 | ✅ | 右键菜单将选中节点跨页移动 |
| 批量编辑 | ✅ | 多选属性面板可编辑位置、尺寸、外观、填充、描边与效果;相同值正常显示,不同值显示Mixed |
| 父子关系 | ✅ | 基于parentIndex的完整层级,拖拽即可换父容器 |
「圆弧工具」所依赖的arcData解析与渲染逻辑分散于 packages/core/src/canvas/strokes.ts、packages/core/src/canvas/fills.ts 及 packages/core/src/canvas/boolean.ts,并能在 SVG 导入/导出(packages/core/src/io/formats/svg/paths.ts)中完整往返。
3.2 部分支持与待实现项
| 功能 | 状态 | 说明 |
|---|---|---|
| 等比缩放 | 🟡 | Shift 缩放保持比例;无独立缩放工具(K) |
| 铅笔(手绘)工具 | 🔲 | 无自由手绘 |
| 蒙版 | 🔲 | 无形状蒙版裁剪 |
| 约束(响应式缩放) | 🔲 | 无边缘/中心锚定 |
| 智能选择 | 🔲 | 不提供多选均匀分布/对齐 |
| 布局参考线 | 🔲 | 无列/行/网格叠加参考线 |
| 测量间距 | 🔲 | 无 Alt 悬停测距 |
| 查找相似对象 | 🔲 | 不识别匹配图层 |
| 复制/粘贴属性 | 🔲 | 无法跨图层复制填充/描边/效果 |
四、矢量工具(Vector Tools)
4.1 矢量编辑现状
| 功能 | 状态 | 说明 |
|---|---|---|
| 矢量网络 | ✅ | 与 Figma 兼容的模型,而非简单路径 |
| 钢笔工具 | ✅ | 角点、贝塞尔曲线、开放/闭合路径 |
| 矢量编辑 | 🟡 | 可创建;高级顶点编辑(弯曲、删点、连接)受限 |
「矢量网络」与布尔运算底层实现在 packages/scene-graph/vector-network.ts 与 packages/core/src/canvas/boolean.ts 中,采用与 Figma 一致的网络(半边缘)模型存储。
4.2 待实现项
布尔运算(并集、减去、交集、排除)、平整图层、描边转路径、文本转路径、形状构建器、路径偏移(内缩/外扩)、路径简化,均为 🔲 未实现状态。注意 packages/kiwi/README.md 中的一条关键约束:布尔运算负载使用 Figma 的 Kiwi 枚举名,SceneGraph 层的EXCLUDE是核心层概念,调用底层编解码器前应序列化为 Kiwi 的XOR——这为未来接入布尔运算保留了协议级兼容空间。
五、文本与排版(Text & Typography)
5.1 已实现能力
| 功能 | 状态 | 说明 |
|---|---|---|
| 文本工具与内联编辑 | ✅ | 画布原生编辑、透明 textarea、光标/选区/词选、拖选、双击/三击、富文本样式区间(⌘B/I/U、S按钮) |
| 文本渲染(Paragraph API) | ✅ | CanvasKit Paragraph 完成字形塑造、断行与度量 |
| 系统字体加载 | ✅ | 默认 Inter;Tauri 端 font-kit(OnceLock 缓存 + 预加载),浏览器端queryLocalFonts |
| 字体族与字重 | ✅ | FontPicker 虚拟滚动、搜索、CSS 预览;属性面板可调字重 |
| 字号与行高 | ✅ | 排版分区中可编辑 |
| 文本路径(TEXT_PATH) | 🟡 | 可导入、渲染、选择、缩放、编辑并导出 FigmaTEXT_PATH;逐字编辑需本地具备所引用字体的轮廓 |
字体加载的浏览器分支在 packages/core/src/text/fonts.ts 中直接调用queryLocalFonts(类型声明见 packages/core/src/global.d.ts),桌面端则走 font-kit 的 OnceLock 缓存路径,两者共同支撑了「系统字体」这一 ✅ 能力。
5.2 部分支持与待实现项
| 功能 | 状态 | 说明 |
|---|---|---|
| 文本对齐 | 🟡 | 基础对齐已实现;缺少垂直对齐与自动宽/高模式 |
| 文本样式 | 🟡 | 支持按选区加粗/斜体/下划线/删除线;无可复用命名样式预设 |
| 尺寸模式 | 🔲 | 无自动宽度、自动高度、固定尺寸模式 |
| 列表 | 🔲 | 无项目符号/编号列表 |
| 超链接 | 🔲 | 文本内无超链接 |
| Emoji 与符号 | 🔲 | 渲染兼容性不完整 |
| OpenType | 🔲 | 无连字、风格化变体、表格数字 |
| 可变字体 | 🔲 | 不可调字轴(字重、宽度、倾斜) |
| CJK | 🔲 | 中日韩文本渲染兼容性不完整 |
| RTL | 🔲 | 无右到左排版 |
| 图标字体 | 🔲 | 无字形特殊处理 |
六、颜色、渐变与图像(Color, Gradients & Images)
6.1 填充体系
| 功能 | 状态 | 说明 |
|---|---|---|
| 取色器(HSV) | ✅ | HSV 方块、色相滑杆、透明度滑杆、十六进制输入 |
| 纯色填充 | ✅ | 十六进制颜色 + 不透明度 |
| 线性渐变 | ✅ | 渐变停靠点 + 变换手柄 |
| 径向渐变 | ✅ | 经 CanvasKit shader 渲染 |
| 角向渐变 | ✅ | 锥形/扫掠渐变 |
| 菱形渐变 | ✅ | 四点菱形渐变 |
| 图片填充 | ✅ | 从 blob 数据解码,缩放模式含填充、适配、裁剪与平铺 |
渐变与图片填充的实际渲染由 packages/core/src/canvas/fills.ts 与 packages/core/src/canvas/gradients/ 负责,均构建于 CanvasKit 之上。
6.2 部分支持与待实现项
| 功能 | 状态 | 说明 |
|---|---|---|
| 添加图片与视频 | 🟡 | 可渲染图片填充;不支持拖拽导入或视频 |
| 颜色模型 | 🟡 | 取色器支持 HSV + 十六进制;无 HSL/RGB 模式切换 |
| 图案填充 | 🔲 | 无重复图案 |
| 混合模式 | 🔲 | 无图层/填充混合模式(正片叠底、滤色、叠加等) |
| 图像调整 | 🔲 | 无曝光、对比度、饱和度等 |
| 裁剪图片 | 🔲 | 无交互式裁剪 |
| 吸管工具 | 🔲 | 无法从画布取色 |
| 混合选区调色 | 🔲 | 无法跨异构选区调色 |
七、效果与属性(Effects & Properties)
7.1 阴影、模糊与描边
| 功能 | 状态 | 说明 |
|---|---|---|
| 外阴影 | ✅ | 偏移、模糊半径、颜色,经 CanvasKit 滤镜实现 |
| 内阴影 | ✅ | 内嵌阴影效果 |
| 图层模糊 | ✅ | 高斯模糊 |
| 背景模糊 | ✅ | 模糊图层后方内容 |
| 前景模糊 | ✅ | 模糊前方内容 |
| 描边粗细 | ✅ | 属性面板可配置 |
| 描边端点 | ✅ | NONE、ROUND、SQUARE、ARROW_LINES、ARROW_EQUILATERAL |
| 描边连接 | ✅ | 斜接、斜面、圆角三类 |
| 虚线 | ✅ | 实/空段描边图案 |
| 描边对齐 | ✅ | 内/中心/外,基于裁剪的渲染与 Figma 行为一致 |
| 各边独立描边粗细 | ✅ | 上/右/下/左,带侧边选择器 |
| 圆角半径 | ✅ | 统一或逐角圆角,属性面板独立开关 |
阴影实现见 packages/core/src/canvas/shadows.ts,模糊与描边相关逻辑分布在 packages/core/src/canvas/effects.ts 与 packages/core/src/canvas/strokes.ts。
7.2 待实现项
| 功能 | 状态 | 说明 |
|---|---|---|
| 圆角平滑(iOS 风格) | 🔲 | 无连续圆角 |
| 单层多填充/多描边 | 🔲 | 不支持堆叠填充与描边 |
八、自动布局(Auto Layout)
8.1 布局引擎与完整能力
| 功能 | 状态 | 说明 |
|---|---|---|
| 水平与垂直流 | ✅ | Yoga WASM flexbox 引擎 |
| 切换自动布局 | ✅ | 画板或包选后按⇧A |
| 间距 | ✅ | 属性面板可配置 |
| 内边距 | ✅ | 四边独立 |
| 主轴对齐 | ✅ | 起点、居中、终点、space-between |
| 交叉轴对齐 | ✅ | 起点、居中、终点、拉伸 |
| 子项尺寸 | ✅ | 固定、填充、贴合 |
| 换行 | ✅ | Flex wrap 多行布局 |
| Grid 自动布局 | ✅ | 基于 Yoga 分支的 CSS Grid——列/行轨道、间距、跨格 |
| 嵌套流 | ✅ | 不同方向的嵌套自动布局画板 |
| 自动布局内拖拽排序 | ✅ | 可视化插入指示器 |
自动布局的引擎层位于 packages/core/src/layout/,以 Yoga WASM 为运行时,Grid 能力通过定制分支扩展出轨道与跨格语义。
8.2 待实现项
| 功能 | 状态 | 说明 |
|---|---|---|
| 最小/最大宽高 | 🔲 | Figma 支持自动布局子项的最小/最大约束 |
九、组件与设计系统(Components & Design Systems)
9.1 组件体系全链路
| 功能 | 状态 | 说明 |
|---|---|---|
| 创建组件 | ✅ | ⌥⌘K从画板/编组创建或包裹选区;组件属性 UI 支持文本、可见性、实例交换与变体 |
| 组件集 | ✅ | ⇧⌘K合并组件;多维稀疏变体创作、重复校验、左上默认值 |
| 组件实例 | ✅ | 资源浏览、插入、可编辑组件属性与覆盖、变体切换、实时同步、更新审查 |
| 变体 | ✅ | 多维稀疏组合、创作、实例切换、重复校验、左上回退 |
| 组件属性 | ✅ | 布尔可见性、文本、实例交换属性的创作与实例编辑 |
| 覆盖传播 | ✅ | 主组件变更传播到全部实例,且保留覆盖 |
| 分离实例 | ✅ | ⌥⌘B将实例还原为画板 |
| 跳转到主组件 | ✅ | 跨页导航到源组件 |
| 资源库(Libraries) | ✅ | 不可变本地/存储修订、选择性发布、启用、范围化更新审查、离线物化与.fig持久化 |
9.2 部分支持与待实现项
| 功能 | 状态 | 说明 |
|---|---|---|
| 变量 | 🟡 | COLOR完整 UI(对话框、TanStack Table、内联编辑、撤销/重做、演示集合);FLOAT/STRING/BOOLEAN已定义但无编辑 UI |
| 变量集合与模式 | 🟡 | 集合、模式、activeMode 切换可用;无变量驱动主题化 UI |
| 样式(颜色/文本/效果/布局) | 🔲 | 无可复用命名样式预设 |
十、原型(Prototyping)
原型相关能力当前整体未实现。英文版矩阵逐项列出了 🔲 状态的功能面,包括:原型连接、触发器(点击/悬停/拖拽等)、动作(导航/叠加/滚动等)、动画与转场、智能动画(Smart Animate)、叠加层(模态/弹层)、滚动与溢出行为、原型流程(命名起始点)、原型变量(条件逻辑)、缓动与弹簧动画、全屏原型演示。西班牙语文档则以一句话概括:连接、触发器、动作、动画、转场、叠加、滚动、流程、条件逻辑、曲线与全屏演示均尚未提供。总之,原型链路是 OpenPencil 与 Figma 差距最大的模块之一,适合用作后续版本规划的观察点。
十一、导入与导出(Import & Export)
11.1 文件格式互操作
| 功能 | 状态 | 说明 |
|---|---|---|
导入.fig | ✅ | 完整 Kiwi 编解码器:194 个定义,每个NodeChange约 390 个字段 |
导出.fig | ✅ | Kiwi 编码 + Zstd 压缩 + 缩略图生成;COMPONENT/COMPONENT_SET映射为SYMBOL以支持往返 |
| 保存 / 另存为 | ✅ | ⌘S/⇧⌘S;Tauri 原生对话框、Chrome/Edge 的 File System Access API、Safari 下载回退 |
| 从 Figma 粘贴 | ✅ | 解码剪贴板中的 Kiwi 二进制 |
| 复制到 Figma | ✅ | 生成 Figma 可读的 Kiwi 二进制 |
| 图片/SVG/PDF 导出 | 🟡 | PNG/JPG/WEBP/SVG ✅;PDF 🔲 |
| 跨工具搬运资源 | ✅ | Figma 剪贴板(Kiwi 二进制)+ 复制为文本/SVG/PNG/JSX |
Kiwi 是 OpenPencil 与 Figma 二进制互通的基石,其协议定义存放在 packages/kiwi/src/fig/schema/fig.kiwi(5623 行的 schema 源文件,定义NodeChanges、MessageType、NodePhase等枚举与消息结构),编解码实现见 packages/kiwi/src/fig/codec.ts、容器封装见 packages/kiwi/src/fig/container.ts。正如 packages/kiwi/README.md 所描述的,该运行时基于 Evan Wallace 的 Kiwi(MIT License)改编,并保持了「不依赖核心/应用/Vue/CLI/MCP 代码」的纯净边界。完整.fig归档(含图片资源)的解析则由@open-pencil/fig承担,再经@open-pencil/core/io转换为可编辑的 SceneGraph。
11.2 待实现项
| 功能 | 状态 | 说明 |
|---|---|---|
| Sketch 导入 | 🔲 | 无.sketch解析器 |
| 版本历史 | 🔲 | 无法浏览与还原历史版本 |
十二、插件 API 与脚本(Plugin API & Scripting)
| 功能 | 状态 | 说明 |
|---|---|---|
带 Figma Plugin API 的eval | ✅ | 无头 JavaScript 执行,figma全局对象与 Figma 插件接口面匹配 |
这是 OpenPencil 最具迁移价值的能力之一:已接入 Figma 插件生态的脚本,理论上可以通过eval命令在 OpenPencil 中无头运行。该命令的实现位于 packages/cli/src/commands/eval.ts,CLI 整体入口见 packages/cli/src/index.ts。
十三、协作与开发者模式(Collaboration & Dev Mode)
13.1 已实现能力
| 功能 | 状态 | 说明 |
|---|---|---|
| 实时多人在线 | ✅ | 基于 Trystero + Yjs CRDT 的 P2P 协作,支持光标与跟随视图,无需服务器 |
| Tailwind CSS v4 导出 | ✅ | 从代码面板、CLI 或程序化方式导出带 Tailwind 工具类的 HTML |
| MCP 服务器 | ✅ | @open-pencil/mcp支持 stdio 与 HTTP 传输;共 90 个工具(87 个核心工具 + 3 个文件管理工具) |
| CLI 工具 | ✅ | 无头 CLI:info、tree、find、export、analyze、node、pages、variables、eval |
实时协作的传输层与 CRDT 同步分别位于 src/app/collab/transport/trystero.ts 与 src/app/collab/yjs-sync.ts,P2P 直连的架构使多人在线不需要中心服务器。CLI 各子命令与文档矩阵一一对应,例如info、tree、find、export、analyze、node、pages、variables分别对应 packages/cli/src/commands/ 下的同名文件;MCP 服务器实现见 packages/mcp/,可通过@open-pencil/mcp接入支持 MCP 的 AI 客户端。
13.2 部分支持与待实现项
| 功能 | 状态 | 说明 |
|---|---|---|
| 开发者模式(检查) | 🟡 | 代码标签页展示选区的 JSX 表示;无 CSS 属性或交付规格 |
| 代码片段 | 🟡 | JSX 导出带语法高亮与复制;无 CSS/Swift/Kotlin 片段 |
| 评论 | 🔲 | 无标记、线程或解决 |
| 光标聊天 | 🔲 | 画布上无内联聊天气泡 |
| 分支与合并 | 🔲 | 无版本分支 |
| Code Connect | 🔲 | 不将设计组件链接到代码 |
| Figma for VS Code | 🔲 | 无编辑器插件集成 |
十四、Figma Draw
| 功能 | 状态 | 说明 |
|---|---|---|
| 插画工具 | 🔲 | 无 Figma Draw 专用绘图工具 |
| 图案变换 | 🔲 | 无带变换的重复图案生成 |
Figma Draw 作为 Figma 中较新的插画工具集,在 OpenPencil 中尚未启动实现。
十五、结论:兼容边界与适用判断
从 158 项对比矩阵可以得出几条务实结论:
- 核心设计编辑闭环已打通:界面导航、图层形状、矢量网络、文本排版、渐变填充、效果属性、自动布局、组件体系、
.fig导入导出等 76 项核心能力完全支持,日常设计稿的创建、编辑与 Figma 文件往返已可端到端工作。 - 互操作是最大差异化优势:基于 Kiwi 的
.fig双向编解码(packages/kiwi/src/fig/)与 Figma 剪贴板互通,加上 90 工具的 MCP 服务器与 9 个子命令的 CLI,使 OpenPencil 既能作为 Figma 的替代编辑器,也能无缝嵌入 AI/自动化工作流。 - 明确的未覆盖面:原型(Prototyping)、布尔运算、文本高级排版(列表/链接/OpenType/CJK/RTL)、混合模式、样式系统(Styles)、版本历史与 Sketch 导入仍是 🔲 状态;变量、开发者模式等 18 项能力处于「核心可用、细节待补」的部分支持阶段。
如果你正在评估从 Figma 迁移或在其生态上构建工具链,建议先以本矩阵中 ✅ 清单核对你的核心工作流(尤其是.fig往返与插件eval兼容),再针对 🟡 项做小规模验证,最后将 🔲 项列入风险清单。矩阵的持续维护(最近更新于 2026-03-07)也意味着这份兼容边界会随版本迭代不断收窄——值得作为长期跟踪的基准文档。
- 前端
- 桌面应用
- AI 应用
- MCP 服务
【免费下载链接】open-pencil
AI-native design editor. Open-source Figma alternative.
相关推荐
OpenPencil 功能全景解析:Figma 文件兼容、AI 设计助手与 CLI/MCP 自动化
OpenPencil 功能全景解析:Figma 文件兼容、AI 设计助手与 CLI/MCP 自动化 OpenPencil 是一款 AI 原生的开源设计编辑器,定
前端桌面应用AI 应用MCP 服务es-toolkit compat 版 dropRight 全解析:从 Lodash 兼容 API 到现代实现的性能对比
es toolkit compat 版 dropRight 全解析:从 Lodash 兼容 API 到现代实现的性能对比 dropRight 是 es tool
前端后端MicroPython 对 Python 3.5 特性支持全景:PEP 逐项实现状态、语法与标准库差异深度解析
MicroPython 对 Python 3.5 特性支持全景:PEP 逐项实现状态、语法与标准库差异深度解析 导读 Python 3.5 是 CPython
嵌入式语言运行时编程语言解释器编译器物联网系统编程
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考