修正Obsidian Excalidraw生成SVG圖片字體缺失問題
背景
之前這篇中做了在一個Excalidraw文件中引用另一個Excalidraw文件中的一部分的功能,這樣能更方便復用,原始處修改,引用處都會更新。
Obsidian Excalidraw增加引用/嵌入另一個Excalidraw文件的一部分
但發(fā)現自定義多個字體后,引用生成的svg圖片中缺失字體,使用的是默認字體。 因此修復此問題。
效果
1. 引用一個Excalidraw文件(左)中的一部分到另一個Excalidraw文件(右)中(這里演示了一個文字元素)
2. 點擊引用可以跳轉回原始位置(左)
修復
在生成svg的時候會進行自定義字體的修正,會修改svg HTML元素的 style defs部分,在這里設置正確的@font-face。 我使用的方法是遍歷defs Node的所有text Node,提取它們的字體信息,然后設置到defs。 順便修復了跳轉時如果已打開文件,則不要再打開相同的文件,而是切換到已打開的標簽
標簽: