“复”字变窄了?谈谈字体的那点事

上次刷机完成之后遇到了点奇怪的问题,那就是一些汉字显示出现了问题。

“复”字就像刚减肥回来一样,整个字窄了一半。虽说看着没啥影响,但就是难受。在网上也没找到类似的问题,老师教育我们“多从自己身上找问题”,Lineage OS这么成熟的系统不可能出现这么严重的问题,去群里问了下大佬们,问题瞬间解决,原因是没在语言中添加汉语,在语言列表中添加了汉语问题就解决了,这是这到底是为什么?

先去查阅问维基百科可以得知,Android系统使用的默认字体是Roboto,比如汉语、日语、韩语等不支持的语言,使用的字体则为Noto。

Noto的意思是No Tofu,没有豆腐块,在一部分系统中不被支持的文字会被显示为豆腐块。这个字体也被Adobe叫做思源系列字体,也就是著名思源黑体/宋体系列。可是这一切跟文字显示“异常”有什么原因,先别着急。

先来看看这几句诗,乍一看是不是没什么问题,再仔细看看

这跟学过的汉字相差有点远,可是为什么添加了简体中文之后显示就正常了,这就得说到CJK字体了。

CJK一般是中日韩统一表意文字的简称,在常见的万国码(Unicode)中为了节约空间,将中国日本韩国等使用汉字的国家的汉字统一到了一起,也就是说比如“门”这个同时出现在日语和汉语中的文字对计算机而言是同一个文字

回到正题,Android系统的默认字体是思源黑体,而思源黑体针对各个国家推出了自己的版本,而默认的思源黑体则没有说明语言,我们把各个语言进行对比,结果十分明了

在默认的Source Han Serif中四个汉字在汉语中显示错误,日语中没有“归”字但剩下的三个字跟我们得到的结果一样;韩语中“归”字显示错误。

我们可以推测到:思源宋体默认语言的情况下,会先从日语中寻找这个汉字,日语中没有再去韩语中寻找,最后才来到汉语,因为这个顺序,导致了我们系统在没有添加汉语的情况下部分汉字显示出错。

解决方案也很简单,开头就说过,添加了中文就好了。
这个问题在晚上搜索到的结果不多,似乎也没什么人提,看到一部分酷友的截图中出现了类似的情况,在这里写出来给大家分享。