Skip to content

Leafer 渲染器 ​

LeaferAdapter 提供浏览器渲染器与字体测量能力,通过 renderer 参数传给Editor。

ts
import { SkyNoteEditor } from '@skynote/editor';
import { LeaferAdapter } from '@skynote/renderer-leafer';

export function createEditor(): SkyNoteEditor<HTMLElement> {
  return new SkyNoteEditor<HTMLElement>({ renderer: new LeaferAdapter() });
}

容器尺寸、焦点与输入由适配器桥接。渲染器可提供图片导出能力,实际支持范围通过能力接口查询。

构造选项 ​

new LeaferAdapter(options?)接收LeaferRendererOptions,每次挂载都使用同一组选项。

选项默认 / 作用
pixelRatio缺省跟随设备像素比及变化;显式提供时固定
enableFrameScheduler默认开启分帧调度
offscreenCacheLimit默认2000,节点与连线各自计数;超限后淘汰离屏图元缓存
imageFailure可选失败图资源提供者;解析带AbortSignal,临时资源可通过release回收

这些是渲染策略,不写入文档。缓存上限不是文档节点数限制;调大缓存也不等于所有场景性能都会提升。

RenderAdapter 契约 ​

适配器成对提供fonts和mount(engine, container)。字体测量与绘制保持一致,避免排版大小和可见文字分叉;mount返回当前渲染器,由Editor在unmount/destroy时销毁。

宿主容器尺寸变化后,Leafer适配器调整绘制尺寸并同步会话viewportSize。是否重新适配内容由宿主决定;全屏后希望自动居中的宿主,等尺寸更新后调用fitContent()。

原生扩展与资源 ​

基础节点优先使用Core声明式图元。只有需要Leafer特有绘制或生命周期时,才在适配器层注册原生节点渲染器;更新时复用已有图元,销毁时解除监听和临时资源。

imageFailure用于展示缺失、加载或解码失败,不把替代图登记为用户文档资产。跨域图片服务、字体可用性和图片导出权限仍由宿主环境保证。

在SSR环境中应客户端动态导入,容器退出时成对销毁。自定义渲染器遵循Core公开渲染协议,不向内核加入平台API。

可组合的画布能力,从一个想法开始。