可否在excalidraw中实现使用多个不同的中文字体
遇到的问题
可否在excalidraw中实现使用多个不同的中文字体?
官方默认只能支持4种字体,其中1种是自定义字体,通过外部方式并不能使它支持超过4种字体并存,如果想支持必须自己修改官方插件。
GitHub - Bowen-0x00/obsidian-excalidraw-plugin-ymjr 这个是插件是别人修改的Excalidraw官方插件,可以实现支持多个自定义字体并存,如图演示
通过拖动滑块进行不同的字体切换。
安装后,配置下自定义字体文件的路径即可
【注意】安装这个插件,要先卸载官方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,可以快速切换多个自定义字体,仅供参考。
下载插件 Set Font Family.zip
把下载的插件解压后放到Excalidraw的插件目录,比如 Excalidraw/Scripts
插件目录可在配置里设置
效果:
测试字体下载:fonts.zip - 蓝奏云
实现原理:
通过动态修改本地字体的配置来达到切换不同自定义字体的目的。
这个字体设置是独立的,设置中是否开启自定义字体并无影响,但会共享自定义字体的字体路径。比如,插件最后一次选择了庞中华硬笔字体,那么设置里的自定义字体也会变成庞中华硬笔字体,反过来也一样,但插件中每次是手动选择的,所以对插件来说没啥影响。
有些图形如果宽度较小会换行,通过插件设置后可能文字会变成一行,不过双击下图形就恢复了,影响不大。
完整代码如下:
注意:下面这个代码新手不用理会,上面1,2,3步操作完成就好了,这是方便有想了解代码的朋友不需要专门下载就能查看了
mark,感谢分享
可能哪里设置不对,建议多试试,在新仓库中试试。
按以下步骤操作试试
先卸载原有Excalidraw,然后再安装,不然可能会有冲突
插件安装后,设置字体路径,如图
复制字体文件到上述设置的路径那里,然后重启obsidian应该就好了。
最后,建议先在测试仓库测试无误后再使用。
可以了,
还有个问题想请教下,下面那个插件干啥的?和第一个啥区别?
第一个插件是obsidian的插件,主要作用是替代原有Excalidraw,也就是说第一个插件和原Excalidraw安装任意一个即可。第二个插件是Excalidraw内的插件,主要是增强Excalidraw的功能,这个插件主要快速切换字体,包括内置字体和自定义字体,内置字体3种,自定义字体虽然可以多个,但一个页面只能使用一种自定义字体。这个插件的功能主要是,原来切换自定义字体需要到设置里去切换,现在用插件切换就行了,更高效了。
第一个插件突破了一个页面只能有一种自定义字体的限制,支持任意多个。但自定义字体在你迁移文档时,如果目标机器没有对应的字体则会使用默认字体。另外,这个插件并非官方维护,可能不会随着官方插件的升级而升级。而第二个插件不受官方插件升级的影响。
如果你想完全不受限制的使用自定义字体,推荐第一个,如果你要求不高,只是想快速切换内置字体和自定义字体,且页面内字体样式不多,基本上是统一的字体,那么用第二个就够了。
安装方式不同,第一个插件是和其他ob插件的安装方式一致,第二个插件是Excalidraw的安装方式,参考#2的教程。
明白了,多谢大佬解惑~