常见问题常见问题   搜索搜索   会员列表会员列表   团队团队   注册注册    个人资料个人资料   登录查看您的站内信件登录查看您的站内信件   登录登录 

XWindow下汉化的常见问题解答

 
发表新文章   这个论题已经被锁定,您不能发表、回复或者编辑文章。    FreeBSD China -> 中文-桌面-开发-调试
阅读上一个主题 :: 阅读下一个主题  
作者 留言
wxjoshua
精神病


注册时间: 2002-09-06
文章: 569

文章发表于: Thu 2002-10-17 08:38:32    发表主题: XWindow下汉化的常见问题解答 引用并回复

声明


本FAQ的最新HTML版本可以在http://dongfangzhixiao.com.cn/cgi-bin/bigate.cgi/b/k/k/http@fish.ihep.ac.cn/www/faq.html

获得. 列出的某些软件可在 ftp://fish.ihep.ac.cn/下获得.


本FAQ是针对XWindows下的汉字处理和汉化问题编写的, 作者编写此FAQ的目的

是使更多的人了解XWindows的汉化问题.


作者并非汉化专家, 甚至谈不上这方面的专职程序员, 作者只是在该领域里进

行了短时间的探索. 所以本FAQ 对有的问题解答很肤浅, 也有可能对某些问题

的解答不正确, 敬请原谅. 作者不对使用本文所造成的后果负责.


本FAQ是开放型的, 如果您有什么问题, 建议, 解答请发电子邮件给作者 , 作

者会在下一版本更新.


总索引


有关汉字的基本知识


汉字编码


汉字编码间的转换


GB与BIG5的识别


有关半个汉字问题


X Font


怎样安装 X Font?


X Font现有哪些种格式?


怎样转换字体?


汉字字体的编辑


有哪些软件可以编辑X汉字字体?


什么是Scalable字体?


汉字显示


如何实现汉字和ASCII的混合显示?


怎样竖向或有角度地显示汉字?


如何实现特殊效果的汉字显示?


X Windows下软件的汉化


有汉化的X Server吗?


X 窗口管理器的汉化是否容易?


没有源程序时如何汉化?


有源程序时如何汉化?


如何解决汉字输入问题?


有汉化的Java吗?


现有软件


现有的汉字编辑软件


现有的汉字处理软件


有哪些汉字输入软件?


我想编制可以使用汉字的窗口软件, 有汉化的Widget软件吗?


听说Tcl/Tk是不错的软件包, 它能使用汉字吗?


如何在Netscape显示与输入汉字?


如何在email中使用汉字?


如何在IRC中使用汉字?


图形与汉字


汉字编码基本知识


汉字编码


汉字GB和BIG5都为双字节编码, GB编码的第一字节在0xa1到0xf7之间, 第二字

节在0xa1到0xfe之间. BIG5编码的第一字节在0xa1到0xf9之间, 第二字节有两

个区域, 第一区域在0x40和0x7e之间, 第二区域在 0xa1和0xfe之间.(注意第

二字节的高位可能是零)


汉字编码间的转换


国标与big5之间的转换:

ftp://ftp.fedu.uec.ac.jp/pub/china/software/ifcss/unix/convert/hc-30.tar.gz

国标与HZ之间的转换:

ftp://ftp.fedu.uec.ac.jp/pub/china/software/ifcss/unix/convert/HZ-2.0.tar.gz


GB与BIG5文件的识别


单字统计方法: http://dongfangzhixiao.com.cn/cgi-bin/bigate.cgi/b/k/k/http@http://www.erols.com/eepeter/chtools.html , 该方法按汉字出现的频度设置权重, 然后对应文件按字识别


词组统计方法, 该方法按汉字词组出现的频度设置权重, 然后对应文件按字识别

字节统计方法: http://dongfangzhixiao.com.cn/cgi-bin/bigate.cgi/b/k/k/http@yumj.kek.jp/www/chrecog.html , 该方法统计汉字的第二或第一字节, 取平均值和184比较


有关半个汉字问题


提出半个汉字的原因是有的软件在处理汉字不当时,显示了半个 汉字. 这是因

