程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA編程入門知識 >> Redhat9下的java中文問題解決

Redhat9下的java中文問題解決

編輯:JAVA編程入門知識

  漂亮好看的操作系統始終不是我們的目的. 希望這篇文字能幫助至少一兩個朋友從這個 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/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

  (這裡的 應該是 /usr/share/fonts/ 或 ~/.fonts/ 目錄。)"

  - 我是按這個辦法把字體拷 ~/.fonts/ 下面做成功的. (不想使用 root 用戶, hh)

  "個體用戶還可以圖形化地安裝字體。方法是:在 Nautilus 中浏覽 fonts:///,然後把
  新字體文件拖放到那裡。"

  - 而這個辦法我失敗了, 無論我用普通用戶還是 root 用戶, 都無法把字體文件
  拷貝或者 "拖放" 到 Nautilus 的 fonts:/// 文件夾裡. 不知道原因, 只好放棄.

  按第一種方式添加成功後, 在 gtk 2 的程序裡設置字體的部分都可以自由使用新字體
  比如在控制中心裡把應用程序字體都改成 simsum. (另外, 我發現 10 號大小的
  simsun 效果最好, 不使用單色也非常清晰, 可以考慮使用)

  總的來說, 為 Redhat Linux 添加新字體並沒有什麼太難太神秘的東西, 我個人做完之
  後
  覺得並沒有想像中那麼難, 尤其是 gtk 1.2 程序的字體部分, 不必改別人說過的那麼多
  文件,

  而實際只要添加完字體, 改個 /etc/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.
  總之呢, 這一切都基於你最初要把字體添加正確, 其它都好辦了, 拷文件而已.´

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved