org-excalidraw 如何才能显示文字?

我用 org-excalidraw 遇到一个问题, 无论如何无法显示文字 (比如数字). 我真的试尽了 README 的做法了. 我安装了字体.

fc-list : family

能找到:

Virgil 3 YOFF
Cascadia Code

我没有前端的知识, 对 svg 几乎一无所知, 但我还是打开了 svg 文件, 它的代码是这样:

<defs>
  <style>
    @font-face {
      font-family: "Virgil";
      src: url("https://excalidraw.com/Virgil.woff2");
    }
    @font-face {
      font-family: "Cascadia";
      src: url("https://excalidraw.com/Cascadia.woff2");
    }
  </style>

出现 front-family 的是:

<text x="6.5" y="NaN" font-family="Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr">

我系统上确实没有 Segoe UI Emoji 字体, 我尝试安装, 但是失败了. 为了排查是不是字体的问题, 我把字体改成 Monaco:

<text x="6.5" y="NaN" font-family="Monaco" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr">

然后加上:

<style>
  @font-face {
    font-family: "Monaco";
    src: local('Monaco');
  }
</style>

然后用 rsvg-convert 试试, 得到的 pdf 还是没有文字. 而浏览器打开是有文字的. 所以我怀疑不是字体的问题.

我想请教如何才能让 org-excalidraw 有文字? 真的困扰我很久了, 我很喜欢 excalidraw, 但没办法显示文字这点使得使用很受限.

我对这个包很感兴趣,但刚才试了一下,装了总是报错,说 org-excalidraw-files 的路径错误。以及我不太理解将 excalidraw 当成 pwa 下载下来。

如果我能搞定,可以和你一起探索怎么解决文字现实的问题~

设置了 org-excalidraw-directory 么?以及设置 web application 很简单,chrome 菜单,选择 cast, save and share, 然后选择 install page as app (或者 something like that)

设置了,但报错。

初步确定是 excalidraw/utils 版本太旧的问题,但是由于不会 ts/js/node, 我也是一筹莫展。

我现在怀疑是不是没执行 org-excalidraw-initialize.

用一个 workaround 暂时解决了,那就是,手动拷贝 svg 到剪切板,再用:

  (defun my/org-excalidraw-save-clipboard-svg (path)
    "Save clipboard content to the file path specified in the Org link under point."
    ;; (interactive)
    (save-string-to-file (current-kill 0) path)
  )

  (defun my/org-excalidraw--handle-file-change (event)
    "Handle file update EVENT to convert files to svg."
    (when (string-equal (cadr event)  "renamed")
      (let ((filename (cadddr event)))
        (when (string-suffix-p ".excalidraw" filename)
          (my/org-excalidraw-save-clipboard-svg (concat filename ".svg"))
          ))))
  (advice-add 'org-excalidraw--handle-file-change :override #'my/org-excalidraw--handle-file-change)

这样保存文件前需要手动拷贝一下,但好处是文字导出是正常的。