Cure 发表于 2003-4-20 12:58:12

为 Redhat Linux 添加新字体

/***************************************************************************   
* File:    $HOME/Projects/LinuXP/HowTo_ZhFontsConfig                           
* Title:   为 Redhat Linux 添加新字体                                          
* Author:Cure <[email protected]>                                          
* Date:    03-04-19 16:00                                                      
* -------------------------------------------------------------------------   
* Description:                                                               
*      记录如何为 Redhat Linux 本身以及 JBuider, J2SDK, J2SE 添加中文         
*      支持.                                                                  
* -------------------------------------------------------------------------   
* Change Logs:                                                               
*03-04-19 18:15 Cure 添加 JRE 小节.                                          
*03-04-19 19:08 Cure JRE 小节变为 Java 小节, 具体谈 JBuilder, J2SDK,         
*                      J2RE 的中文问题.                                       
*03-04-21 19:30 Cure 更正 flashbaby 指出的 gtkrc.zh_CN 的路径错误. 该文件应在 /etc/gtk/gtkrc.zh_CN, 一时手快, 打漏一个文件夹, hh
*                                                                              
***************************************************************************/   
                                                                              
折腾一天, 原本打算简简单单记下来方便自己以后翻查的, 一不小心写了这么长, 于是   
决定拿出来和大家分享, 如果您发现有任何错误, 请一定指出, 感激不尽!

另外, 如果您觉得这篇东西值得和你的朋友分享, 那么请一定在转发时保留上面的文件头, 算是对我码字一天的小小支持吧!

漂亮好看的操作系统始终不是我们的目的. 希望这篇文字能帮助至少一两个朋友从这个 Linux 的中文美化问题里面彻底解脱出来, 而真正投入到利用 Linux 为我们服务, 利用 Linux 进行开发工作的实质性事情当中.

以下内容包括:

1. 为 Redhat 的两个字体子系统添加字体
2. 让 Enlightenment 显示中文
3. Java 的中文问题:

- JBuilder 的中文问题
- J2SDK 的中文问题
- J2RE 的中文问题

                                                                              大家挑自己需要的看就好了.
                                                                              
为 Redhat Linux 添加新字体                     
                  

[注]                                                                           
    以下过程在 Redhat 9.0 上测试通过.                                          
                                                                              
                                                                              
准备要安装的字体, 如: simsun.ttc, tahoma.ttf...                                 
根据发行注记里所言分别为核心 X 字体子系统和 fontconfig 字体子系统添加字体:      

                                                                              为核心 X 字体子系统添加字体                                       
                                                                              
[注]                                                                           
    以下部分应该对 Redhat 9.0 之前的版本也适用, 因为 核心 X 字体子系统存在      
    于迄今为止的版本中.                                                         
                                                                              
"如果你想给你的 Red Hat Linux 9 系统添加新字体,根据使用新字体的字体子系统而   
定                                                                              
,你必须明确所需步骤。对于核心 X 字体子系统,你必须:                           
1. 创建 /usr/share/fonts/local/ 目录(如果它不存在):                        
mkdir /usr/share/fonts/local/"                                                
                                                                              
    - 这一步没问题.                                                            
                                                                              
"如果你必须要创建 /usr/share/fonts/local/,你就必须把它添加到 X 字体服务器的   
路                                                                              
径中:                                                                        
chkfontpath --add /usr/share/fonts/local/"                                    
                                                                              
    - 如果是刚创建的 /usr/share/fonts/local/, 那么执行这一行命令会提示错误      
    因为系统在这个目录里找不到 fonts.dir 文件, 然后就不 add.. 不过没关系,      
    这一步跳过去, 在第三步之后做.                                             
                                                                              
"2. 把新字体文件复制到 /usr/share/fonts/local/ 中"                              
                                                                              
    - 照做.                                                                     
                                                                              
"3. 使用以下命令来更新字体信息:                                                
ttmkfdir -d /usr/share/fonts/local/ -o /usr/share/fonts/local/fonts.scale"      
                                                                              
    - 照做. 然后:                                                               
      1) 把 fonts.scale 拷贝出来一份 fonts.dir.                              
      2) chkfontpath --add /usr/share/fonts/local/                           
                                                                              
"4. 使用以下命令来重新启动 xfs 字体服务器:                                    
service xfs reload"                                                            
                                                                              
    - 这一步我没成功, 因为我发现 redhat 9 里面没有 service 这个命令. 于是      
    用笨办法解决: 退出 X, 再 startx.                                          
                                                                              
