关于 OneNote 字体问题的探索

Note: 以下内容均基于免费的 Onetastic 插件,使用的输入法为 Win10 自带的输入法,仅仅是个人在使用中的一些猜测,如有任何问题,欢迎在下方回复,我们一起探讨。

关于 OneNote for Windows 10。OneNote 2016(下载) 是最后一版,不会再更新了。推荐使用 OneNote for Windows 10。
相关文档:
有关 Office 2019 中 OneNote 的常见问题 - OneNote
OneNote 与 OneNote 2016 有什么区别? - OneNote
OneNote for Windows 10 目前不能使用 Onetastic 插件,但我觉得影响不大。字体问题在这个版本仍然存在,可以参考本文得到一定程度的缓解。

OneNote 对中英文语言的识别规则

  • 在输入法为中文模式时,使用输入法输入,无论输入或粘贴什么字符,都会被识别为中文语言,使用开始功能区指定的字体。
  • 在输入法为英文模式或者英文输入法时输入英文/数字,会被识别为英文,使用 Calibri 字体。
  • 直接从外部(网页、PDF等)复制进来的没有设置语言,使用默认字体(设置中指定)。

不使用 Onetastic 插件的建议

  • 先将默认字体设置为想要的字体。
  • 自己输入的话,保持中文输入法状态输入,可保证所有输入都是设置的字体。
  • 如果觉得上述方式在输入英文时不便,那么就切换到英文,输入完成后通过全选,重新设置字体解决。
  • 再有就是使用其他编辑器如word(有格式),notepad(无格式)等编辑后复制到 OneNote 中。

Onetastic 插件实现思路

1. 一种思路是基于 OneNote 对文本语言的标记

OneNote 中对文本所属的语言有一个标记。
要正确地设置中英文字体,只需要要正确地区分(识别)中英文文本,然后使用 Onetastic 宏分别对不同语言的文本设置不同的字体即可。
但不要以为这样就万事大吉了,这个标记很不准确,一不小心就会导致英文被识别为中文。目前我自己发现的规则在下面说明。

2. 另一种思路是基于文本字符本身

由于前一种让 OneNote 来判断的方式不够准确,所以我们可以自己判断。
我们把文本中的每个字符都取出来进行判断。中文就用中文字体,英文就用英文字体。但是,但是,这样效率极低,非常耗时。
而且这个世界上并不是只有中文英文,还有大量的其他各种字符,这些字符的判断也很麻烦。
我的处理方式是,默认都被当作中文,如果用户想要将某个字符应用英文字体,则提供一个自定义数组,用户可以把不希望应用中文字体的字符添加到自定义数组中,这样这些字符就会使用英文字体了。

3. 还有一种思路是利用 OneNote 本身对字体的处理特性

如果对所有文本应用一个英文字体,比如 Arial,则不能应用这个字体的文本就可以当作是中文,它们会使用默认字体。
利用这种特性,我们可以先对文本应用一个英文字体,然后判断文本字体,如果是应用的那个字体的文本,说明是英文,则把它们设置为真正要设置的英文字体;其他不是应用的那个字体的文本,就设置成中文字体。
使用这种方式,需要执行2个 Onetastic 宏,或者一个 Onetastic 宏执行2次。

总结

以上3种方式的具体实现都已完成,我只上传了第2种方案到 Onetastic Macroland 中(名称为分别设置中英文字体),欢迎大家使用和改进。
每种方式都有或多或少的问题,不尽如人意?。你是否有其他思路,或者针对上述方式的改进?欢迎讨论。

转载于:https://juejin.im/post/5a3863626fb9a0451969b26a

你可能感兴趣的:(关于 OneNote 字体问题的探索)