为对汉字的编码不甚了解造成的. 请注意您所看到的 是汉字的图形显示的一

半被削去了. 既如此, 同样也可以把显示 的汉字变成原来的1/4, 3.14/4...




对应于字符缓冲区, 实际上是原来的汉字的两个字节被删去一个 字节. 这样

它就不可能再查找汉字字模, 所以清屏幕后再显示时 该字节后都是乱码.




那半个汉字能不能实现呢? 当然可以. 很遗憾的是, 您必须仍然 使用双字节

来索引半个汉字, 因为单字符的索引范围最多为256, 抛去最高位为零的只剩

128了. 既然这样, 何苦用半个汉字呢? 基于以上原因, 使用半个汉字也不能

减少输入的麻烦, 相反您的 麻烦可能是原来的两倍.


汉字字体


怎样安装X Font?


字体安装有本机安装和服务器安装两种


获取字库后, 放在某目录如 ~/font下


使用mkfontdir ~/font 产生 font.dir


编制alias文件:font.alias


本机使用: xset fp+ ~/font


列出Font: xlsfonts


显示Font: xfd -fn fontname


使用新的alias时, 使用xset fp rehash


--------------------------------------------------------------------


获取字库后, 放在某目录如 ~/font下


使用mkfontdir ~/font 产生 font.dir


编制alias文件:font.alias


编制font的配置(Configuration)文件, 如 fsconf1234, 其中含有端口号,目录等如,


port = 1234


clone-self = on


client-limit = 10


catalogue = /usr/local/font,/home/yumj/hzfont


default-point-size = 120


default-resolutions = 100,100,75,75


Font服务器启动: fs -cf fsconf1234 &


Font客户使用: xset fp+ tcp/server_host_name:1234


列出Font: xlsfonts


显示Font: xfd -fn fontname


使用新的alias时, 使用xset fp rehash


X Font现有哪些种格式?


X Font有很多种格式,


bdf: 点阵格式, 用于直接访问或转换成其它格式


pcf: X11R5 或更新版本


snf: X11R4 或更早版本


hbf: 汉字位图(bitmap)文件


ttf: True Type


怎样转换字体?


bdftopcf: 把bdf字库转换成pcf格式


bdftosnf: 把bdf字库转换成snf格式


hbftobdf: ftp://ftp.ifcss.org/pub/software/info/HBF-1.1.tar.gz : 把hbf字库

转换成bdf字库


ttf2bmp: ftp://ftp.ifcss.org/pub/software/fonts/utils/ttf2bmp.zip : 把True

Type转换成Bitmap


hbf2fnt: ftp://ftp.ifcss.org/pub/software/fonts/utils/HBF2FNT1.ZIP : 把hbf

转换成MS Windows Font


有哪些软件可以编辑X汉字字体?


有许多商业和免费软件可以编辑修改XFont, 如

ftp://crl.nmsu.edu/CLR/multiling/General/xmbdfed.tar.gz


什么是Scalable字体?


Scalable(可缩放)字体实际上是把现有字体装入时的字体缩放 机制. X字体共

有十四个域(field), 如

-cclib-fangsong-medium-r-normal-jiantizi-24-240-75-75-c-240-gb2312.1980-0

为仿宋简体24点阵. 如果使其缩放, 则可以把第七和第十二域置为'*', 把第

八域设置为字体的大小. 如放大为36点阵,

-cclib-fangsong-medium-r-normal-jiantizi-*-360-75-75-c-*-gb2312.1980-0

请尝试用xfd检查.


矢量字体

了解不多


汉字的显示


如何实现汉字和ASCII的混合显示?


编写的程序把汉字与ASCII分开, 然后逐段处理, 普通字符串的显示 用

XDrawString或XDrawImageString, 汉字的显示用XDrawString16 或

XDrawImageString16.


能够区分的汉字常用编码中, BIG5与GB不同, BIG5编码的第二个 字节的高位

有可能为零.


怎样竖向或有角度地显示汉字?


这是所有字体显示都会遇到的问题.


在X Windows下不能直接有角度地显示字符串. 但是可以通过先写缓冲区, 当

然最好是看不见的(Not Mapped)窗口的pixmap, 然后再从缓冲区中取像素转

