久しぶり!
今天来分享一个在 Joplin 使用 CJK 输入法时输入光标位置会出现 L SEP
特殊字符的解决方法。
首先感谢《 How to use Joplin desktop app on FreeBSD 》这篇文章的作者,这位作者在撰写这篇文章的本意是介绍如何在 FreeBSD 中编译 Joplin 的桌面版客户端,但文中的中后部份也介绍了Workaround for LSEP showing up in CJK input methods
的教程说明。我这边基本上是翻译教程为中文并添加了一些自己在简体中文环境中的实验和理解。
简单剖析
Joplin 的 GitHub 项目中 Issue 也多次提及到了这个问题,如:
但从 Joplin 开发者的回复中可判断,由于Joplin 使用的编辑器组件是 Ace Editor,这个文本编辑器在 FreeBSD、Windows 等系统中均会出现无法正常渲染 CJK 字符的问题,这属于组件本身的 Bug,所以这个 CJK 历史问题短期内是不可能被修复的。下面两张图可以清楚演示具体的情况。
幸运的是,上面提及的文章的作者提供了解决方法:)
解决方法
直截了当式
下载安装 NoLSEP 这个特殊字体,这个字体的效果是可以让 L SEP
这个 U + 2028 行分隔符以单个零宽度的字符出现,从而使这个字符在视野中消失。
安装字体后,在 Joplin 菜单中依次点击操作:
英文界面请按照以下操作步骤:
“Tools > Options > Appearance > Editor font family > NoLSEP > Apply > OK
“
中文界面请按照以下步骤:
「工具 > 选项 > 外观 > 编辑器字体 > 将编辑器字体修改为 NoLSEP > 应用 > 确定」
Note: 若未能生效,重启一次 Joplin 即可
强迫症式
由于把默认编辑器字体设置为 NoLSEP
后, Joplin 编辑器在处理 CJK 字符时,会默认 Fallback 到编辑器默认的 monospace 等宽字体中,导致字体不太好看。下面的方法就是比较好的实现自定义字体的同时不会出现 L SEP
的字符.
Note: 以下操作务必将 Joplin 升级到 v1.0.176 之后的版本
英文界面请按照以下操作步骤:
“Tools > Options > Appearance > Custom stylesheet for Joplin-wide app styles > Edit
“
中文界面请按照以下步骤:
「工具 > 选项 > 外观 > Custom stylesheet for Joplin-wide app styles > Edit」
在编辑器中添加以下代码,添加后保存文本并重启 Joplin:
div.ace_editor * {
font-family: NoLSEP, Noto Sans Mono CJK SC Regular, monospace !important;
}
简单说明,具体是把 NoLSEP 放在最前面用于处理 L SEP
的字符,而在处理简体中文时,因为 NoLSEP
不具备中文字体,因此会自动使用第二位的 Noto Sans Mono CJK SC Regular 这个字体,而 monospace
则是编辑器默认的等宽字体用于处理其他的字符。
具体代码可以按需修改,例如把中间的 Noto Sans Mono CJK SC Regular 修改为常见的微软雅黑
等等。但值得注意,由于 Joplin 在 Windows 下的 CJK 渲染确实有问题,在我个人主观的测试后,我认为 Noto Sans Mono CJK SC Regular 的显示效果是最理想的,而 monospace
原则上也可以修改的,但务必要修改为其他等宽字体,否则会出现空格错位的情况。

附
Joplin 自称的定位是 Evernote 的本地免费代替品,提供了 Evernote 数据的导入的入口,但从我个人一个多星期的测试试验中,他的综合体验还是比不上底蕴深厚的 Evernote。不过 Joplin 与 Evernote 的自有云的同步不同, Joplin 胜在可以自定义同步云盘,借助 Dropbox、OneDrive 等 API 同步,且有 iOS 和 Android 的客户端,综合体验值得称道,再加上上面的自定义字体锦上添花:)
另外,除了 Joplin 官方的浏览器剪藏扩展外,我再推荐一款 Web Clippers,支持 Joplin、Notion、OneNote 等等的剪藏,相关截图:

后记:之前说过将会公布未发布的文章,很抱歉,我暂时仍未下定决心公布。