思源系列字体中的中西文弯引号冲突是设计者有意为之的选择,但确实造成诸多不便。简言之,思源系列字体的简体中文版将弯引号设计为全宽,而中英文弯引号共用同一编码,导致英文的弯引号也被迫变成全宽,像I’m 等常见缩写因此奇丑无比。繁体中文版亦采用全宽弯引号,而日文、韩文版虽采用半宽弯引号,但其汉字字形同简体中文汉字又存在明显区别。详情可参考下图中前两行。

Font example.

Obsidian (本人主力笔记软件)支持用户通过自定义 CSS 组合多种字体,即不同字符可调用不同字体。因此只需要设置弯引号采用思源日文,而其他字符保持思源简中即可。

但此方案扩展性不佳,多数应用(尤其是原生 App 或移动版 App)并不支持此种程度的定制。

一个一劳永逸的方案是:离线将两种字体拼接成新的字体。只需提取出思源日文中的四个弯引号(左右、单双),然后替换掉思源简中版的对应字符,即可得到兼具简中字形和半宽弯引号的新字体。具体效果参考上图中最后一行。

由于对字体文件规范几乎一无所知,此处只能「非常惭愧」地求助于 LLM。通过和 ChatGPT、Gemini 的多次迭代,最终拿到一个可用的 Python 脚本。借助该方法,可轻松拼接思源黑体、思源宋体以及思源等宽等字体的多个字重文件。