换, 此方法相当于图象处理. 使用此方法, 可以实现汉字的任意角度旋转和

任意尺寸的放大/缩小.


如果您有幸装了X11R6, 它本身有设置字体的转换矩阵的功能. 请参考X 手册

的X逻辑字体描述(X Logical Font Description)一节. 如果您使用X11R5并

且可以使用X11R6的字体, 也可以使用 转换矩阵的方法.


软件 xvertext-5.0-ss-9.01.tar.gz是较好的处理字体旋转的软件, 但在应

用于汉字时须作稍微改动.


如何实现特殊效果的汉字显示?


这是所有字体显示都会遇到的问题.


特殊效果如突起, 凹下等都可以通过以不同的颜色,粗细等方式 错位地重写字

符串来实现.注意重写时用XDrawImageString16, 并使用不同的GC来写汉字(GC

中的很多项都影响到汉字显示).


X Windows下的汉化


有汉化的X Server吗?


CX-Window 这个是经过国人改写的 X-Window Server。可以让您的 X-Window

直接显示中文。 但是目前只能显示中文,并无法提供您在各种应用软件中输

入中文。


[作者按:希望改动X Server来汉化输入是很困难的. 这需要改动X Server 的事

件(XEvent)分配(Dispatch). 即使如此, 有些软件还是不可能支持 汉字输入]


X 窗口管理器的汉化是否容易?


一个容易误解的问题是, 很多人把窗口的标题认为是所运行的应用软件的一

部分. 所以提出"netscape的标题为什么不能显示中文?"等类似问题. 其实,

窗口的标题是属于窗口管理器的显示部分.


窗口管理器是特殊的窗口, 它把所有的新窗口作为自己的子窗口. 但实际上,

它又是与普通窗口具有同样权限的窗口. 所以汉化窗口管理器的显示是很 容

易的. 窗口管理器的汉化内容主要包括窗口标题(Title)的显示(或翻移/ 过

滤后显示), 按钮条(Toolbar)和菜单(Menu)的显示, 工具内容的显示等等.


fvwm95是较好的窗口管理器之一, 它的汉化版本可以从 这里取得.


没有源程序时如何汉化?


除非特别需要, 不要去改动可执行代码使其显示汉字.


如果软件是采用动态连接的(Dynamic Link), 可以改动动态连接库(一般为

.so), 当然程序员必须熟悉如何替换库中的函数, 甚至替换标准库函数. 此

类方法成功的可能性很小.


"包装"技�X是新兴的汉化技�X之一.它采用了对字符串显示的 处理, 对键盘

事件的截取等, 从而可以使应用软件正确地显示和 输入汉字. 如可以使普通

的XTERM, netscape, Xform...等软件 显示和输入汉字.


如果软件是静态连接的(Static Link), 则只能改动可执行文件了. 如果该软

件支持汉字显示, 或通过"包装"后可以显示汉字, 可以试一下编辑该软件(用

vi或一些hexedit软件), 改动其中较 明显的字符串为汉字, 如"File" -->
"文件".此乃下策, 它仅仅 使软件中的菜单标题等变成汉字.


有源程序时的如何汉化?


有源程序时汉化比较容易, 程序员要做的事有两件(1)汉字或汉字和ASCII 的

混合码的显示(2)汉字输入.


原软件需要改动的地方一般有混合显示, 必须使用新的函数取代原来的 XDrawString和XDrawImageString.

窗口尺寸计算, 必须使用新的函数取代原来的 XTextWidth

编码探测, 使用普通手法或unicode判断汉字和汉字的第一或第二字节

窗口事件的重处理, 把功能键和输入键码分开, 输入键码作汉字转换

汉字接收处理还要处理Font, GC等


如何解决汉字输入问题?


X-Windows最初的设计并没有考虑到汉字的输入问题. 所谓汉字输入实际上 是

把您输入的键码(KeyCode)发送到一个用于转换的软件,该软件依据一定的 转

换方法(即输入法)转成汉字码, 然后发送到该键码的Window中, 或把 汉字码

存储到Cut缓冲区内, 由用户获取.


所以汉字输入问题是十分棘手的问题. 首先它需要软件支持汉字显示, 如果显

