一直使用Eclipse,这次为了使用可视化的J2ME开发界面,终于转入NetBeans的使用。下载NetBeans6.0.1,前前后后安装三次,总结出如下一些经验,作为备忘。
1.IDE界面的语言设置
NetBeans安装时会默认将界面语言设置为中文,但界面有些地方的翻译实在让人哭笑不得,所以还不如使用英文版来的痛快,找遍所有选项都没有发现设置语言的地方,放狗搜过之后得到如下方法。
找到NetBeans/etc/netbeans.conf,将netbeans_default_options属性后面添加如下两项:
-J-Duser.language=zh -J-Duser.country=US
即改为:netbeans_default_options="-J-client -J-Xverify:none -J-Xss2m -J-Xms32m -J-XX:PermSize=32m -J-XX:MaxPermSize=200m -J-Dapple.laf.useScreenMenuBar=true -J-Dsun.java2d.noddraw=true -J-Duser.language=zh -J-Duser.country=US"
说明:后面的几个参数-J-Duser.language=zh -J-Duser.country=US是调用java的本身系统属性,设置语言为中文,国家为美国。这点很重要!
国家是美国使netbeans的界面为英文,而语言为中文使netbeans可以支持中文,如果只需要英文则可以把language设为en,不过在调用file browser的时候会发现左边一系列windows特性的中文按钮都回变成乱码。
2.界面字体的设置
安装完之后初次运行,将会发现界面的字体奇丑无比,简直无法忍受!所以立刻再次放狗寻找设置字体的方法。主要有以下一些方法
a.更改jdk为1.6.0_10以上
具体是u10还是其他不知道,反正新一点不会错。因为在这个版本之后,jdk对windows的ClearType有了较好的支持,所以如果要在界面上的字体看起来更清晰一些,ClearType是少不了的。
首先是安装jdk,然后设置ClearType,再安装NetBeans(如果升级jdk之前已经安装了,可以在配置文件中修改)。
b.更改字体大小
字体的大小更改比较简单,NetBeans/etc/netbeans.conf中,将netbeans_default_options属性后面添加“ --fontsize 12”即可。据说使用12号字体效果最佳。
本人只使用了以上设置,再次运行NetBeans的时候,字体的效果已经非常不错了,对于要求不高的我来说,后面的步骤不到万不得已应该是不会尝试了,以下列出仅供备份之用。
----------------------------------------------------------------------------------------------------------------------------------------------------
无敌分割线
----------------------------------------------------------------------------------------------------------------------------------------------------
3.更换字体设置
通过上面对字体配置文件的简单了解,现在我们可以进行自定义修改与美化了。
首先,你要用到的字体可能在字体配置文件中没有指定,我们必须自己指定要用到的物理字体(physical font),并映射为不同操作系统平台下的表示(PlatformFontName)。
例如,我们想选择微软雅黑字体(msyh.ttf)和Courser字体,这里假定你已经在操作系统上安装了这些字体。
Linux(Ubuntu7.04)下,我们在/etc/java-6-sun/fontconfig.properties(Ubuntu7.04通过 apt-get安装的jdk,手动安装jdk的话,字体配置文件在Javahome/jre/lib目录下,把 fontconfig.properties.src文件改名为fontconfig.properties)文件的# Font File Names 段添加:
filename.-microsoft-microsoft_yahei-medium-r-normal--*-%d-*-*-p-*-gb18030.2000-0=/usr/share/fonts/yahei/msyh.ttf
说明:filename为固定的,后面跟一个点(.),紧接着是微软雅黑字体的物理名字(不包括引号)“-microsoft- microsoft_yahei-medium-r-normal--*-%d-*-*-p-*-gb18030.2000-0”,这个名字在 fonts.dir文件中是这样表示的: “-microsoft-microsoft yahei-medium-r-normal--0-0-0-0-p-0-gb18030.2000-0”,差别就是需要用_替换名字中的空格,并且把- -0-0-0-0-p-0-改为--*-%d-*-*-p-*-,其中%d用来表示字体大小,运行时会自动填充这个值。medium-r-normal的 r表示正常样式的字体(msyh.ttf只包含这个样式)。等号右边是msyh.ttf文件的绝对路径。
接着,我们就可以在字体配置文件中使用这个名字了。
在# Component Font Mappings 段中,将包含chinese的中文字体都改为雅黑的名字,如下:
allfonts.chinese-gb18030=-microsoft-microsoft yahei-medium-r-normal--*-%d-*-*-p-*-gb18030.2000-0
allfonts.chinese-gb18030.motif=-microsoft-microsoft yahei-medium-r-normal--*-%d-*-*-p-*-gb18030.2000-0
allfonts.chinese-big5=-microsoft-microsoft yahei-medium-r-normal--*-%d-*-*-p-*-gb18030.2000-0
allfonts.chinese-big5.motif=-microsoft-microsoft yahei-medium-r-normal--*-%d-*-*-p-*-gb18030.2000-0
并且将程序中用到的逻辑字体的中文字符子集映射为雅黑,如下(这里使用monospaced):
monospaced.plain.chinese-gb18030=-microsoft-microsoft yahei-medium-r-normal--*-%d-*-*-p-*-gb18030.2000-0
monospaced.plain.chinese-gb18030.motif=-microsoft-microsoft yahei-medium-r-normal--*-%d-*-*-p-*-gb18030.2000-0
monospaced.bold.chinese-gb18030=-microsoft-microsoft yahei-medium-r-normal--*-%d-*-*-p-*-gb18030.2000-0
monospaced.bold.chinese-gb18030.motif=-microsoft-microsoft yahei-medium-r-normal--*-%d-*-*-p-*-gb18030.2000-0
monospaced.italic.chinese-gb18030=-microsoft-microsoft yahei-medium-r-normal--*-%d-*-*-p-*-gb18030.2000-0
monospaced.italic.chinese-gb18030.motif=-microsoft-microsoft yahei-medium-r-normal--*-%d-*-*-p-*-gb18030.2000-0
monospaced.bolditalic.chinese-gb18030=-microsoft-microsoft yahei-medium-r-normal--*-%d-*-*-p-*-gb18030.2000-0
monospaced.bolditalic.chinese-gb18030.motif=-microsoft-microsoft yahei-medium-r-normal--*-%d-*-*-p-*-gb18030.2000-0
至此,添加给Java应用程序添加雅黑字体已经完成,打开Netbeans看看,中文版的Netbeans的启动界面的中文,以及IDE里面的中文字体全部变成了雅黑。但是,英文字体还不是想要的,默认是Monospaced逻辑字体,它的英文字体映射到一个不知道叫什么的字体上了。尤其在源代码中,如果选择Courser 10 Pitch字体,代码中的中文将无法显示,用默认Monospaced字体来显示英文又觉得不好看。下面,我们将Monospaced逻辑字体的英文映射成Courser 10 Pitch。
Ubuntu中,Courser 10 Pitch字体的物理文件位置在/usr/share/fonts/X11/Type1/目录下的c0419bt_.pfb(正常)、 c0582bt_.pfb(粗体)、c0583bt_.pfb(斜体)、c0611bt_.pfb(粗体+斜体)。我们在# Font File Names 段中添加这几个文件的映射:
filename.-bitstream-courier_10_pitch-medium-r-normal--*-%d-*-*-m-*-iso8859-1=/usr/share/fonts/X11/Type1/c0419bt_.pfb
filename.-bitstream-courier_10_pitch-medium-i-normal--*-%d-*-*-m-*-iso8859-1=/usr/share/fonts/X11/Type1/c0582bt_.pfb
filename.-bitstream-courier_10_pitch-bold-r-normal--*-%d-*-*-m-*-iso8859-1=/usr/share/fonts/X11/Type1/c0583bt_.pfb
filename.-bitstream-courier_10_pitch-bold-i-normal--*-%d-*-*-m-*-iso8859-1=/usr/share/fonts/X11/Type1/c0611bt_.pfb
说明一下,medium-r为正常样式,medium-i为斜体样式,bold-r为粗体样式,bold-i为粗体+斜体样式。
然后在# Component Font Mappings 段中,将monospaced4种样式字体的latin-1字符集改为:
monospaced.plain.latin-1=-bitstream-courier 10 pitch-medium-r-normal--*-%d-*-*-m-*-iso8859-1
monospaced.plain.latin-1.motif=-bitstream-courier 10 pitch-medium-r-normal--*-%d-*-*-m-*-iso8859-1
monospaced.bold.latin-1=-bitstream-courier 10 pitch-bold-r-normal--*-%d-*-*-m-*-iso8859-1
monospaced.bold.latin-1.motif=-bitstream-courier 10 pitch-bold-r-normal--*-%d-*-*-m-*-iso8859-1
monospaced.italic.latin-1=-bitstream-courier 10 pitch-medium-i-normal--*-%d-*-*-m-*-iso8859-1
monospaced.italic.latin-1.motif=-bitstream-courier 10 pitch-medium-i-normal--*-%d-*-*-m-*-iso8859-1
monospaced.bolditalic.latin-1=-bitstream-courier 10 pitch-bold-i-normal--*-%d-*-*-m-*-iso8859-1
monospaced.bolditalic.latin-1.motif=-bitstream-courier 10 pitch-bold-i-normal--*-%d-*-*-m-*-iso8859-1
好了,保存文件,重新打开Netbeans,现在你可以将源代码的字体设置为Monospaced,代码中的英文字体就是Courier 10 Pitch,而中文为雅黑。(Netbeans字体设置在"工具"->"选项"->"字体和颜色"->"语法"下,默认情况下, Java还是会采用其他的英文字体,可以全部手动设为Monospaced)
WindowsXP下会简单一点。我们不必自己重新写一个字体配置文件,将Javahome/jre/lib/ fontconfig.properties.src文件(Windows)改名为fontconfig.properties,打开。假设雅黑字体已经安装在了C:/Windows/Fonts/文件夹中,我们在fontconfig.properties文件的# Font File Names 段中添加雅黑字体的映射:
filename./u5FAE/u8F6F/u96C5/u9ED1=msyh.ttf
filename./u5FAE/u8F6F/u96C5/u9ED1_Bold=msyhbd.ttf
然后在# Component Font Mappings 段的allfonts的中文子集的字体改为雅黑,如下:
allfonts.chinese-ms936=/u5FAE/u8F6F/u96C5/u9ED1
allfonts.chinese-gb18030=/u5FAE/u8F6F/u96C5/u9ED1
其中,ms936就是GBK字符集,ms950实际上就是Big5字符集,繁体的,也可以改用雅黑。
你可以看到,Windows底下五种逻辑字体默认的简体中文字体的映射都采用allfonts的设置,所以其他地方都可以不用设置了。
而对于英文,monospaced默认就是映射为Courier New字体,但为什么在Java程序里(比如Netbeans)确不能显示呢?
找到sequence.monospaced.GBK=sequence.monospaced.GBK=chinese-ms936,alphabetic,dingbats,symbol
可以看出对于中文字体的搜索顺序是先搜chinese-ms936,而chinese-ms936是用allfonts的雅黑来显示英文,所以不好看,因此你只要简单将 chinese-ms936和alphabetic这两个交换一下变成:
sequence.monospaced.GBK=alphabetic,chinese-ms936,dingbats,symbol
保存之后,重启你的Netbeans,这时编辑器里的英文字体就都编程Courier New了,包括Output窗口的字体。
这种方法修改和美化都分别在WindowsXP和Ubuntu7.04,JDK5/6下测试通过,不过能不能解决Java乱码我是还没测试,因为我电脑上 Java乱码问题早就解决了,懒得再去弄,有兴趣的,可以帮忙测试一下。
到这里,大家应该对Java字体配置有了一定的了解吧,现在可以自己动手把Java Swing程序的字体改成自己喜欢的了:)。