简评 Safari windows 版及 webkit for widndows的 新版本

上月,Apple 终于出Safari 的windows版本了,引来大量的下载,着实热了一 阵子。然而这个版本存在大量问题,同时导致大量骂声。本文从技术的角度简评一下。

首先,这个版本确实真正不支持多字节的操作系统,如中日韩。表现在开始时完全不能显示,而且相应功能死机。后来的更新版本可以显示了,但是不能输入,依旧无法使用。

考察apple的工程是师解决问题的思路,就完全知道这个问题不可能根本解决,需要windows高手,以及懂编码的人来做:

  搜先,Webkit在创建字体的时候使用windows API的字体创建函数时没有指定 charset参数,这个在英文类操作系统中是可以的,在中文中就不行,必须指定 charset。然而传来的参数只有字体名字,一个方法是枚举这个名字的字符集,进行尝试。Apple的方法导致他们用的windows API在找不到字, Apple的家伙解决的方法太丑陋,太丑陋,但可以勉强显示一些,依旧有缺字。

其次,Webkit不能输入汉字的原因是apple的人不知道输入法的原理,他们是这样处理文字输入的:

相当然地认为wm_char 消息就在wm_keydown后面,而且有文字输入的话最多一个 WM_KEYDOWN后有一个WM_CHAR消息。于是他们不取处理WM_CHAR消息,而是在处理WM_KEYDOWN消息时偷看消息队列后面是否有一个WM_CHAR消息,如果有,就取出来当作文字。他们从来不直接处理WM_CHAR消息,这简直完全不了解输入法嘛。

 

这些都是题外化,本文的核心不在这里,下面要评述Apple的新做法。

原来,webkit是完全开源的,windows下的绘图引擎使用的是 cairo。现在Apple要推windows Safari,在其中捆绑了一个苹果的CoreGraphics,实现了完全类似 MAC的效果。然而Apple舍不得将这个图形库开源,在webkit中干掉cairo,换用这个不开源的CoreGraphics,完全违背了开源精神。不知道如果Mozilla也来这一手会有何反映,反正这个相当令人震惊。现在按照Apple的要求,自己编译Webkit只能用在Safari中,因为他们在webkit中甚至只提供了lib文件,这些图形库的运行时dll要到SAFARI中去找,Apple还不允许随便散发。结果是未来想使用webkit做自己软件的人,对不起,请先安装SAFARI,然后可以了。这是不是新形式的捆绑?另外,如同MAC中一样,SAFARI中的 webkit与这个半开源的webkit不是一样的,这也令人沮丧!!!

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值