Linux 版 (精华区)

发信人: finding (找不到), 信区: Linux
标  题: 关于motif中的汉字(转自清华)
发信站: 紫 丁 香 (Wed Dec  9 10:47:11 1998), 转信

发信人: HiHint (好奇), 信区: XWindow
标  题: 我也灌点水--X Window的中文字体设置
发信站: BBS 水木清华站 (Sun Feb  1 23:54:04 1998)

前一阵子装cxterm,自己看了点东西,又承蒙Bob,nick,swimmer和斑竹的教诲。
所以写了这个东东。

X Window的中文字体设置.

    要让X Window显示中文,首先要有中文字体.常用的国标中文字体有两种:GB和
cclib.这两种中文字体的编码名(encoding-name)不同,下面会详细介绍.字体文件
的后缀一般是*.pcf,*.snf或*.bdf.象gb16fs.bdf,gb24st.bdf这样的文件就是gb
类的字体文件,其中16和24表示字体的大小,fs就是仿宋体,st就是宋体.而
cclib16.pcf就是cclib类的字体文件.一般gb类的字体很好搞到,cclib类的字体则不
太好找.我是在以下这个www站点搞到的:http://yumj.kek.jp/www/ezwgl-e.html.
    有了中文字体文件,下一步要做的是让X Window能识别这些文件并利用这些文
件正确的显示中文.这要用到两个很有用的命令xmkfontdir和xset.通常,字体文件
都放在一个目录中.例如:/usr/X11/lib/fonts/100dpi.这里面是系统使用的缺省字
体文件(不同的系统可能不同).在这个目录中,不但有字体文件,还有一个叫
fonts.dir的文件.这个fonts.dir是一个索引文件,它含有这个目录下所有字体文件
的信息,X Window就是利用这个文件来检索不同的字体的.为了让X Window正确的使
用中文字体文件,在我们的字体目录下也应建立一个相应的fonts.dir文件.前面所
说的第一个命令xmkfontdir就是用来生成这个文件的.我们以gb16fs.bdf和
gb24st.bdf为例来说明如何使用这个命令.假设我们已经建立了子目录
$HOME/xfonts,并且在这个子目录中已经有了文件gb16fs.bdf和gb24st.bdf.
那么命令mkfontdir $HOME/xfonts将在子目录$HOME/xfonts下建立所需要的
fonts.dir文件.
    例一:
        $ ls $HOME/xfonts
        gb16fs.bdf              gb24st.bdf
        $ mkfontdir $HOME/xfonts
        $ ls $HOME/xfonts
        fonts.dir               gb16ft.bdf              gb24st.bdf
    或在$HOME/xfonts目录下直接键入mkfontdir亦可.
    例二:
        $ pwd
        /u/username/xfonts
        $ ls
        gb16fs.bdf              gb24st.bdf
        $ mkfontdir
        $ ls
        fonts.dir               gb16ft.bdf              gb24st.bdf
    仅仅有了字体文件和fonts.dir是不够的,还要让X Window知道应当在我们建立
的字体目录中搜索所需的中文字体.这就需要用到命令xset.其实xset的功能很多,
我们这里只用到和字体有关的一部分.为了让X Window知道我们刚才建立的目录是
一个字体目录,可以使用命令:
        $ xset fp+ $HOME/xfonts
    这样,$HOME/xfonts就会被追加到所有正在被X Window使用的字体目录的最后,
X Window就会知道该在这里找所需的中文字体了.好了,现在打开Netscape,把
Option->Document Encoding选定为Simplified Chinese.再访问几个中文站点试试.

    下面来讨论几个更深入一些的问题:
    1.建立字体目录
        1.1字体目录属性
        字体目录字体目录以及其中所有的文件都至少应当是同组和其他用户可读
的.字体目录的所有父目录也应是同组和其他用户可读的.否则,xset时会出错而导
致失败(至少在AIX上是这样).
        1.2字体别名(alias)
        在X11R3及以后的版本中,X Window的字体名变的很长也很复杂.其中包括
