| 15 | |
| 2006.7 |
这半个月里,一直苦苦寻觅破解FreeType的良方而不可得,今天终于可以送一口气了。
当初遍寻Nokia S60、S80和S90系列的SDK,都没有找到FreeType.dll的WINS版本,后经过某大虾的提点,终于在UIQ3 SDK中捕捉到了它的踪影。刚兴奋没多久,尝试在S60 v1/v2中借用它时就失败了。其实结果是显而易见的,Symbian 9 修改了大量接口,与之配套的FreeType.dll直接拿到S60 v1/v2中来用时,自然会有很多关联的dll无法找到对应的ordinal。索性尝试将FontRouter port到UIQ3中来调用FreeType,结果又失败了(Symbian 9的门槛果然比较高,这个短期内暂不考虑了)……郁闷之余,甚至还尝试过反汇编它,依然未果……
今晚,在寻找一个稀有的头文件时,灵感突发。因为涉及一些被Nokia隐藏的内部接口时,常常能从早期的SDK版本中找到所需的头文件(后来的版本中被去掉了),比如Moto A920、N9200以及传说中的Sendo SDK。那么,Freetype.dll是否也如出一辙呢?于是乎,搬出所有收藏的古董级SDK统统装上。果不其然,让我在N9200 SDK中找到了WINS版本的FreeType.dll。哈哈,有了这把钥匙后,剩下的攻势自然势如破竹,不到1个小时就在模拟器上调通了。当那带着几分晦涩却又让人无限神往的TrueType字体浮现在EPOC的窗口中时,我缓缓坐下来,呷了一口杯中的绿茶,闭上双眼,细细品位这一刻的舒畅……
| 2 | |
| 2006.7 |
在搞定了字体的动态加载/卸载后,周末对最后一项可行性实验——“集成FreeType支持”发起了挑战。虽然对困难有足够的估计,但是FreeType的叛逆还是让我很恼火。因为Symbian没有提供WINS版本的FreeType.dll,导致无法直接在模拟上进行调试。也罢,自己写了一个Dummy来模拟FreeType.dll的行为,然后一举在模拟器上调试通过。如此“顺利”的进展也让我多少有点意外,哪知道上机测试即告失败。启动时直接卡在“NOKIA”几个大字阶段,漫长的等待后——“白屏”……
好在本次项目启动后所完成的第一个特性就是“防白屏保护”,让我免除了后顾之忧。还记得一年前因为存着侥幸心理,结果调试FontRouter的过程中NG白屏过两次,造成高达数十元RMB的直接经济损失以及往返于“通天地”的奔波之苦,最后还落得收音功能实效的后遗症……
开源的FreeType项目在被Symbian移植后,不但拒绝开源不说,甚至连模拟器上的DLL版本都不提供,如此讳莫如深,让人多少有些感叹Symbian和开源的潮流实是相去甚远……
| 30 |
1:31 PM | FontRouter • Symbian
|
| 2006.6 |
好消息是,成功在S60 v2.0(Symbian 7.0s) 的模拟器上初步实现了字体的动态卸载;
坏消息是,由于Symbian 6.1字体管理机制的bug(在7.0s中已被修正),动态卸载字体会导致不可预料的后果(说白了就是随机重启……)。看来,N-Gage/QD/3650系列是无缘这一重要的优势了。
My poor N-Gage… :(
| 25 |
6:00 PM | FontRouter • Symbian
|
| 2006.6 |
时隔一年多,终于在最近重新启动了FontRouter的新版本计划。尽管工作依旧很忙,但我仍希望能在每天晚上下班后抽出一两个小时的时间继续进行开发,为这个沉寂已久的软件带来一些新的活力。
新版本主要关注的方向是: