FontRouter2 is UIQ Ready now!

  今天终于在UIQ2环境下解决了一个埋藏很深的问题,至此,UIQ2模拟器中的FontRouter2已经初步工作正常了。FontRouter在继支持S80后,实现了又一次新的突破。

  这一次,不同于FontRouter 1.32对S80的有限的支持,FontRouter2支持S80和UIQ系列独有的多尺度点阵字体,再加上对TrueType字体的完美支持,用户将可以享受到在完全不影响原有英文字体效果之上的中文显示!

  另外,可以透露一点,目前Symbian7系列的手机(包括UIQ)都可以通过FontRouter2激活原本关闭的“反锯齿TrueType”字体效果,当然,具体性能表现还要视CPU机能而定。这个特性目前也已经完成,Alpha2版中就可以体验到了。:)

搞定点阵格式的转换,实现了同屏显示反锯齿的字体和传统字体

  把run-length格式转换为anti-alias格式还真是一件麻烦事,不过好在编码、调试一次搞定!虽然毕业之后就很少搞这种纯算法的东西了,但看起来还没丢掉呢。;)

  呼,不早了,赶紧睡觉去咯~

峰回路转 柳暗花明

  这半个月里,一直苦苦寻觅破解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的窗口中时,我缓缓坐下来,呷了一口杯中的绿茶,闭上双眼,细细品位这一刻的舒畅……

TrueType,想说爱你不容易……

  在搞定了字体的动态加载/卸载后,周末对最后一项可行性实验——“集成FreeType支持”发起了挑战。虽然对困难有足够的估计,但是FreeType的叛逆还是让我很恼火。因为Symbian没有提供WINS版本的FreeType.dll,导致无法直接在模拟上进行调试。也罢,自己写了一个Dummy来模拟FreeType.dll的行为,然后一举在模拟器上调试通过。如此“顺利”的进展也让我多少有点意外,哪知道上机测试即告失败。启动时直接卡在“NOKIA”几个大字阶段,漫长的等待后——“白屏”……

  好在本次项目启动后所完成的第一个特性就是“防白屏保护”,让我免除了后顾之忧。还记得一年前因为存着侥幸心理,结果调试FontRouter的过程中NG白屏过两次,造成高达数十元RMB的直接经济损失以及往返于“通天地”的奔波之苦,最后还落得收音功能实效的后遗症……

  开源的FreeType项目在被Symbian移植后,不但拒绝开源不说,甚至连模拟器上的DLL版本都不提供,如此讳莫如深,让人多少有些感叹Symbian和开源的潮流实是相去甚远……