在Netbeans中由于使用了Swing进行开发,所以其中界面的字体也是由Java虚拟机进行配置而不是随操作系统的。在安装完Netbeans后默认的字体大小是11px。而在Windows下的宋体最小支持12px。所以字体为11px就已经无法完整显示了。
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"
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的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.
#
# Version
version=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 Regular
serif.plain.alphabetic=Times New Roman
serif.plain.chinese-ms950=MingLiU
serif.plain.hebrew=David
serif.plain.japanese=MS Mincho
serif.plain.korean=Batang
serif.bold.alphabetic=Times New Roman Bold
serif.bold.chinese-ms950=PMingLiU
serif.bold.hebrew=David Bold
serif.bold.japanese=MS Mincho
serif.bold.korean=Batang
serif.italic.alphabetic=Times New Roman Italic
serif.italic.chinese-ms950=PMingLiU
serif.italic.hebrew=David
serif.italic.japanese=MS Mincho
serif.italic.korean=Batang
serif.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=Batang
sansserif.plain.alphabetic=Arial
sansserif.plain.chinese-ms950=MingLiU
sansserif.plain.hebrew=David
sansserif.plain.japanese=MS Gothic
sansserif.plain.korean=Gulim
sansserif.bold.alphabetic=Arial Bold
sansserif.bold.chinese-ms950=PMingLiU
sansserif.bold.hebrew=David Bold
sansserif.bold.japanese=MS Gothic
sansserif.bold.korean=Gulim
sansserif.italic.alphabetic=Arial Italic
sansserif.italic.chinese-ms950=PMingLiU
sansserif.italic.hebrew=David
sansserif.italic.japanese=MS Gothic
sansserif.italic.korean=Gulim
sansserif.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=GulimChe
monospaced.bold.alphabetic=Monaco Bold
monospaced.bold.chinese-ms950=PMingLiU
monospaced.bold.hebrew=David Bold
monospaced.bold.japanese=MS Gothic
monospaced.bold.korean=GulimChe
monospaced.italic.alphabetic=Monaco Italic
monospaced.italic.chinese-ms950=PMingLiU
monospaced.italic.hebrew=David
monospaced.italic.japanese=MS Gothic
monospaced.italic.korean=GulimChe
monospaced.bolditalic.alphabetic=Monaco Bold Italic
monospaced.bolditalic.chinese-ms950=PMingLiU
monospaced.bolditalic.hebrew=David Bold
monospaced.bolditalic.japanese=MS Gothic
monospaced.bolditalic.korean=GulimChe
dialog.plain.alphabetic=Arial
dialog.plain.chinese-ms950=MingLiU
dialog.plain.hebrew=David
dialog.plain.japanese=MS Gothic
dialog.plain.korean=Gulim
dialog.bold.alphabetic=Arial Bold
dialog.bold.chinese-ms950=PMingLiU
dialog.bold.hebrew=David Bold
dialog.bold.japanese=MS Gothic
dialog.bold.korean=Gulim
dialog.italic.alphabetic=Arial Italic
dialog.italic.chinese-ms950=PMingLiU
dialog.italic.hebrew=David
dialog.italic.japanese=MS Gothic
dialog.italic.korean=Gulim
dialog.bolditalic.alphabetic=Arial Bold Italic
dialog.bolditalic.chinese-ms950=PMingLiU
dialog.bolditalic.hebrew=David Bold
dialog.bolditalic.japanese=MS Gothic
dialog.bolditalic.korean=Gulim
dialoginput.plain.alphabetic=Courier New
dialoginput.plain.chinese-ms950=MingLiU
dialoginput.plain.hebrew=David
dialoginput.plain.japanese=MS Gothic
dialoginput.plain.korean=Gulim
dialoginput.bold.alphabetic=Courier New Bold
dialoginput.bold.chinese-ms950=PMingLiU
dialoginput.bold.hebrew=David Bold
dialoginput.bold.japanese=MS Gothic
dialoginput.bold.korean=Gulim
dialoginput.italic.alphabetic=Courier New Italic
dialoginput.italic.chinese-ms950=PMingLiU
dialoginput.italic.hebrew=David
dialoginput.italic.japanese=MS Gothic
dialoginput.italic.korean=Gulim
dialoginput.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,symbol
sequence.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,symbol
sequence.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,symbol
sequence.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,symbol
sequence.allfonts.UTF-8.hi=alphabetic/1252,devanagari,dingbats,symbol
sequence.allfonts.windows-1255=hebrew,alphabetic/1252,dingbats,symbol
sequence.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,symbol
sequence.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,symbol
sequence.allfonts.x-windows-874=alphabetic,thai,dingbats,symbol
sequence.fallback=lucida,chinese-ms950,chinese-hkscs,chinese-ms936,chinese-gb18030,japanese,korean
# Exclusion Ranges
exclusion.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 Names
filename.Arial=ARIAL.TTF
filename.Arial_Bold=ARIALBD.TTF
filename.Arial_Italic=ARIALI.TTF
filename.Arial_Bold_Italic=ARIALBI.TTF
filename.Courier_New=COUR.TTF
filename.Courier_New_Bold=COURBD.TTF
filename.Courier_New_Italic=COURI.TTF
filename.Courier_New_Bold_Italic=COURBI.TTF
filename.Verdana=verdana.ttf
filename.Verdana_Bold=verdanab.ttf
filename.Verdana_Italic=verdanai.ttf
filename.Verdana_Bold_Italic=verdanaz.ttf
filename.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.TTF
filename.SimSun=SIMSUN.TTC
filename.SimSun-18030=SIMSUN18030.TTC
filename.MingLiU=MINGLIU.TTC
filename.PMingLiU=MINGLIU.TTC
filename.MingLiU_HKSCS=hkscsm3u.ttf
filename.David=DAVID.TTF
filename.David_Bold=DAVIDBD.TTF
filename.MS_Mincho=MSMINCHO.TTC
filename.MS_PMincho=MSMINCHO.TTC
filename.MS_Gothic=MSGOTHIC.TTC
filename.MS_PGothic=MSGOTHIC.TTC
filename.Gulim=gulim.TTC
filename.Batang=batang.TTC
filename.GulimChe=gulim.TTC
filename.Lucida_Sans_Regular=LucidaSansRegular.ttf
filename.Mangal=MANGAL.TTF
filename.Symbol=SYMBOL.TTF
filename.Wingdings=WINGDING.TTF
filename.\u5FAE\u8F6F\u96C5\u9ED1=msyh.ttf
filename.\u5FAE\u8F6F\u96C5\u9ED1_Bold=msyhbd.ttf
filename.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等。