在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等。