|
发表于 2009-7-20 13:55:30
|
显示全部楼层
Ubuntu中文 论坛 :: 阅读主题 - [原创]Java5/6中的字体自定义设置与美化(Linux/Windows)
http: //blog.csdn.net/oldjavaman/archive/2005/05/27/382110.aspx
首先,你要用到的字体可能在字体配置文件中没有指定,我们必须自己指定要用到的物理字体(physical font),并映射为不同操作系统平台下的表示(PlatformFontName)。
<br />
例如,我们想选择微软雅黑字体(msyh.ttf)和Courser字体,这里假定你已经在操作系统上安装了这些字体。
<br />
Linux (Ubuntu7.04)下,我们在/etc/java-6-sun/fontconfig.properties(Ubuntu7.04通过 apt-get安装的jdk,手动安装jdk的话,字体配置文件在Javahome/jre/lib目录下,把 fontconfig.properties.src文件改名为fontconfig.properties)文件的# Font File Names 段添加:
<br />
filename.-microsoft-microsoft_yahei-medium-r-normal--*-%d-*-*-p-*-gb18030.2000-0=/usr/share/fonts/yahei/msyh.ttf
<br />
说明:filename为固定的,后面跟一个点(.),紧接着是微软雅黑字体的物理名字(不包括引号)“-microsoft- microsoft_yahei-medium-r-normal--*-%d-*-*-p-*-gb18030.2000-0”,这个名字在 fonts.dir文件中是这样表示的: “-microsoft-microsoft yahei-medium-r-normal--0-0-0-0-p-0-gb18030.2000-0”,差别就是需要用_替换名字中的空格,并且把- -0-0-0-0-p-0-改为--*-%d-*-*-p-*-,其中%d用来表示字体大小,运行时会自动填充这个值。medium-r-normal的 r表示正常样式的字体(msyh.ttf只包含这个样式)。等号右边是msyh.ttf文件的绝对路径。
<br />
接着,我们就可以在字体配置文件中使用这个名字了。
<br />
在# Component Font Mappings 段中,将包含chinese的中文字体都改为雅黑的名字,如下:
<br />
allfonts.chinese-gb18030=-microsoft-microsoft yahei-medium-r-normal--*-%d-*-*-p-*-gb18030.2000-0
<br />
allfonts.chinese-gb18030.motif=-microsoft-microsoft yahei-medium-r-normal--*-%d-*-*-p-*-gb18030.2000-0
<br />
allfonts.chinese-big5=-microsoft-microsoft yahei-medium-r-normal--*-%d-*-*-p-*-gb18030.2000-0
<br />
allfonts.chinese-big5.motif=-microsoft-microsoft yahei-medium-r-normal--*-%d-*-*-p-*-gb18030.2000-0
<br />
并且将程序中用到的逻辑字体的中文字符子集映射为雅黑,如下(这里使用monospaced):
<br />
monospaced.plain.chinese-gb18030=-microsoft-microsoft yahei-medium-r-normal--*-%d-*-*-p-*-gb18030.2000-0
<br />
monospaced.plain.chinese-gb18030.motif=-microsoft-microsoft yahei-medium-r-normal--*-%d-*-*-p-*-gb18030.2000-0
<br />
<br />
monospaced.bold.chinese-gb18030=-microsoft-microsoft yahei-medium-r-normal--*-%d-*-*-p-*-gb18030.2000-0
<br />
monospaced.bold.chinese-gb18030.motif=-microsoft-microsoft yahei-medium-r-normal--*-%d-*-*-p-*-gb18030.2000-0
<br />
<br />
monospaced.italic.chinese-gb18030=-microsoft-microsoft yahei-medium-r-normal--*-%d-*-*-p-*-gb18030.2000-0
<br />
monospaced.italic.chinese-gb18030.motif=-microsoft-microsoft yahei-medium-r-normal--*-%d-*-*-p-*-gb18030.2000-0
<br />
<br />
monospaced.bolditalic.chinese-gb18030=-microsoft-microsoft yahei-medium-r-normal--*-%d-*-*-p-*-gb18030.2000-0
<br />
monospaced.bolditalic.chinese-gb18030.motif=-microsoft-microsoft yahei-medium-r-normal--*-%d-*-*-p-*-gb18030.2000-0
<br />
<br />
至此,添加给Java应用程序添加雅黑字体已经完成,打开Netbeans看看,中文版的Netbeans的启动界面的中文,以及IDE里面的中文字体全部变成了雅黑。但是,英文字体还不是想要的,默认是Monospaced逻辑字体,它的英文字体映射到一个不知道叫什么的字体上了。尤其在源代码中,如果选择Courser 10 Pitch字体,代码中的中文将无法显示,用默认Monospaced字体来显示英文又觉得不好看。下面,我们将Monospaced逻辑字体的英文映射成Courser 10 Pitch。
<br />
Ubuntu中,Courser 10 Pitch字体的物理文件位置在/usr/share/fonts/X11/Type1/目录下的c0419bt_.pfb(正常)、 c0582bt_.pfb(粗体)、c0583bt_.pfb(斜体)、c0611bt_.pfb(粗体+斜体)。我们在# Font File Names 段中添加这几个文件的映射:
<br />
filename.-bitstream-courier_10_pitch-medium-r-normal--*-%d-*-*-m-*-iso8859-1=/usr/share/fonts/X11/Type1/c0419bt_.pfb
<br />
filename.-bitstream-courier_10_pitch-medium-i-normal--*-%d-*-*-m-*-iso8859-1=/usr/share/fonts/X11/Type1/c0582bt_.pfb
<br />
filename.-bitstream-courier_10_pitch-bold-r-normal--*-%d-*-*-m-*-iso8859-1=/usr/share/fonts/X11/Type1/c0583bt_.pfb
<br />
filename.-bitstream-courier_10_pitch-bold-i-normal--*-%d-*-*-m-*-iso8859-1=/usr/share/fonts/X11/Type1/c0611bt_.pfb
<br />
说明一下,medium-r为正常样式,medium-i为斜体样式,bold-r为粗体样式,bold-i为粗体+斜体样式。
<br />
然后在# Component Font Mappings 段中,将monospaced4种样式字体的latin-1字符集改为:
<br />
monospaced.plain.latin-1=-bitstream-courier 10 pitch-medium-r-normal--*-%d-*-*-m-*-iso8859-1
<br />
monospaced.plain.latin-1.motif=-bitstream-courier 10 pitch-medium-r-normal--*-%d-*-*-m-*-iso8859-1
<br />
<br />
monospaced.bold.latin-1=-bitstream-courier 10 pitch-bold-r-normal--*-%d-*-*-m-*-iso8859-1
<br />
monospaced.bold.latin-1.motif=-bitstream-courier 10 pitch-bold-r-normal--*-%d-*-*-m-*-iso8859-1
<br />
<br />
monospaced.italic.latin-1=-bitstream-courier 10 pitch-medium-i-normal--*-%d-*-*-m-*-iso8859-1
<br />
monospaced.italic.latin-1.motif=-bitstream-courier 10 pitch-medium-i-normal--*-%d-*-*-m-*-iso8859-1
<br />
<br />
monospaced.bolditalic.latin-1=-bitstream-courier 10 pitch-bold-i-normal--*-%d-*-*-m-*-iso8859-1
<br />
monospaced.bolditalic.latin-1.motif=-bitstream-courier 10 pitch-bold-i-normal--*-%d-*-*-m-*-iso8859-1
<br />
<br />
好了,保存文件,重新打开Netbeans,现在你可以将源代码的字体设置为Monospaced,代码中的英文字体就是Courier 10 Pitch,而中文为雅黑。(Netbeans字体设置在"工具"->"选项"->"字体和颜色"->"语法"下,默认情况下, Java还是会采用其他的英文字体,可以全部手动设为Monospaced)
<br />
<br />
WindowsXP下会简单一点。我们不必自己重新写一个字体配置文件,将Javahome\jre\lib\ fontconfig.properties.src文件(Windows)改名为fontconfig.properties,打开。假设雅黑字体已经安装在了C:\Windows\Fonts\文件夹中,我们在fontconfig.properties文件的# Font File Names 段中添加雅黑字体的映射:
<br />
filename.\u5FAE\u8F6F\u96C5\u9ED1=msyh.ttf
<br />
filename.\u5FAE\u8F6F\u96C5\u9ED1_Bold=msyhbd.ttf
<br />
<br />
然后在# Component Font Mappings 段的allfonts的中文子集的字体改为雅黑,如下:
<br />
allfonts.chinese-ms936=\u5FAE\u8F6F\u96C5\u9ED1
<br />
allfonts.chinese-gb18030=\u5FAE\u8F6F\u96C5\u9ED1
<br />
其中,ms936就是GBK字符集,ms950实际上就是Big5字符集,繁体的,也可以改用雅黑。
<br />
你可以看到,Windows底下五种逻辑字体默认的简体中文字体的映射都采用allfonts的设置,所以其他地方都可以不用设置了。
<br />
而对于英文,monospaced默认就是映射为Courier New字体,但为什么在Java程序里(比如Netbeans)确不能显示呢?
<br />
找到sequence.monospaced.GBK=sequence.monospaced.GBK=chinese-ms936,alphabetic,dingbats,symbol
<br />
可以看出对于中文字体的搜索顺序是先搜chinese-ms936,而chinese-ms936是用allfonts的雅黑来显示英文,所以不好看,因此你只要简单将 chinese-ms936和alphabetic这两个交换一下变成:
<br />
sequence.monospaced.GBK=alphabetic,chinese-ms936,dingbats,symbol
<br />
保存之后,重启你的Netbeans,这时编辑器里的英文字体就都编程Courier New了,包括Output窗口的字体。 |
|