LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 4074|回复: 22

让内核中支持Unicode字符显示,意下如何?

[复制链接]
发表于 2005-9-5 14:35:15 | 显示全部楼层 |阅读模式
在内核中显示汉字,想必大家都清楚。先有蓝点,做得很好,关键是技术不公开,现在也法消声匿迹了,后来有了Turbo北京做的UNICON,效果没有蓝点好,但是是技术是公开的,参考这里http://www.lslnet.com/linux/docs/linux-2209.htm
,现在是北京Turbo不做了,日本Turbo在继续,有代码可以学习确实是开源的好处,这里有源代码等http://vdr.jp/d/unicon.html 。其他的内核显示汉字好象就没有了,外国人做的内核支持Unicode也只是在不同的西方字符集之间的事,也还未成熟。参考这里http://www.cl.cam.ac.uk/~mgk25/unicode.html
UNICON实现了内核显示CJK字符的功能,不少网友认为UNICON实现时间很长了也很稳定,但是却始终不能并入官方内核!个人认为原因是UNICON的实现几乎完全是使用破解的方式,与内核的开发方向不一致,其屏幕可看成是任意本地编码的,是什么编码只有UNICON知道,显示过程靠修改字库指针来欺骗,显示制表符依赖字符转义序列来识别。这些东西可能都不是正规的内核开发所能接受的,虽然这些只是初期的技术,但是现在的UNICON中可能也没有本质的改变。
本人所想:
让内核显示是Unicode的!也支持不同的Locale。
1、内核中屏幕字符的表示完全使用16位的Unicode字符,颜色等属性也用16位来表示。这样就可以同屏显示Unicode中几万字符。原来为ca,现在为CACA,c、a为8位,C、A为16位,一个汉字在两个位置都能读到完整的Unicode码,A部分包含左边或右边的信息。
2、Unicode的显示有单宽度也有双宽度(甚至3宽度等),单宽度用来表示西方字符,宽度用来表示中文等。宽度信息由字库给出,保存在屏幕显示属性中。
3、字库使用Unicode顺序,方便实现显示。内核中多字库组合(不是多种字体),可以一个范围的Unicode字符使用一个字库,这样可以节省内存空间,不用的字库不必调入内存。
4、支持Locale,缺省为UTF-8。用户空间的字符先转成Unicode再显示,从屏幕到用户空间的字符做反向转换。Locale信息可保留在终端数据结构中。
5、显示汉字当然要使用图形方式,这里就使用内核的FrameBuffer,可能要做一定的修改。
6、Unicode的输入当然也要支持!但是可以先暂缓。可以参考UNICON,或者在内核中做服务接口,编码到字符的转换完全由用户程序实现。
相对其它项目,这个算比较简单,有参考代码,资料也好找一点。内核代码阅读可用VIM+CSCOPE。如果可以实现,那么所有的Linux安装都可以简单地实现任意语言的字符界面了,就是平时用着也会觉得不错。实现得好有机会进官方内核吧,还有不足吗?
阁下意下如何?
发表于 2005-9-5 18:24:23 | 显示全部楼层
其实在核心中实现UNICODE没有必要.
回复 支持 反对

使用道具 举报

发表于 2005-9-5 18:54:39 | 显示全部楼层
我也有这样的想法
不过我觉得为了简化可以在内核内部只使用 utf-16 在与用户交流时再进行 utf16 <-> utf8 的转换,
对其它的 locale 的支持完全由用户程序来实现。
回复 支持 反对

使用道具 举报

发表于 2005-9-5 19:00:40 | 显示全部楼层
要可以进入官方才好呀



对了 , Linux 字符安装程序用多语言倒未必要内核支持 , 很多工具都可以做到
回复 支持 反对

使用道具 举报

发表于 2005-9-5 19:04:28 | 显示全部楼层
月月 , UTF-16 的字符集够大吗
回复 支持 反对

使用道具 举报

发表于 2005-9-5 19:07:30 | 显示全部楼层
够大的:)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-9-5 20:28:32 | 显示全部楼层
Post by sunmoon1997
我也有这样的想法
不过我觉得为了简化可以在内核内部只使用 utf-16 在与用户交流时再进行 utf16 <-> utf8 的转换,
对其它的 locale 的支持完全由用户程序来实现。

我想可能实现的是不完全的Unicode,即只是定长16位的部分,也不支持合成字符,至少在屏幕显示部分不支持,这样才相对简单,其他的用户编码倒是可以不实现,只实现UTF-8就不错了。但是,增加其他编码的支持可能也只是增加两个转换函数而已,当然这个容后再议,不是关键。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-9-5 20:33:19 | 显示全部楼层
Post by missanda
其实在核心中实现UNICODE没有必要.

可以实现的话,又没有影响其它方面,多使用一点内存而已。
关键是可以通过这个可能相对容易实现的想法,可以学习内核及其编程,也不错。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-9-5 20:36:32 | 显示全部楼层
Post by jhuangjiahua
要可以进入官方才好呀
这个吗?只有Linus最清楚什么样的实现才能进入了,当是练习好了
对了 , Linux 字符安装程序用多语言倒未必要内核支持 , 很多工具都可以做到
这倒是,但是想想可以直接支持UNICODE的内核,还是觉得有吸引力!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-9-5 20:38:46 | 显示全部楼层
Post by jhuangjiahua
月月 , UTF-16 的字符集够大吗

UTF-16?太大了!现在还没有使用吧!实现起来也麻烦,对于屏幕来说,变长的编码不好办!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表