以上这些步骤做完之后, 所有 gtk 1.2 的程序里有关字体的部分 (如 xmms 的字体设置   
里) 都多出来我们要的新字体, 像 simsun, tahoma. 这时可以在程序内部直接使用了.   
比如我们让歌曲列表里的中文使用 simsum, 英文使用 tahoma, 可以这样做:            
                                                                              
    1) 先在 xmms 的 Fonts 里勾上选项 "Use fontsets" - 让 xmms 支持双字节的      
    中文字体;                                                                  
    2) 在 播放清单 部分浏览字体, 选择使用 simsum:                              
      -misc-simsun-medium-r-normal-*-*-120-*-*-c-*-koi8-r                     
    (不用拷这个, 选上 simsun 它自己就出来了)                                    
                                                                              
    对于英文字体的要用 tahoma 就这么来, 一点小技巧:                           
                                                                              
    把这段 "-misc-simsun-medium-r-normal-*-*-120-*-*-c-*-koi8-r" ^x 剪切下来,   
    再选字体为 tahoma, 出现这个:                                                
                                                                              
      -microsoft-tahoma-medium-r-normal-*-*-120-*-*-p-*-viscii1.1-1         
                                                                              
    好了, 在后面加个逗号, 把刚才剪切的那段东东 ^v 粘贴在后面成为:               
                                                                              
      -microsoft-tahoma-medium-r-normal-*-*-120-*-*-p-*-viscii1.1-1,\         
    -misc-simsun-medium-r-normal-*-*-120-*-*-c-*-koi8-r                        
                                                                              
    这么一行, 保存一下, 于是歌曲列表就会对中文使用 simsum, 英文使用 tahoma.   
    再把这行拷下面 Main Window 的字体里 (要勾上 "Use X font"), 这时 xmms 主窗   
    口里的字体 (像那条来回滚动的歌曲信息的字体) 也和歌曲列表里的一样了.         
                                                                              
注意, 我刚才说的是程序内部, 就象 xmms 的歌曲列表一样, 而 程序本身, 即 xmms 自   
己的窗口却还是又粗又大的字体, 这时需要改 gtk 的字体设置:                        
                                                                              
    1) 用 root 账号: vi /etc/gtk/gtkrc.zh_CN                                       
    2) 把原来的:                                                               
                                                                              
      fontset = "-adobe-helvetica-medium-r-normal--16-*-*-*-*-*-iso8859-1,\   
            -*-*-medium-r-normal--16-*-*-*-*-*-gb2312.1980-0,*-r-*"            
                                                                              
    改成和我们上面用在 xmms 里的字体一样:                                       
                                                                              
      fontset =                                                            
            "-microsoft-tahoma-medium-r-normal-*-*-120-*-*-p-*-viscii1.1-1,\   
      -misc-simsun-medium-r-normal-*-*-120-*-*-c-*-koi8-r"                  
                                                                              
    3) 保存退出, 关掉 xmms 这些程序, 再重新打开, 效果就出来了! Enjoy!         
                                                                              
                                                                              
为 fontconfig 字体子系统添加字体                                                
                                                                              
[注]                                                                           
    以下除了 "图形化地安装字体" 部分为 Rehat 9.0 独有, 其他应该在之前版本也适   
    用, 大家试试.                                                               
                                                                              
这部分简单多了, 看 redhat 9 发行注记:                                          
                                                                              
"把新字体添加到 fontconfig 字体子系统比较简单明了;只需把新字体复制到         
/usr/share/fonts/ 目录中即可(个体用户可以把新字体复制到 ~/.fonts/ 目录中来修   
改他们的个人字体配置)                                                         
                                                                              
复制了新字体后,使用 fc-cache 来更新字体信息缓存:                              
                                                                              
    fc-cache <directory>                                                      
                                                                              
(这里的 <directory> 应该是 /usr/share/fonts/ 或 ~/.fonts/ 目录。)"            
                                                                              
    - 我是按这个办法把字体拷 ~/.fonts/ 下面做成功的. (不想使用 root 用户, hh)   
                                                                              
"个体用户还可以图形化地安装字体。方法是:在 Nautilus 中浏览 fonts:///,然后把   
新字体文件拖放到那里。"                                                         
                                                                              
    - 而这个办法我失败了, 无论我用普通用户还是 root 用户, 都无法把字体文件      
    拷贝或者 "拖放" 到 Nautilus 的 fonts:/// 文件夹里. 不知道原因, 只好放弃.   
                                                                              
按第一种方式添加成功后, 在 gtk 2 的程序里设置字体的部分都可以自由使用新字体   
比如在控制中心里把应用程序字体都改成 simsum. (另外, 我发现 10 号大小的         
simsun 效果最好, 不使用单色也非常清晰, 可以考虑使用)                           
                                                                              
总的来说, 为 Redhat Linux 添加新字体并没有什么太难太神秘的东西, 我个人做完之   
后                                                                              
觉得并没有想像中那么难, 尤其是 gtk 1.2 程序的字体部分, 不必改别人说过的那么多   
文件,                                                                           
                                                                              
