Discuz教程网

NetBeans字体设置的终极解决方案,个性化Netbeans的字体

[复制链接]
authicon dly 发表于 2013-3-30 17:50:09 | 显示全部楼层 |阅读模式
本文有两部分组成:
1.NetBeans字体设置的终极解决方案
2.个性化Netbeans的字体
NetBeans字体设置的终极解决方案
        今天看该文档时,突然意识到通过修改JRE的字体配置文件,可以改变所有Swing应用程序的字体显示。
        NetBeans被许多我们中国java开发者指摘的地方就是它的字体难看。细分析一下原因不难找出:netbeans代码编辑器和输出窗口使用monospaced字体来显示,而monospaced代表着等宽字体,应该是显示程序源代码的合理选择。monospaced是种逻辑字体,它在不同语言和操作系统上映射为不同的物理字体。一般英文操作系统将monospaced字体映射为Courier New。这种字体非常美观,适宜于显示源代码,在Eclipse和Microsoft Visual Studio等IDE中是显示源代码的缺省字体,它也是许多技术网站、博客或者论坛显示源代码的缺省字体。
        问题就出在这儿。一般中文操作系统上,monospaced字体是被映射到宋体上的,虽然宋体显示中文非常好看,但它的英文显示非常糟糕。由于monospaced被映射成宋体,所以netbeans在刚装上后没做任何配置之前,其编辑器和输出窗口里的字体都是宋体,其英文显示也就比较难看。
        今天看的这个文档指出JRE的字体映射是可以配置的。简单来说就是在jre/lib下用户可以创建一个fongconfig.properties,配置自定义的字体映射关系。当然不需要从头创建一个字体配置文件,只需拷贝一份字体配置模板文件,然后稍做改动就可以了。具体操作步骤如下:
        1.将JDK_HOME/jre/lib目录下的fontconfig.properties.src复制一份文件fontconfig.properties,并放在该目录下。
        2.编辑文件fontconfig.properties,查找到下面一行:
sequence.monospaced.GBK=chinese-ms936, alphabetic,dingbats,symbol
       可以发现由于中文monospaced字体缺省查找顺序是先使用chinese-ms936,结果造成了英文被宋体来显示。纠正非常简单,只需将chinese-ms936和alphabetic调换顺序就可以了:
sequence.monospaced.GBK=alphabetic,chinese-ms936,dingbats,symbol
        3.保存该文件后启动netbeans,这时就会发现netbeans编辑器和输出窗口的字体都变成了Courier New,很好看。如果你已经改了缺省字体设置,不妨再把它改回到缺省的monospaced,再看看结果是不是如你所愿。
        下面是我在netbeans上做的实验截图:
     注意上面的方法不是只针对netbeans英文版,中文版的netbeans也是这样。对于任何swing应用程序都起作用。下面是我在netbeans 5.5.1中文版安装后的截图:


个性化Netbeans的字体
在Netbeans中由于使用了Swing进行开发,所以其中界面的字体也是由Java虚拟机进行配置而不是随操作系统的。在安装完Netbeans后默认的字体大小是11px。而在Windows下的宋体最小支持12px。所以字体为11px就已经无法完整显示了。

简单的解决办法就是将字体改大一点。详细的方法是打开Netbeans安装目录下的etcetbeans.conf文件。在:
  1. netbeans_default_options="-J-client -J-Xss2m -J-Xms32m -J-XX:PermSize=128m -J-XX:MaxPermSize=200m -J-Dnetbeans.logger.console=true -J-ea -J-Dapple.laf.useScreenMenuBar=true -J-Dsun.java2d.noddraw=true"
复制代码

这行最后引号前添加--fontsize 12。即变为:

  1. netbeans_default_options="-J-client -J-Xss2m -J-Xms32m -J-XX:PermSize=128m -J-XX:MaxPermSize=200m -J-Dnetbeans.logger.console=true -J-ea -J-Dapple.laf.useScreenMenuBar=true -J-Dsun.java2d.noddraw=true --fontsize 12"
复制代码

这个时候重新启动Netbeans就发现自己已经变为正常的大小,不再那么难看了。

当然,追求完美的人当然不会只限于使用Netbeans默认的字体。在Netbeans的Tools->Options->Fonts & Colors 可以对Netbeans的字体进行设置。遗憾的是将编辑器的字体设置为较好看的英文字体时会出现中文显示为乱码的情况。解决这个问题的方式是对Java虚拟机的制定的字体进行修改。