示 不正确,输入的内容出了问题无从查找. 其次它需要软件支持汉字输入, 如

果 软件禁止8-bit的字符输入, 也不可能实现汉字输入. 鉴于以上两点, 一般

来 说, 软件在制作时就应考虑汉字的显示与输入问题.


通过重定义键盘, 使键盘按下后可以产生完整的Latin-1字符集, 则可以有效

地避开某些软件对键盘的处理(XLookupString()). 关于如何定义键盘可以参

考xkeycaps-2.38.tar.gz, 软件Chinput-1.3则正是利用该方法 实现汉字输入.


如果上述两个条件都满足, 一般地, 我们可以用Cut/Paste的方法输入汉字.

否则, 则必须依据问题使用其它方法.


有汉化的Java吗?


使用"包装"后的netscape, 可以直接使用GB,BIG5等编码而显示和 输入汉字.


清华大学计算器系的田金兰,吕思飞,徐伟生对Hotjava浏览器和Java语言 进行

了汉化(结果未知). 汉化后的功能支持

完全支持原有英文版的各种功能。在处理英文文档时,所提供的功 能与英文版HotJava完全相同�r


增加中文信息处理功能,包括:


输出功能。能输出包括GB和BIG5编码在内的任何中文信息。这些 信息可能是HTML或其它文档的内容,也可能是Java Applet 的输 出。至于需要输出的中文信息的界面元素。如Menu、Button、 Frame等,也提供相应的输出功能。


打印功能。能打印含有中文信息(GB或BIG5编码)的文文件。


输出功能。提供对通用输入方法(GB:拼音、内码、五笔字型等, BIG5:仓颉、倚天注音等)的支持,支持TextField和TextArea 内的汉字编辑。


使用Java显示汉字: http://dongfangzhixiao.com.cn/cgi-bin/bigate.cgi/b/k/k/http@www.ocrat.com/ocrat/reaj/


中文Java计划: http://dongfangzhixiao.com.cn/cgi-bin/bigate.cgi/b/k/k/http@www.digiorbit.com/~tzhang/java/project.html


汉化工具和已汉化的软件包


有哪些汉字输入软件?


CXterm+vi(...)


汉字输入编辑的最常用软件


xcin


xcin 是在 X-Window 模式下执行的中文输入系统, 因为 xcin 是利用

X-Window 的 Server/ Client方式执行的,所以您只要启动一个 xcin 输入

窗口,便可以对应许多的 crvxt 显示虚拟终端机,占用系统资源比较小。也

提供类似 DOS 环境下的忘形或自然输入 法的智能型输入选字环境。目前

xcin+crxvt 需配合倚天中文系统,制作字型与输入 法。


Chinput: http://dongfangzhixiao.com.cn/cgi-bin/bigate.cgi/b/k/k/http@yumj.kek.jp/www/chinput.html


Chinput是基于CXterm的汉字输入服务器. 使用它, 使程序员可以很容易 地

汉化X-Windows下的软件, 使其支持汉字输入. 它除了具有CXterm的所 有输

入方法外, 还具有良好的用户界面, 编程API等, 目前可以使用Chinput 的

软件有Tcl/Tk系列软件, EZWGL(X-Window下的汉化编程工具, 编程方便, 功

能齐全).


经过"包装"的Chinput-1.3则可以全面支持X窗口的汉字输入和显示.


北京大学的汉字输入服务器软件. 未见源代码和可执行代码公开.


cWnn+Kinput

了解不多.


我想编制可以使用汉字的窗口软件,有汉化的Widget软件吗?

EZWGL-1.24-chinese.tar.gz 是第一个汉化的窗口编程Widget软件.


EZWGL 是由得克萨斯大学的 Maorong Zou先生创建的一套X窗口下的Widgets,

它以 编程方便,功能齐全而深受用户的喜爱. 尤其是它的三维 画板(3D

Canvas)Widget 更是所有Widgets中唯一具有的 功能. 其组件有, 标签

(Label,FreeLabel,NWLabel), 边框(Frame), 按钮(Button, Check Button,

Radio Button, MenuButton), 菜单(Menu, SubMenu), 滚动条(Slider),