字体的各种属性,前面所说的编码名也包含在其中.这样一来,在某些需要用到字体
名的地方会很不方便(例如xfd,后面会介绍).为此,X Window提供了一种方法--建立
字体别名.用户可以在字体目录中建立一个名为fonts.alias的文件,把很长很复杂
的X Window字体名映射成用户容易记的简单的字体名。这是一个纯文本文件,可以
用任何一种文本编辑器编辑。例如ed或vi。
        fonts.alias文件通常分为两列。第一列是字体别名,就是用户起的简单的
名字。第二列是字体名。字体名在文件fonts.dir中可以找到。要注意的一点是:如
果字体名中包含空格,字体名一定要用引号(")引起来。否则X Window无法识别(我
就见过一个笨笨的root建的别名文件,没有引号,不顶事的。)。下面是一个
fonts.alias文件的例子。
    例三:      
        $ cat fonts.alias
        hzgb16fs "-isas-fangsong ti-medium-r-normal--16-160-72-72-c-160-g
b2312.1980-0"
        hzgb24st "-isas-song ti-large-r-normal--24-240-72-72-c-240-gb2312
.1980-0"
    2.xset命令中有关字体的选项
        xset命令是用来设置各种X Window属性的。字体目录是X Window的属性之
一,在xset命令里是用选项fp来设置的。
        2.1 xset [+ -]fp[+ -] fontpath
        先介绍xset fp fontpath。这个命令是把fontpath指定的目录设置成
X Window的字体目录,并删除以前的所有设置。也就是说,执行了这条命令以后,
X Window的字体目录只有fontpath这一个目录了。
        X Window的不同类别的字体文件通常放在不同的目录里。例如
/usr/X11/lib/fonts/75dpi存放的是分辨率是75dpi的字体,而
/usr/X11/lib/fonts/100dpi存放的是分辨率是100dpi的字体。这样一来,
X Window可以同时有很多的字体目录。xset +fp fontpath或xset fp+ fontpath
命令就是用来把fontpath加进X Window的字体目录里。前者将fontpath加入到原有
字体目录的最前面,后者正好相反,它将fontpath加入到字体目录的最后面。命令
xset -fp fontpath和xset fp- fontpath会从X Window的字体目录里删除fontpath。
        2.2 xset fp default
        这个命令会把字体目录设置成缺省状态。
        2.3 xset fp rehash
        这个命令强制X Window重新检索所有的字体目录。如果你改动了某个
X Window字体目录的fonts.dir或fonts.alias文件,就可以用这个命令让
X Window知道你所做的修改。
    3.其他和字体有关的X Window命令
        3.1 xfd -fn fontname
        用于显示fontname指定的字体。fontname既可以是字体名也可以是字体别
名。
        3.2 xlsfonts
        列出X Window当前所识别的所有字体名和字体别名。
    4.字体的编码名encoding-name
        前面已经说过,两种中文字体GB和cclib的编码名不同。虽然同为国标字
体,GB的编码名是GB-2312.1980-0而cclib的编码名是GB-2312.1980-1。这两种字
体的编码也是完全不一样的。用xfd将这两种字体显示出来就会看的很清楚。一般
来说,Netscape都是支持GB(编码名为GB-2312.1980-0)的。CXterm有两种,一种支
持GB,另一种支持cclib(编码名为GB-2312.1980-1)。这要看CXterm.ad里的设置而
定。如果用错了字体,Netscape会显示乱码。而CXterm则在该显示汉字的地方显示
空白。为防万一,最好还是两种字体都装上。

--
m4m※ 来源:·BBS 水木清华站 bbs.net.tsinghua.edu.cn·[FROM: 202.200.32.229]m
--

        真正的男人是战士和孩子.

        作为战士他渴望冒险,

        作为孩子他渴求游戏.

※ 来源:.紫 丁 香 bbs.hit.edu.cn.[FROM: robotics.hit.edu]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:4.184毫秒