打开$JAVA_HOME/jre/lib/fontconfig.properties这个文件(如果没有这个文件则将$JAVA_HOME/jre/lib/fontconfig.properties.src改名为$JAVA_HOME/jre/lib/fontconfig.properties)。这个文件的大致内容如下。其中需要修改的部分也使用高亮进行了说明。

# @(#)fontconfig.properties 1.5 04/01/28
#
# Copyright 2003 Sun Microsystems, Inc. All rights reserved.
## Versionversion=1# Component Font Mappings#Netbeans编辑器对应的中文字体
allfonts.chinese-ms936=MingLiU
allfonts.chinese-gb18030=SimSun
allfonts.chinese-hkscs=MingLiU_HKSCS
allfonts.devanagari=Mangal
allfonts.dingbats=Wingdings
allfonts.lucida=Lucida Sans Regular
allfonts.symbol=Symbol
allfonts.thai=Lucida Sans Regularserif.plain.alphabetic=Times New Roman
serif.plain.chinese-ms950=MingLiU
serif.plain.hebrew=David
serif.plain.japanese=MS Mincho
serif.plain.korean=Batangserif.bold.alphabetic=Times New Roman Bold
serif.bold.chinese-ms950=PMingLiU
serif.bold.hebrew=David Bold
serif.bold.japanese=MS Mincho
serif.bold.korean=Batangserif.italic.alphabetic=Times New Roman Italic
serif.italic.chinese-ms950=PMingLiU
serif.italic.hebrew=David
serif.italic.japanese=MS Mincho
serif.italic.korean=Batangserif.bolditalic.alphabetic=Times New Roman Bold Italic
serif.bolditalic.chinese-ms950=PMingLiU
serif.bolditalic.hebrew=David Bold
serif.bolditalic.japanese=MS Mincho
serif.bolditalic.korean=Batangsansserif.plain.alphabetic=Arial
sansserif.plain.chinese-ms950=MingLiU
sansserif.plain.hebrew=David
sansserif.plain.japanese=MS Gothic
sansserif.plain.korean=Gulimsansserif.bold.alphabetic=Arial Bold
sansserif.bold.chinese-ms950=PMingLiU
sansserif.bold.hebrew=David Bold
sansserif.bold.japanese=MS Gothic
sansserif.bold.korean=Gulimsansserif.italic.alphabetic=Arial Italic
sansserif.italic.chinese-ms950=PMingLiU
sansserif.italic.hebrew=David
sansserif.italic.japanese=MS Gothic
sansserif.italic.korean=Gulimsansserif.bolditalic.alphabetic=Arial Bold Italic
sansserif.bolditalic.chinese-ms950=PMingLiU
sansserif.bolditalic.hebrew=David Bold
sansserif.bolditalic.japanese=MS Gothic
sansserif.bolditalic.korean=Gulim#在Netbeans中选择字体为monospaced时实际映射的字符是Monaco
monospaced.plain.alphabetic=Monaco
monospaced.plain.chinese-ms950=MingLiU
monospaced.plain.hebrew=David
monospaced.plain.japanese=MS Gothic
monospaced.plain.korean=GulimChemonospaced.bold.alphabetic=Monaco Bold
monospaced.bold.chinese-ms950=PMingLiU
monospaced.bold.hebrew=David Bold
monospaced.bold.japanese=MS Gothic
monospaced.bold.korean=GulimChemonospaced.italic.alphabetic=Monaco Italic
monospaced.italic.chinese-ms950=PMingLiU
monospaced.italic.hebrew=David
monospaced.italic.japanese=MS Gothic
monospaced.italic.korean=GulimChemonospaced.bolditalic.alphabetic=Monaco Bold Italic
monospaced.bolditalic.chinese-ms950=PMingLiU
monospaced.bolditalic.hebrew=David Bold
monospaced.bolditalic.japanese=MS Gothic
monospaced.bolditalic.korean=GulimChedialog.plain.alphabetic=Arial
dialog.plain.chinese-ms950=MingLiU
dialog.plain.hebrew=David
dialog.plain.japanese=MS Gothic
dialog.plain.korean=Gulimdialog.bold.alphabetic=Arial Bold
dialog.bold.chinese-ms950=PMingLiU
dialog.bold.hebrew=David Bold
dialog.bold.japanese=MS Gothic
dialog.bold.korean=Gulimdialog.italic.alphabetic=Arial Italic
dialog.italic.chinese-ms950=PMingLiU
dialog.italic.hebrew=David
dialog.italic.japanese=MS Gothic
dialog.italic.korean=Gulimdialog.bolditalic.alphabetic=Arial Bold Italic
dialog.bolditalic.chinese-ms950=PMingLiU
dialog.bolditalic.hebrew=David Bold
dialog.bolditalic.japanese=MS Gothic
dialog.bolditalic.korean=Gulimdialoginput.plain.alphabetic=Courier New
dialoginput.plain.chinese-ms950=MingLiU
dialoginput.plain.hebrew=David
dialoginput.plain.japanese=MS Gothic
dialoginput.plain.korean=Gulimdialoginput.bold.alphabetic=Courier New Bold
dialoginput.bold.chinese-ms950=PMingLiU
dialoginput.bold.hebrew=David Bold
dialoginput.bold.japanese=MS Gothic
dialoginput.bold.korean=Gulimdialoginput.italic.alphabetic=Courier New Italic
dialoginput.italic.chinese-ms950=PMingLiU
dialoginput.italic.hebrew=David
dialoginput.italic.japanese=MS Gothic
dialoginput.italic.korean=Gulimdialoginput.bolditalic.alphabetic=Courier New Bold Italic
dialoginput.bolditalic.chinese-ms950=PMingLiU
dialoginput.bolditalic.hebrew=David Bold
dialoginput.bolditalic.japanese=MS Gothic
dialoginput.bolditalic.korean=Gulim# Search Sequences
sequence.allfonts=alphabetic/default,dingbats,symbolsequence.serif.GBK=alphabetic,chinese-ms936,dingbats,symbol
sequence.sansserif.GBK=alphabetic,chinese-ms936,dingbats,symbol
#在中文windows xp环境下通过这个定义来查找字体。这里先指定alphabetic即查找字体时会先查找
monospaced.plain.alphabetic、monospaced.bold.alphabetic...的定义。如果没有找到则会找allfonts下的定义。
通过这个定义就是说先查找对应的alphabetic定义,在显示中文时如果alphabetic是英文字体则查找下一个chinese-ms936的定义(这里由于monospaced没有这个定义所有最后匹配的是allfonts.chinese-ms936)。
sequence.monospaced.GBK=alphabetic,chinese-ms936,dingbats,symbol