而实际只要添加完字体, 改个 /etc/gtk/gtkrc.zh_CN 就搞定了.                           
                                                                              
                                                                              
让 Enlightenment 显示中文                                                      
                                                                              
                                                                              
同样简单, 在上面的前提下, 找到你当前使用的 E 主题, 如我的是在                  
                                                                              
    ~/.enlightenment/themes/AquaX/                                             
                                                                              
进入这个目录后, 最简单的做法:                                                   
    gedit textclass.cfg                                                         
                                                                              
利用 gedit 的替换功能, 把所有关于字体的字符串, 如:                              
                                                                              
    "-*-helvetica-bold-r-normal-*-*-120-*-*-*-*-*-*"                           
                                                                              
统统替换成和 xmms 一样的:                                                      
                                                                              
    -microsoft-tahoma-medium-r-normal-*-*-120-*-*-p-*-viscii1.1-1,\            
      -misc-simsun-medium-r-normal-*-*-120-*-*-c-*-koi8-r"                  
                                                                              
保存退出, 清除 E 的缓存,Restart E, 搞定.                                    
                                                                              
                                                                              
Java 的中文显示                                                               
                                                                              
                                                                              
1. JBuilder 的中文问题                                                          
                                                                              
    vi /etc/profile                                                            
                                                                              
添加:                                                                           
                                                                              
    JAVA_FONTS=/path/to/your/zhfonts/                                          
    export JAVA_FONTS                                                         
                                                                              
比如要用刚才弄好的 simsum 和 tahoma 字体, 因为我们已经把它们放在:               
/usr/share/fonts/local 里面了, 所以这里就可以填:                              
                                                                              
    JAVA_FONTS=/usr/share/fonts/local                                          
                                                                              
注意, JBuilder 显然用的是 fontconfig 字体子系统, 所以, 要让它认出来            
有哪些字体可以用, fonts.scale 和 fonts.dir 这两个问题无疑是必需的.            
相比较上面核心 X 字体子系统的字体文件夹里, 即我的 ~/.fonts 里面只有            
字体文件和一个叫 "fonts.cache-1" 的文件, 可以对比着理解.                        
                                                                              
能让 JBuilder 打开的程序显示中文, 但 JBuilder 本身中文有问题, 下面:            
修改 JBuilder 自己的字体配置, 比如我的 JBuilder 装在:                           
                                                                              
    ~/Apps/Devs/JBuilder                                                      
                                                                              
那么:                                                                           
    vi ~/Apps/Devs/JBuilder8/jdk1.4/jre/lib/font.properties                     
                                                                              
把这样的东西:                                                                  
                                                                              
serif.0=-b&h -lucidabright-medium-r-normal--*-%d-*-*-p-*-iso8859-1               
serif.1=--standard symbols l-medium-r-normal--*-%d-*-*-p-*-urw-fontspecific   
                                                                              
serif.italic.0=-b&h-lucidabright-medium-i-normal--*-%d-*-*-p-*-iso8859-1      
serif.italic.1=--standard symbols l-medium-r-normal--*-%d-*-*-p-*-urw-fontsp   
ecific                                                                        
                                                                              
统统换成如:                                                                     
                                                                              
serif.0=-microsoft-tahoma-medium-r-normal-*-*-120-*-*-p-*-viscii1.1-1         
serif.1=-misc-simsun-medium-r-normal-*-*-120-*-*-c-*-koi8-r                     
                                                                              
serif.italic.0=-microsoft-tahoma-medium-r-normal-*-*-120-*-*-p-*-viscii1.1-1   
serif.italic.1=-misc-simsun-medium-r-normal-*-*-120-*-*-c-*-koi8-r            
                                                                              
(还是用上面 xmms 一样的字体)                                                   
                                                                              
所有这些 "*.0=.." 都是描述英文该用什么字体                                    
而所有 "*.1=..." 都是描述中文该用什么字体                                       
                                                                              
最后保存退出, JBuilder 里的英文就都是 tahoma, 所有的中文都是 simsun            
自然, 因为已经设置了 JAVA_FONTS , 所以所有 Java 的应用程序都能正常找到         
中文字体并显示.                                                               
                                                                              
最后注意一点, 我自己尝试失败的一件事:                                          
                                                                              
记得我们上面配置核心 X 字体子系统时, 在 ~/.fonts/ 里面放置了给 gtk 1.2         
程序使用的字体文件, 如果这时把 JAVA_FONTS 指向这里, 会出现的现象是:            
                                                                              
JBuilder 里面打开的程序可以显示中文                                             
但是, JBuilder 自己的窗口无法显示中文.                                          
                                                                              
我个人认为和 fontconfig 的 fonts.dir, fonts.scale 以及核心 X 的               
"fonts.cache-1" 有关系, 具体就不懂了.                                          
所以这里可以体验到两个字体子系统的差异.                                       
                                                                              
