歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux綜合 >> Linux資訊 >> 更多Linux

Unix/Linux平台下JDK 1.2 中Swing的中文顯示

KeyWords: JDK1.2, Swing, TrueType Fonts, Chinese Location, ttmkfdir

JDK1.2 Swing采用TrueType 字體作為顯示字體,而目前大多數UNIX操作系統還不支持中文TrueType字體,所以顯示到中文時就變成了小方塊。本文講解如何使得中文在Swing 中正常顯示。

1。中文字體的獲得

中文TrueType字體是容易獲得的,如在Windows操作系統中缺省提供的幾種,或市面上的方正,文鼎等。購買後拷貝至Unix平台上即可。

2。讓Java引用指明的中文字體

在JRE 的fonts.propertie中指明了Java 運行時字體的來源,在Windows 環境下,字體名形如:Courier New,ANSI_CHARSET,而在Unix下,字體名則為:adobe-times-medium-r-normal--*-%d-*-*-*-*-iso8859-1。所以,即便是同樣的字體,在font.properties中的寫法也是不一樣的。Unix下,關於一個TrueType字體文件中包含了幾種字體類型, 是通過字體所在目錄中fonts.dir文件指明的。以下是fonts.dir示例:4SIMSUN.TTF -misc-SimSun-medium-r-normal--0-0-0-0-p-0-ascii-0SIMSUN.TTF -misc-SimSun-medium-r-normal--0-0-0-0-p-0-fcd8859-15SIMSUN.TTF -misc-SimSun-medium-r-normal--0-0-0-0-p-0-iso8859-15SIMSUN.TTF -misc-SimSun-medium-r-normal--0-0-0-0-p-0-iso8859-1

開頭的4指明在這個目錄中有4種字體,都存放於SimSun.TTF(宋體)文件中。關於fonts.dir的生成,在http://WWW.joerg-pommnitz.dE/TrueType/ttmkfdir.tar.gz 提供了一個工具 ttmkfdir, 在字體所在目錄運行即可。這個工具需要perl 5 和 freetype 1.1,Perl 5一般在Unix平台上都有,freetype1.1在FTP://sunsite.unc.edu/pub/Linux/X11/fonts/freetype-1.1.tar.gz 。再舉例幾個常用的字體文件名:

SimYou.ttf -ZHUHAI Stone-YouYuan-medium-r-normal--0-0-0-0-m-0-ascii-0 (幼圓)SimLi.ttf -ZHUHAI Stone-LiSu-medium-r-normal--0-0-0-0-m-0-ascii-0(隸書)SIMKAI.TTF -misc-KaiTi_GB2312-medium-r-normal--0-0-0-0-p-0-ascii-0(楷體)SIMHEI.TTF -misc-SimHei-medium-r-normal--0-0-0-0-p-0-ascii-0 (黑體)SIMFANG.TTF -misc-FangSong_GB2312-medium-r-normal--0-0-0-0-p-0-ascii-0 (仿宋)

接下來修改font.properites文件(如果有相應的中文字體配置文件就更好,替換掉其中非TrueType中文字體,像在HP-UX上就有font.properties.zh_CN,再覆蓋font.properties文件),可以定位其中一種字體名,用上面的中文字體名替換,下面是在HP-UX上修改後的fonts.properties部分示例:

serif.plain.0=-adobe-times-medium-r-normal--*-%d-*-*-*-*-iso8859-1serif.plain.1=-misc-SimSun-medium-r-normal--*-%d-*-*-p-*-iso8859-15serif.plain.2=-adobe-symbol-medium-r-normal--*-%d-*-*-p-*-adobe-fontspecificserif.plain.3=-adobe-symbol-medium-r-normal--*-%d-*-*-p-*-adobe-fontspecific

#serif.italic.0=-agfa-cgtimes-medium-i-normal--*-%d-*-*-p-*-iso8859-1serif.italic.0=-adobe-times-medium-i-normal--*-%d-*-*-*-*-iso8859-1serif.italic.1=-misc-SimSun-medium-r-normal--*-%d-*-*-p-*-iso8859-15serif.italic.2=-adobe-symbol-medium-r-normal--*-%d-*-*-p-*-adobe-fontspecificserif.italic.3=-adobe-symbol-medium-r-normal--*-%d-*-*-p-*-adobe-fontspecific

#serif.bold.0=-agfa-cgtimes-bold-r-normal--*-%d-*-*-p-*-iso8859-1serif.bold.0=-adobe-times-bold-r-normal--*-%d-*-*-*-*-iso8859-1serif.bold.1=-misc-SimSun-medium-r-normal--*-%d-*-*-p-*-iso8859-15serif.bold.2=-adobe-symbol-medium-r-normal--*-%d-*-*-p-*-adobe-fontspecificserif.bold.3=-adobe-symbol-medium-r-normal--*-%d-*-*-p-*-adobe-fontspecific。。。注意字體文件中的-misc-SimSun-medium-r-normal--0-0-0-0-p-0-fcd8859-15在寫入font.properties時被改為上面的-misc-SimSun-medium-r-normal--*-%d-*-*-p-*-iso8859-15,以實現TrueType字體的平滑縮放。




運行Java應用程序時,設置環境變量JAVA_FONTS為中文TrueType字體所在目錄,如:eXPort JAVA_FONTS=/usr/lib/X11/fonts/ttfdir

這樣,Swing 的中文顯示就正常了。

朱葉峰([email protected]) -------------於國信朗訊



Copyright © Linux教程網 All Rights Reserved