如果是英文显示是乱码的话,并且英文点阵使用的是机器BIOS里面的点阵数据的话,可能就是因为BIOS的原因了。
最早的,在吴进的TC256里面就是使用BIOS ROM里面的英文点阵,其方法大概是取得了某个地址,指向了英文点阵数据区。这种方法后来被证实不太可靠,因为不同机器的BIOS中的点阵数据可能是不同的。我以前就是使用此种方法,然后程序在自己机子上调好,到别人机器上就是乱码,如果在别人机器上调好,到自己机器上就成了乱码。
应该说是用BIOS里面的点阵数据是可行的,可能是TC256以及我后来的实现中,没有严格按照VGA的标准去做,而只是简单的取得了点阵数据区的地址。其实VGA在这方面是有一套标准的接口和操作流程的,最好能够严格按照其标准去做。
在我后来的实现中,将中英文全部采用文件形式的点阵字库来实现,个人感觉更加的简单易行,且易于维护。可以考虑采用这种方法。
字体方面,需要考虑的还有很多,比如矢量字库,国际化支持与多国语言等,因此需要好好思考,设计出简洁可扩充的调用接口,然后再加以实现。
如果是XP下进入VESA视频模式出现花屏,是因为某些显卡驱动的问题,一般情况下,更新一下显卡驱动就可以解决问题。我个人分析是XP再早期对SVGA的兼容性没有做好,但是当时各大显卡厂商已经按照微软提供的标准和DDK开发出了显卡驱动程序。后来MS发现了XP对SVGA的兼容性问题,对此做了修正(XP SP2中?猜测,因为SP2以前的好像始终不行)。当然,这种修正不是MS单方面就能解决问题的,还需要驱动开发厂商的配合,因此MS发布了新版的DDK,然后给出了新的县卡驱动标准,厂商就开发出修正般的驱动程序。作为用户就需要升级XP和显卡驱动,就可以解决问题。
当然,以上纯属个人推测。
[此贴子已经被作者于2007-4-2 16:18:53编辑过]