2. j2sdk 的中文问题:                                                          
                                                                              
上面这样配置之后, 只有在 JBuilder 环境内开发程序时, 才能正常显示中文            
(因为 JBuilder 帮你找字体), 而如果我们回到命令行方式使用 j2sdk 开发,            
这时会发现还是显示不了中文, 让我们由此及彼地推想一下, jbuilder 的 jre         
里把 font.properties 修改完就能显示中文, 同样, j2sdk 下面也有自己的            
jre... 没错! 只要把我们刚才为 JBuilder 修改完的 fonts.properties 拷            
到 $JAVA_HOME/jre/lib 下面, 把它原来的覆盖, 一切 OK!                           
                                                                              
3. j2re 的中文问题:                                                             
                                                                              
还没想到测试方法, 回头再说...估计也一样, j2re 下面的 lib 里一样有               
font.properties, 所以, 应该可以再次重用 JBuilder 的 fonts.properties.         
总之呢, 这一切都基于你最初要把字体添加正确, 其它都好办了, 拷文件而已.

cnhnln 发表于 2003-4-20 14:14:45

为核心 X 字体子系统添加字体
1.手动在/etc/X11/fs/config里自己添加“/usr/share/fonts/local”行(就不用执行chkfontpath --add /usr/share/fonts/local/)
4.RH9有这个命令。如果不行的话“/etc/init.d/xfs reload”
为 fontconfig 字体子系统添加字体
我的要用 fc-cache -f <directory> 才行

另外多谢楼主

7299 发表于 2003-4-20 19:03:16

好!还有吗?继续继续,保存!!!

flashbaby 发表于 2003-4-21 18:39:06

为什么在/etc目录下我找不到gtkrc.zh_CN文件.
而且我的英文很不好看,你们的是怎么样?

Cure 发表于 2003-4-21 19:19:47

为什么在/etc目录下我找不到gtkrc.zh_CN文件.
而且我的英文很不好看,你们的是怎么样?

Sorry! 你中奖了! 我确实写错了, 应该是:

/etc/gtk/gtkrc.zh_CN

非常非常抱歉! 马上改正!

Cure 发表于 2003-4-21 19:40:44

为核心 X 字体子系统添加字体
1.手动在/etc/X11/fs/config里自己添加“/usr/share/fonts/local”行(就不用执行chkfontpath --add /usr/share/fonts/local/)
4.RH9有这个命令。如果不行的话“/etc/init.d/xfs reload”
为 fontconfig 字体子系统添加字体
我的要用 fc-cache -f <directory> 才行

另外多谢楼主

呵呵, 回头我再自己添几个字体试试:)
这两个命令的 man page 还没来得及看
有心得再交流:)

flashbaby 发表于 2003-4-21 22:46:26

你们能把发张用这个方法后的图片吗?
我的英文字体很虚,有什么办法解决吗?

狂客 发表于 2003-4-22 00:35:51

我还是想要了解那Cure的桌面的快捷启动栏是怎么修改的!

Cure 发表于 2003-4-22 12:42:54

我还是想要了解那Cure的桌面的快捷启动栏是怎么修改的!

gnome-panel 来的.

可以vi .Xclients-default

里面添加一行

exec /usr/bin/gnome-panel &

注意要加在

exec /usr/bin/enlightenment

之前 (如果你用 E 的话)

而用 gnome 则不必做这些了, gnome 一启动下面哪个条就是这东西
点右键看看, 可以新建很多种类型的 panel

我的属于角落 panel.

cathayan 发表于 2003-4-23 00:00:51

真是精品啊。

狂客 发表于 2003-4-23 21:12:01

我还是想要了解那Cure的桌面的快捷启动栏是怎么修改的!

gnome-panel 来的.

可以vi .Xclients-default


Sorry, I can't find that file?
Where is it?
My OS is Mandrake.

hgty7890 发表于 2003-4-26 01:44:26

:roll:
我觉得不需要这么麻烦!!!
ttfmanager不是很好用吗!!!!
再加xtt模块就完美无缺了!!!!

savegod 发表于 2003-5-6 11:35:48

为什么 我按照楼主的指点修改后,JB8里的font family还是那几个字体???

savegod 发表于 2003-5-6 14:09:16

解决了,修改了font.properties.zh文件。。。 :P:idea::shock::?:-):-D8)

有高人指点也要自己实践才行呀~~~~ :mrgreen:

lee20801 发表于 2003-5-6 20:36:16

RedHat 9.0中当然有service命令,在/usr/sbin中,如果你不以root登录,这个路径不会加到$PATH中。见/etc/profile文件。
另外,所有的service程序可以直接带参数执行,所以你也可以在/etc/services下执行xfs reload重新调入。
如:
<service name> start
<service name> stop
等等用法。
页: [1] 2
查看完整版本: 为 Redhat Linux 添加新字体