netbeans字体问题的解决
netbeans已经出6.7了,eclipse也出了3.5了两个Java的IDE说实在的都很好用,但是我去发现我在不知不觉中使用netbeans的次数以及时间都比eclipse多了,只是依然没有放弃eclipse而已,可是这个问题依然是从eclipse刚转型过来的我所无法释然的,就是——字体,这是不争的事实,eclipse的字体无论是工具栏的还是编辑界面内的都比netbeans好很多,这些其实也都可以忍受,毕竟我是根据IDE来选择字体的(很庆幸,我有不止一套等跨字体来应对这先问题),但是netbeans无法再编码中使用非英文语系的语言就让我很郁闷了,这些要给客户看的哇
文章来源:树荫之下
通过多方的搜索(其实也没有多多无非就是Google+百度),找到一个合适的方法,其实,这个netbeans的界面是swing写的,而eclipse的界面是SWT写的,根据有的说法SWT是一种原生界面,就是和系统的是统一的,而natbeans的swing则要依赖于Java,于是便有这样一个问题了,Java的字体映射中没有你想要的字体,当然无法正确映射了,所以我们要做的也就在此。
大体可以分为三步
1。注册字体。
2。建立映射关系
3。修改索引顺序
首先,我们打开java的安装目录进入jdk\jre\lib目录找到fontconfig.98.bfc和fontconfig.98.properties.src两个文件,备份之后删除它们,接下来我们在找到fontconfig.properties.src文件,复制一份,将后缀.src这个后缀去掉,用editplus或者其他文本编辑工具打开它,我们可以看到里面的文件内容,我们先来注册字体,找到以下文字:
# Font File Names
根据其格式我们注册字体,我注册的是ProFontWindows,代码如下:
filename.ProFontWindows = ProFontWindows.ttf #对应正常字体 filename.ProFontWindows_Bold = ProFontWindows.ttf #对应粗体字 filename.ProFontWindows_Italic = ProFontWindows.ttf #对应斜体字 filename.ProFontWindows_Bold_Italic = ProFontWindows.ttf #对应粗斜体字
这样字体就注册成功了
建立映射关系,找到fontconfig.properties文件下的
# Component Font Mappings
然后修改以下代码部分:
monospaced.plain.alphabetic=Courier New monospaced.plain.chinese-ms950=MingLiU monospaced.plain.hebrew=David monospaced.plain.japanese=MS Gothic monospaced.plain.korean=GulimChe monospaced.bold.alphabetic=Courier New Bold monospaced.bold.chinese-ms950=PMingLiU monospaced.bold.hebrew=David Bold monospaced.bold.japanese=MS Gothic monospaced.bold.korean=GulimChe monospaced.italic.alphabetic=Courier New Italic monospaced.italic.chinese-ms950=PMingLiU monospaced.italic.hebrew=David monospaced.italic.japanese=MS Gothic monospaced.italic.korean=GulimChe monospaced.bolditalic.alphabetic=Courier New Bold Italic monospaced.bolditalic.chinese-ms950=PMingLiU monospaced.bolditalic.hebrew=David Bold monospaced.bolditalic.japanese=MS Gothic monospaced.bolditalic.korean=GulimChe
修改后的内容如下:
monospaced.plain.alphabetic=ProFontWindows monospaced.plain.chinese-ms950=SimSun monospaced.plain.hebrew=David monospaced.plain.japanese=MS Gothic monospaced.plain.korean=GulimChe monospaced.bold.alphabetic=ProFontWindows Bold monospaced.bold.chinese-ms950=SimSun monospaced.bold.hebrew=David Bold monospaced.bold.japanese=MS Gothic monospaced.bold.korean=GulimChe monospaced.italic.alphabetic=ProFontWindows Italic monospaced.italic.chinese-ms950=SimSun monospaced.italic.hebrew=David monospaced.italic.japanese=MS Gothic monospaced.italic.korean=GulimChe monospaced.bolditalic.alphabetic=ProFontWindows Bold Italic monospaced.bolditalic.chinese-ms950=SimSun monospaced.bolditalic.hebrew=David Bold monospaced.bolditalic.japanese=MS Gothic monospaced.bolditalic.korean=GulimChe
接下来的任务就简单了,找到fontconfig.properties文件下的
# Search Sequences
然后修改以下代码:
sequence.monospaced.GBK=chinese-ms936,alphabetic,dingbats,symbol sequence.monospaced.GB18030=chinese-gb18030,alphabetic,dingbats,symbol
修改为以下内如,如下:
sequence.monospaced.GBK=alphabetic,chinese-ms936,dingbats,symbol sequence.monospaced.x-windows-950=alphabetic,chinese-ms950,dingbats,symbol
这样就会先检索等宽字体的英文部分,然后是中文。
好了,修改任务结束,保存退出。启动netbeans,修改字体为monospaced字体大小根基你的实际情况进行修改。这样在源代码中就可以显示中文字了,但是这样有个缺点就是如果英文部分字体和中文部分字体同字号时,字体大小有所不同的情况,他会根据中文字体的大小来显示每行,这样整体来看就显得有些稀松了,不过好过无法使用中文,或者用宋体。
另外我这里配置完成之后总是出现一些问题,索性我将
# Component Font Mappings
部分全部改成ProfontWindows结果反而正常了=。=!
后记:记得在做这次改变之前看过一篇关于Java下字体映射的文章,当时没有看明白,只是现在记得那篇文章里有一个跟好的办法,字体的映射和我们所注册的字体统一了,就是在netbeans下选择我们所需的字体就可以了,而不是这种错乱的映射方式,可惜好文章一去不会了,已经找不到了,只能这样先凑和了,相信缘分到了,我还可以找到,到时候在改回来就好了。而且现在网上关于这个问题的文章也是相当的多,而且CSDN中有很详细的解说,还有官方的说明,链接忘了留,大家想要的话自己搜索下吧Google是无比的强大。