用户管理  |   用户注册                                                                                    首 页软件下载教程中心办公指南flash动画文档下载办公公文

www.4oa.com - 中科软件园

投递文章 用户管理 投稿指南 资讯通告 :
站内搜索: 您的位置中科软件园 > 教程中心 > 操作系统 > Linux > 中文化 > 教程内容

基于Linux核心的汉字显示的尝试

2005-5-26 23:19:59  来源:本站整理  作者:不详 【 投递文章
内容提要:意的地方∶1.由于屏幕重绘等原因,调用底层驱动xxxx_putc()和xxxx_putcs()的地方有多处。我们作了两个函数分别包装这两个调用,完成替换字库、调用xxxx_putcs()或xxxx_p...
意的地方∶

1. 由于屏幕重绘等原因,调用底层驱动xxxx_putc( )和xxxx_putcs()的地方有多处。我们作了两个函数分别包装这两个调用,完成替换字库、调用xxxx_putcs( )或xxxx_putc( )、恢复字库等功能。

2.为了实现向上滚屏(shift + pageup)时也能看到汉字,我们需要作另外的修改。

Linux在设计虚拟终端的时候,提供了回顾被卷出屏幕以外的信息的功能,这就是用热键来向上滚屏(shift + pageup)。当前被使用的虚拟终端拥有一个公共的缓冲区(soft back),用来存放被滚出屏幕以外的信息。当切换虚拟终端的时候,公共缓冲区的内容会被清除而被新的虚拟终端使用。向上滚屏的时候,显示的是公共缓冲区中的内容。因此,如果我们想在向上滚屏的时候看到汉字,公共缓冲区也必须加倍,以确保没有信息丢失。当滚出屏幕的信息向公共缓冲区填写的时候,必须把相应的附加信息也填写进公共缓冲区的附加区域。这就要求fbcon.c必须懂得利用公共缓冲区的附加信息。

当然,有另外一种偷懒的方法,那就是不允许用户向上滚屏,从而避免对公区缓冲区的处理。

3.把不同的编码方式(GB、BIG5、日文和韩文)写成不同的module,以实现动态加载,从而使得扩展新的编码方式不需要重新编译核心。

小结

通过这次针对Linux核心的探索,我们发现,目前Linux的核心设计中,完全没有考虑到双字节编码字符的显示。我们在这种情况下摸索出一套解决核心下汉字显示的方法,并编码实现了该方案.

遵循核心的GPL版权声明,我们同时公布了实现这一技术的源代码,当然,这些改动仍然是GPL的.如果能对研究核心的朋友有所帮助,减少一些大家对核心的神秘感,将是我们最大的收获。

但是对核心和中文化来说,这仅仅是一种尝试,远不是终点.这种改动多少带有一些hack的色彩,不太可能融合进权威的核心里去.我们仍在积极探索圆满解决这一问题的方法,相信这一结果必然需要通过国内外Linux群体的共同努力才能实现.我们也非常欢迎大家和我们共同讨论这一问题.

测试

本文实现的Kernel Patch文件(patch.kernel.chinese)可以从http://www.turbolinux.com.cn下载。Cd /usr/src/(该目录下应有Linux核心源程序所在的目录linux/) patch -p0 -b < patch.kernel.chinese make menuconfig 请选择Console drivers选项中的

〔*〕 Double Byte Character Display Support(EXPERIMENTAL)

〔*〕 Double Byte GB encode (module only)

〔*〕 VESA VGA graphics console

<*> Virtual Frame Buffer support (ONLY FOR TESTING!)

<*> 8 bpp packed pixels support

<*> 16 bpp packed pixels support

<*> VGA characters/attributes support

〔*〕 Select compiled-in fonts

〔*〕VGA 8x8 font

〔*〕VGA 8x16 font

make dep

make bzImage

make modules

make install

make modules_install

然后用新的核心启动。

Insmod encode-gb.o

上一页  [1] [2] [3] 

(评论内容只代表网友观点,与本站立场无关!)[ 全部评论 ]

网友评论:

    用户名:

    评   分:100分 85分 70分 55分 40分 25分 10分 0分

    内 容:

                 (注“”为必填内容。) 验证码: 验证码,看不清楚?请点击刷新验证码

关于本站 - 网站帮助 - 广告合作 - 下载声明 - 友情连接 - 网站地图 -有事点这里