修正Obsidian Excalidraw生成SVG图片字体缺失问题
背景
之前这篇中做了在一个Excalidraw文件中引用另一个Excalidraw文件中的一部分的功能,这样能更方便复用,原始处修改,引用处都会更新。
Obsidian Excalidraw增加引用/嵌入另一个Excalidraw文件的一部分
但发现自定义多个字体后,引用生成的svg图片中缺失字体,使用的是默认字体。 因此修复此问题。
效果
1. 引用一个Excalidraw文件(左)中的一部分到另一个Excalidraw文件(右)中(这里演示了一个文字元素)

2. 点击引用可以跳转回原始位置(左)

修复
在生成svg的时候会进行自定义字体的修正,会修改svg HTML元素的 style defs部分,在这里设置正确的@font-face。 我使用的方法是遍历defs Node的所有text Node,提取它们的字体信息,然后设置到defs。 顺便修复了跳转时如果已打开文件,则不要再打开相同的文件,而是切换到已打开的标签

