WindowsXP下会简单一点。我们不必自己重新写一个字体配置文件,将Javahome\jre\lib\ fontconfig.properties.src文件(Windows)改名为fontconfig.properties,打开。假设雅黑字体已经安装在了C:\Windows\Fonts\文件夹中,我们在fontconfig.properties文件的# Font File Names 段中添加雅黑字体的映射:
filename.\微\软\雅\黑=msyh.ttf
filename.\微\软\雅\黑_Bold=msyhbd.ttf
然后在# Component Font Mappings 段的allfonts的中文子集的字体改为雅黑,如下:
allfonts.chinese-ms936=\微\软\雅\黑
allfonts.chinese-gb18030=\微\软\雅\黑
其中,ms936就是GBK字符集,ms950实际上就是Big5字符集,繁体的,也可以改用雅黑。
你可以看到,Windows底下五种逻辑字体默认的简体中文字体的映射都采用allfonts的设置,所以其他地方都可以不用设置了。
而对于英文,monospaced默认就是映射为Courier New字体,但为什么在Java程序里(比如Netbeans)确不能显示呢?
找到seqnce.monospaced.GBK=seqnce.monospaced.GBK=chinese-ms936,alphabetic,dingbats,symbol
可以看出对于中文字体的搜索顺序是先搜chinese-ms936,而chinese-ms936是用allfonts的雅黑来显示英文,所以不好看,因此你只要简单将 chinese-ms936和alphabetic这两个交换一下变成:
seqnce.monospaced.GBK=alphabetic,chinese-ms936,dingbats,symbol
保存之后,重启你的Netbeans,这时编辑器里的英文字体就都编程Courier New了,包括Output窗口的字体。
这种方法修改和美化都分别在WindowsXP和 unt.04,JDK5/6下测试通过,不过能不能解决Java乱码我是还没测试,因为我电脑上 Java乱码问题早就解决了,懒得再去弄,有兴趣的,可以帮忙测试一下。
到这里,大家应该对Java字体配置有了一定的了解吧,现在可以自己动手把Java Swing程序的字体改成自己喜欢的了:)。