sequence.dialog.GBK=alphabetic,chinese-ms936,dingbats,symbol
sequence.dialoginput.GBK=alphabetic,chinese-ms936,dingbats,symbol
sequence.serif.GB18030=alphabetic,chinese-gb18030,dingbats,symbol
sequence.sansserif.GB18030=alphabetic,chinese-gb18030,dingbats,symbol
sequence.monospaced.GB18030=chinese-gb18030,alphabetic,dingbats,symbol
sequence.dialog.GB18030=alphabetic,chinese-gb18030,dingbats,symbol
sequence.dialoginput.GB18030=alphabetic,chinese-gb18030,dingbats,symbolsequence.serif.x-windows-950=alphabetic,chinese-ms950,dingbats,symbol
sequence.sansserif.x-windows-950=alphabetic,chinese-ms950,dingbats,symbol
sequence.monospaced.x-windows-950=chinese-ms950,alphabetic,dingbats,symbol
sequence.dialog.x-windows-950=alphabetic,chinese-ms950,dingbats,symbol
sequence.dialoginput.x-windows-950=alphabetic,chinese-ms950,dingbats,symbolsequence.serif.x-MS950-HKSCS=alphabetic,chinese-ms950,chinese-hkscs,dingbats,symbol
sequence.sansserif.x-MS950-HKSCS=alphabetic,chinese-ms950,chinese-hkscs,dingbats,symbol
sequence.monospaced.x-MS950-HKSCS=chinese-ms950,alphabetic,chinese-hkscs,dingbats,symbol
sequence.dialog.x-MS950-HKSCS=alphabetic,chinese-ms950,chinese-hkscs,dingbats,symbol
sequence.dialoginput.x-MS950-HKSCS=alphabetic,chinese-ms950,chinese-hkscs,dingbats,symbolsequence.allfonts.UTF-8.hi=alphabetic/1252,devanagari,dingbats,symbolsequence.allfonts.windows-1255=hebrew,alphabetic/1252,dingbats,symbolsequence.serif.windows-31j=alphabetic,japanese,dingbats,symbol
sequence.sansserif.windows-31j=alphabetic,japanese,dingbats,symbol
sequence.monospaced.windows-31j=japanese,alphabetic,dingbats,symbol
sequence.dialog.windows-31j=alphabetic,japanese,dingbats,symbol
sequence.dialoginput.windows-31j=alphabetic,japanese,dingbats,symbolsequence.serif.x-windows-949=alphabetic,korean,dingbats,symbol
sequence.sansserif.x-windows-949=alphabetic,korean,dingbats,symbol
sequence.monospaced.x-windows-949=korean,alphabetic,dingbats,symbol
sequence.dialog.x-windows-949=alphabetic,korean,dingbats,symbol
sequence.dialoginput.x-windows-949=alphabetic,korean,dingbats,symbolsequence.allfonts.x-windows-874=alphabetic,thai,dingbats,symbolsequence.fallback=lucida,chinese-ms950,chinese-hkscs,chinese-ms936,chinese-gb18030,japanese,korean# Exclusion Rangesexclusion.alphabetic=0700-1e9f,1f00-20ab,20ad-f8ff
exclusion.chinese-gb18030=0390-03d6,2200-22ef,2701-27be
exclusion.hebrew=0041-005a,0060-007a,007f-00ff,20ac-20ac# Monospaced to Proportional width variant mapping
# (Experimental private syntax)
proportional.MS_Gothic=MS PGothic
proportional.MS_Mincho=MS PMincho
proportional.MingLiU=PMingLiU# Font File Namesfilename.Arial=ARIAL.TTF
filename.Arial_Bold=ARIALBD.TTF
filename.Arial_Italic=ARIALI.TTF
filename.Arial_Bold_Italic=ARIALBI.TTFfilename.Courier_New=COUR.TTF
filename.Courier_New_Bold=COURBD.TTF
filename.Courier_New_Italic=COURI.TTF
filename.Courier_New_Bold_Italic=COURBI.TTFfilename.Verdana=verdana.ttf
filename.Verdana_Bold=verdanab.ttf
filename.Verdana_Italic=verdanai.ttf
filename.Verdana_Bold_Italic=verdanaz.ttffilename.Times_New_Roman=TIMES.TTF
filename.Times_New_Roman_Bold=TIMESBD.TTF
filename.Times_New_Roman_Italic=TIMESI.TTF
filename.Times_New_Roman_Bold_Italic=TIMESBI.TTFfilename.SimSun=SIMSUN.TTC
filename.SimSun-18030=SIMSUN18030.TTCfilename.MingLiU=MINGLIU.TTC
filename.PMingLiU=MINGLIU.TTC
filename.MingLiU_HKSCS=hkscsm3u.ttffilename.David=DAVID.TTF
filename.David_Bold=DAVIDBD.TTFfilename.MS_Mincho=MSMINCHO.TTC
filename.MS_PMincho=MSMINCHO.TTC
filename.MS_Gothic=MSGOTHIC.TTC
filename.MS_PGothic=MSGOTHIC.TTCfilename.Gulim=gulim.TTC
filename.Batang=batang.TTC
filename.GulimChe=gulim.TTCfilename.Lucida_Sans_Regular=LucidaSansRegular.ttf
filename.Mangal=MANGAL.TTF
filename.Symbol=SYMBOL.TTF
filename.Wingdings=WINGDING.TTFfilename.\u5FAE\u8F6F\u96C5\u9ED1=msyh.ttf
filename.\u5FAE\u8F6F\u96C5\u9ED1_Bold=msyhbd.ttffilename.Consolas=consola.ttf
filename.Consolas_Bold=consolab.ttf
filename.Consolas_Italic=consolai.ttf
filename.Consolas_Bold_Italic=consolaz.ttf#添加一个字体定义。等号后面的是windows字体目录下的字体文件名。这里定义一个字体后可以在前面进行引用
filename.Monaco=monaco.ttf
filename.Monaco_Bold=monaco.ttf
filename.Monaco_Italic=monaco.ttf
filename.Monaco_Bold_Italic=monaco.ttf
#filename.Segoeui=segoeui.ttf
#filename.Segoeui_Bold=segoeuib.ttf
#filename.Segoeui_Italic=segoeuii.ttf
#filename.Segoeui_Bold_Italic=segoeuiz.ttf


按照上面的定义后,我的Netbeans显示的效果如下面所示。如果你不满意我定义的话,完全可以自己定义。比较好的等宽字体有monaco、verdana、Consolas等。


原文地址:http://www.blogjava.net/boydotnet/archive/2008/09/24/230957.html

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x



上一篇:豆瓣电影采集插件建议
下一篇:1314学习网签到记录贴-2013年3月31日
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1314学习网 ( 浙ICP备10214163号 )

GMT+8, 2025-5-2 10:49

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表