图标(Icon),输入区(Entry, optEntry),列表(ListBox), 文本区(Text),

笔记本(Notebook), 缩放条(PaneHandle), 三维画板(3D Canvas), 文件选择

器(FileSelector), 执行器(Executor), 树状列表(ListTree), 高级列表

(FancyListBox), 工作区(WorkArea). 用户可以从

http://dongfangzhixiao.com.cn/cgi-bin/bigate.cgi/b/k/k/http@rene.ma.utexas.edu/~mzou/EZWGL/

取得原软件.


本文作者对EZWGL进行了全面汉化, 汉化后的软件支持GB, BIG5, Japanese

EUC, 和Korea EUC. 支持汉字和ASCII的混合显示, 支持输入区和文本区的

汉字 输入和混合编辑. 您可以从

http://dongfangzhixiao.com.cn/cgi-bin/bigate.cgi/b/k/k/http@yumj.kek.jp/www/ezwgl.html

取得汉化版本及有关信息.


听说Tcl/Tk是不错的软件包, 它能使用汉字吗?


Tcl/Tk是广泛使用的解释性语言之一. 它同时也是CGI广泛使用的软件. 用户

只需经过短期的 训练, 便可以编制复杂的XWindows应用程序. Tcl7.6/Tk4.2

的 汉化版本支持汉字和ASCII的混显, 以及汉字的输入, 您可以从

http://dongfangzhixiao.com.cn/cgi-bin/bigate.cgi/b/k/k/http@yumj.kek.jp/www/tcltk.html

取得该软件.


如何在Netscape显示与输入汉字?


使用经过包装的Chinput或XCIN, 可以在Netscape中输入和显示 中文. 其中

显示中文包括按钮, Mail和News标题等.


如何在email中使用汉字?


使用"包装"后的软件


CXterm+celm: 汉化的elm, 著名的电子邮件软件


CXterm+cpine: 汉化的pine, 著名的电子邮件软件


如何在IRC中使用汉字?


Zircon+Chinput: 基于Tcl/Tk的IRC软件,支持汉字输入与显示, 请参见说明:

http://dongfangzhixiao.com.cn/cgi-bin/bigate.cgi/b/k/k/http@yumj.kek.jp/www/irc.html


如何把汉字转化成图形?


汉字转化成图形, 要求用户能访问点阵或矢量字库, 并且实时生成图象. 即

时生成图象的软件有

GD: http://dongfangzhixiao.com.cn/cgi-bin/bigate.cgi/b/k/k/http@www.boutell.com/gd/

和它的变种.


实时中文Web页面-->GIF产生软件:

http://dongfangzhixiao.com.cn/cgi-bin/bigate.cgi/b/k/k/http@yumj.kek.jp/www/hz.html

支持GB, BIG5到GIF的转换, 支持多种字体和字型号. 同时用户可以选择HTML

标签的去除, 页面规格,如行列,边界宽度等等.


Java -->GIF产生软件:

http://dongfangzhixiao.com.cn/cgi-bin/bigate.cgi/b/k/k/http@www.ocrat.com/ocrat/reaj/

--


_________________
I have a dream:I want to travel the world.
返回页首
阅览会员资料 发送站内信件 浏览发表者的主页 Yahoo Messenger MSN Messenger
从以前的文章开始显示:   
发表新文章   这个论题已经被锁定,您不能发表、回复或者编辑文章。    FreeBSD China -> 中文-桌面-开发-调试 论坛时间为 北京时间
1页/共1

 
转跳到:  
不能发布新主题
不能在这个论坛回复主题
不能在这个论坛编辑自己的文章
不能在这个论坛删除自己的文章
不能在这个论坛发表投票


Powered by phpBB 2023cc © 2003 Opensource Steps; © 2003-2009 The FreeBSD Simplified Chinese Project
Powered by phpBB © 2001, 2005 phpBB Group
Protected by Project Honey Pot and phpBB.cc
silvery-trainer
The FreeBSD China Project 网站: 中文计划网站 社区网站
The FreeBSD China Project 版权所有 (C) 1999 - 2003 网页设计版权 著作权和商标