【内存至上】E15版英文解决方案

其实oasisfeng 制作的FontRouter.dll系列字体动态链接库是为N-GAGE服务的 。
因为N-GAGE的C盘比较小(C盘大小关系到系统稳定以及白屏问题),而且NG的字体直接放在E盘是没有任何作用的,所以就必须设计一种软件,能够实现NG调用E盘的字体,这样就可以极大的节省C盘的空间 。
FontRouter.dll就实现了此目的,不过发展到现在FontRouter.dll也越来越完善,并且已经能够单独调用自选中文字体而不会屏蔽原机的英文大字体 。并且到了1.1版,解决了中文字体被重复调用的BUG,节省了以前不必要浪费掉的内存,已经很完善了 。
既然有很多人用E15版的SX1,我们也需要中文 。那么我们就来看看SX1的情况 。SX1的C盘也比较小,虽然没有白屏危险,但C盘的大小对于系统的中转是很有用处的 。所以我们最好也把字库放到E盘 。而SX1本身的系统竟然支持E盘字库的调用,也就是说,我们不用FontRouter.dll也可以实现字库E盘放置 。不过,直接把字库放E盘之后,原机的英文字体就被中文字里的英文库屏蔽了,所以直接把字库放E盘后系统的英文字体会发生改变 。
也就是说,我们用FontRouter.dll其实只用到了它的单独调用中文字库功能,而E盘链接功能我们根本就没有用到,因为SX1本身就可以实现 。
需要指出的是,英文机使用中文字库是在开机时加载的,也就是说常驻内存 。中文字库的大小直接决定着你的SX1多耗费内存(动态内存RAM,非C盘flash内存)的大小 。如果你调用越多的字体,那么你剩余的动态内存就越小 。后果是导致一些大型游戏因为内存不足而无法运行 。举个例子,以前使用了0.99版的FontRouter.dll,因为重复加载中文字库,内存一般只有7.6MB左右,开机干净系统下也无法运行《地狱》和《口袋王国》此NG游戏(经测试需要7.8MB内存) 。
内存的大小是比较重要的 。个人认为,内存是尽量越大越好 。因为你开机即使达到7.8MB或多一点的内存,在你运行一些程序以后,内存会下降,而且通过APPMAN也无法全部恢复导致一些大型游戏还是无法运行 。所以,尽可能多的内存可以使我们在运行一段时间后我们仍然可以自由的运行各种大型程序 。
内存至上就是我追求的目标 。
首先是字体消去一,根据使用NG的经验,系统一般只需要使用11X12的字体即可 。15X16一般是在看电子书的时候用到,所以去掉一字库调用,节省0.3XMB的内存,非常可观(经常看电子书的朋友不适应小字体就算了) 。
其次是FontRouter.dll和直接放E盘的选择 。经过我的研究,发现FontRouter.dll虽然解决了中文字库重复调用的问题,但还是会造成ceurope.gdr和browser.gdr两个字体的重复调用 。把中文字库直接放E盘可节省0.2XMB的内存 。不过,把字库放在E盘之后,还需要一个中文ceurope.gdr(30K)代替z盘的ceurope.gdr才能正常显示中文 。这个也可以时待机的数字时钟显示更美观 。(具体见http://bbs.dbsjw.com/dispbbs.asp?boardID=39&ID=82149&page=1)
最后是字体的选择 。现在我们只保留了一个字库 。但是对于这一个字库,我也不会手软 。经过挑选,现有的所有字库中有2个字库是最小:一个是Q9的12号字库200K,另一个是中文QD字库是220K(大家也可以寻找更小的字库,一般字库容量越小字体越小或字数较少) 。用Q9字库还可以多节省20K也就是0.02MB的内存 。Q9的字体好象要比QD字体看起来小一些 。我是采用了Q9的字体——内存至上!
另外,到APPMAN的线程里查看列表,如果后面没有齿轮的就是非系统调用的删除也不会有问题 。查看详情,如果用不到的,直接把相应目录的调用程序删除也可节省一些内存 。(系统线程不去关,稳定优先,也懒的关不可能每次去关)

推荐阅读