excalidraw中能否使用多个不同的中文字体

可否在excalidraw中实现使用多个不同的中文字体


遇到的问题

可否在excalidraw中实现使用多个不同的中文字体?

官方默认只能支持4种字体,其中1种是自定义字体,通过外部方式并不能使它支持超过4种字体并存,如果想支持必须自己修改官方插件。

GitHub - Bowen-0x00/obsidian-excalidraw-plugin-ymjr 这个是插件是别人修改的Excalidraw官方插件,可以实现支持多个自定义字体并存,如图演示

tmp33

通过拖动滑块进行不同的字体切换。

安装后,配置下自定义字体文件的路径即可

【注意】安装这个插件,要先卸载官方Excalidraw插件,不然,两个插件会冲突。

【补充更新:】

发现这个插件有个问题,导致某些Excalidraw插件无法使用,比如,很多Excalidraw插件会有以下代码判断

if(!ea.verifyMinimumPluginVersion || !ea.verifyMinimumPluginVersion("1.5.24")) {
  new Notice("This script requires a newer version of Excalidraw. Please install the latest version.");
  return;
}

ea.verifyMinimumPluginVersion这里的函数会判断当前版本号是否低于某个版本,但它只能判断xx.xx.xx形式的版本号,而这个插件的版本号被作者改为了2.2.7-1,导致无法正确判断。

所以,这里的解决办法就是把版本号判断这里的版本号改为2.2.7-1或直接去掉这个版本号判断的代码。

如果碰到提示,This script requires a newer version of Excalidraw. Please install the latest version. 时,可以打开脚本看看是否正问题引起的。




下面这个是Excalidraw的插件,实现字体的体快速切换,但并不支持超过4种字体并存。

这个插件是我改自官方插件Set Font Family,可以快速切换多个自定义字体,仅供参考。

  1. 下载插件 Set Font Family.zip

  2. 把下载的插件解压后放到Excalidraw的插件目录,比如 Excalidraw/Scripts

插件目录可在配置里设置

  1. 然后,打开你的Excalidraw文件,点击右侧上面的插件按钮,打开插件面板就可以使用了(在图标上右键可以把插件放到右侧的工具栏上),如图

效果:

tmp32

测试字体下载:fonts.zip - 蓝奏云

实现原理:

通过动态修改本地字体的配置来达到切换不同自定义字体的目的。

这个字体设置是独立的,设置中是否开启自定义字体并无影响,但会共享自定义字体的字体路径。比如,插件最后一次选择了庞中华硬笔字体,那么设置里的自定义字体也会变成庞中华硬笔字体,反过来也一样,但插件中每次是手动选择的,所以对插件来说没啥影响。

有些图形如果宽度较小会换行,通过插件设置后可能文字会变成一行,不过双击下图形就恢复了,影响不大。

完整代码如下:

注意:下面这个代码新手不用理会,上面1,2,3步操作完成就好了,这是方便有想了解代码的朋友不需要专门下载就能查看了

本插件改自:obsidian-excalidraw-plugin/ea-scripts/Set Font Family.md at master · zsviczian/obsidian-excalidraw-plugin · GitHub

1 个赞

mark,感谢分享

感谢大佬分享!

我这里怎么没有滑块?

可能哪里设置不对,建议多试试,在新仓库中试试。

按以下步骤操作试试

  1. 先卸载原有Excalidraw,然后再安装,不然可能会有冲突

  2. 插件安装后,设置字体路径,如图

  3. 复制字体文件到上述设置的路径那里,然后重启obsidian应该就好了。

最后,建议先在测试仓库测试无误后再使用。

可以了,
还有个问题想请教下,下面那个插件干啥的?和第一个啥区别?

第一个插件是obsidian的插件,主要作用是替代原有Excalidraw,也就是说第一个插件和原Excalidraw安装任意一个即可。第二个插件是Excalidraw内的插件,主要是增强Excalidraw的功能,这个插件主要快速切换字体,包括内置字体和自定义字体,内置字体3种,自定义字体虽然可以多个,但一个页面只能使用一种自定义字体。这个插件的功能主要是,原来切换自定义字体需要到设置里去切换,现在用插件切换就行了,更高效了。

第一个插件突破了一个页面只能有一种自定义字体的限制,支持任意多个。但自定义字体在你迁移文档时,如果目标机器没有对应的字体则会使用默认字体。另外,这个插件并非官方维护,可能不会随着官方插件的升级而升级。而第二个插件不受官方插件升级的影响。

如果你想完全不受限制的使用自定义字体,推荐第一个,如果你要求不高,只是想快速切换内置字体和自定义字体,且页面内字体样式不多,基本上是统一的字体,那么用第二个就够了。

安装方式不同,第一个插件是和其他ob插件的安装方式一致,第二个插件是Excalidraw的安装方式,参考#2的教程。

明白了,多谢大佬解惑~ :pray: