我的浏览器使用的webkit版本是9月3号的,才几天 没有更新,新下载一下(当然没有急着同步到我的代码中),哇,更新还真多。看更新说明说更改了字体管理中的代码,使得中文显示不再有任何乱码。我这一块正好有我的更新。于是赶紧取看一下,哇,快喷饭了,改这个代码的人了解字体吗?他的改动真的很笨呀,很笨呀。由此很担心,参与webkit开发的windows人员的水平。mozilla这方面好多了吧。
看看他的逻辑:
检查当前字体中是否能显示一个字符(串),流程如下:
1 获取当前字体的CodePages
2 获取要处理字符的codepages
如果两个相交,就说明当前字体能显示该字符(串)。如果字符串中存在不相交的,说明本字体不能显示该字符串。
这个逻辑假设一个字体能显示该codepages下的所有文字,当然是极端错误的!!!
如果我做一个字体,里面只有少数汉字,我不小心将一大段文字的字体设置为我做的字体。这样,那段文字一定有乱码。但是好的浏览器,都会正确的知道本字体不能显示一些文字,将其中字体缺失的字换用其他字体显示。换用的逻辑这里不再描述。
看来apple的人也知道它的中文显示有问题,改过好几回,还是错误的,只能在它能用的少数字体下测试,这些字体可能包含的文字较多,没有发现问题。
说实话,webkit字体问题不是出现在这里,原来判断逻辑没有什么毛病,是apple的人其他地方范下错误,导致字体名称是对的,该字体也包含字符,显示就不对。