虽然观感是很个人的问题,但中易宋体的内嵌点阵确实要比微软雅黑来得清晰锐利。不过微软雅黑的意义在于实现了中文字体的ClearType和平滑缩放,这却是中易宋不能比拟的优势。看久了,大概也就习惯了吧。
目前微软雅黑的版本窜到了5.0,但仍有不小改进空间。文字大小参差不齐的情况依然。中文数字“一”在连续出现时会连在一起,如“一一解决”看起来就是个破折号。最难看的是标点符号部分,尤其是左右单、双引号,两对符号形状完全一样,只是略为靠左或靠右。
想在XP中使用Vista的字体,网上流传的方法大多不太完整,要不就显得太为暴力。这里提供一个较为全面的方案,除了尽可能安全外,还解决了如日文和韩文乱码等问题。
首先需要获得Vista的内置字体,简体中文的字体名为微软雅黑,还有繁体中文的微软正黑,日文的Meiryo,韩文的Malgun。这几个字体目前最新的版本都是v5.00,HuangYongTao在他的Blog上有提供下载。
以下是各字体的文件名、文件大小和CRC值,如果已经从其他地方获得了字体文件,可查阅一下自己的是否是最新版本:
Update
v5.0版的韩文字体Malgun在资源管理器中显示的字符偏小,与雅黑和Meiryo配合不佳,不是经常用韩文的人就别装了吧。
网上出现了很多雅黑的修改版本,如碧海潮声的“雅黑宋体”和“极限雅黑”,都宣称解决了若干问题。好不好看大家可以试试,只要不是直接替换宋体的方式,都可以用我这里的脚本来安装,就是字体名需要修改一下。
Windows 7中包含了v6.01版的msyh.ttf和v6.02版的msyhbd.ttf。这个版本解决了姓名连字符“·”显示为方框的问题,降低破折号笔画高度以示与中文数字“一”的区别(但“一一说明”中的“一”还是连着的),似乎也部分解决了在XP中撑大对话框的问题。不过我总觉得这一版字体的颜色变淡了,另外标点符号也没有变化。
v6版雅黑我找到了一个Rayfile下载地址,这是一个安装包,即使系统内已存在雅黑也可以完成替换。如果不放心,也可以用7-Zip打开并解压缩手动安装。我想其他字体在Windows 7中应该也有更新的吧,等找到再说。
文件名 | 尺寸 | CRC |
v6.0X |
msyh.ttf(6.01) | 21,719,980 | 5C83D8E6 |
msyhbd.ttf(6.02) | 14,602,860 | C861592C |
v5.0 |
msyh.ttf | 15,044,440 | 8954581A |
msyhbd.ttf | 14,685,876 | 41CDF7AB |
v5.0 |
msjh.ttf | 14,713,704 | A634C5A2 |
msjhbd.ttf | 14,509,688 | E9DA1497 |
v5.0 |
meiryo.ttc | 7,815,292 | 79FA7E43 |
meiryob.ttc | 8,054,096 | C386FBC6 |
v5.0 |
malgun.ttf | 4,337,104 | 65B587BE |
malgunbd.ttf | 4,513,520 | F1F5ED97 |
将获得的字体放入C:\Windows\Fonts目录即可完成安装。除了微软雅黑外,其余字体并非必须。这里多嘴说一句,虽然微软正黑体中也包含了简体字,但由于该字体是根据台湾教育部标准字形进行制作的,笔画标准会与大陆通行的有所不同。因此并不建议以微软正黑作为日常使用的字体,尤其是不应该给在校学生使用。
然后打开控制面板,显示、外观、效果,将字体边缘平滑设为“清晰”,这是为了打开Windows的ClearType字体描绘功能。确定后在“高级”中将所有能改字体的项目都改为微软雅黑,字体尺寸可维持不变。再在IE菜单上选工具、Internet选项,常规页上选字体,将网页字体设为微软雅黑。
经过如上设置后,系统的大部分内容都会用微软雅黑进行描绘了。如觉得显示效果还不够理想,可在绿色下载站下载ClearType Tuning进行微调。如果链接失效,在搜索引擎里找“字体清晰工具”也能找到下载链接。个人觉得用这个工具将雅黑的黑度增加一些,看起来比较不会累。
接下来的设置就需要修改注册表了,如果这对你来说有点困难的话,可以在本文最后下载我写的修改脚本。
运行注册编辑器,定位到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\GRE_Initialize,将GUIFont.Facename的键值改为微软雅黑。这一键值会影响部分通用GUI元素所使用的字体,例如按钮、记事本等等。
再定位到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontLink\SystemLink,新建一条名为“Microsoft YaHei”的多字符串值,将“gulim.ttc,gulim”和“MSGOTHIC.TTC,MS UI Gothic”以回车分隔写入。这里我懒得bq了,不明白的话参考同项中的Tahoma等字体的写法就知道了。
这一步类似于Linux中常说的字体替换,Gulim为XP附带的韩文字体。微软雅黑中并不包含所有的日文及韩文字符,如缺少了这一步,文件管理器中的日文及韩文文件名就会是方块。gulim.ttc和msgothic.ttc是XP附带的韩文和日文字体,当然也可以替换为Vista的Malgun和Meiryo。
如定位到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontSubstitutes,新建一个名为“宋体”的字符串值,并设置为“Microsoft YaHei”,可使系统在更多地方使用微软雅黑。例如登录界面中的“欢迎使用”四个大字,还有部分直接汉化EXE文件的程序。不过该方法仍然无法使系统全面使用微软雅黑,IE中还会出现宋体与微软雅黑相杂的情况,是否使用请自行选择。
另外还有HKEY_LOCAL_MACHINE\SOFTWARE\Classes\MIME\Database\Codepage下的932、936、949、950子键,这些子键控制了对应代码页下的默认文字字体,FixedWidthFont为等宽字体,ProportionalFont为矢量字体。936为简体中文代码页,可将对应键值改为微软雅黑。932是日文代码页,949是韩文代码页,950是繁体中文代码页。
最后是HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\International\Scripts下的23、24、25、26。这些子键控制了IE中声明了页面语言,但没有指定文字字体的页面用什么字体进行描绘,也就是对应繁体中文、日文、韩文的“默认字体”。实际上Internet选项中进行的修改,就是保存在这里。
以上这些就是我在注册表中找到的所有有关字体的设置。需要注意的是,即使进行了上述修改,也没办法做到使XP系统全面使用微软雅黑。因为只要该字体存在,部分在资源文件中指定使用宋体的程序,仍然不会用微软雅黑进行显示。
如果非要不可也有两个办法可以解决。一则是用字体编辑工具,将微软雅黑的字体名改为“宋体”,并删除系统中原来的simsun.ttc文件。不过这已经超过了本文所想涉及的范围,有兴趣的可以自己查阅相关信息试一下。第二个办法就是直接将simsun.ttc文件删掉。这个办法同样可以使几乎所有的文字用微软雅黑进行显示,不过后遗症是可能有部分文字会显示为方框。如何取舍,可以自己斟酌着办。
为了使用方便,我写了一个自动完成注册表的修改和恢复工作。如已安装了中日韩三地的四个字体文件,直接双击该脚本即可自动完成上述的所有修改工作。如想要恢复系统原始设置,用文本编辑器打开脚本,将bRestore设置为true并再次运行脚本即可。如果只想安装微软雅黑,也可以打开脚本编辑一下参数再运行。
sSC = "Microsoft YaHei"
sSCl = "微软雅黑"
sSCf = "msyh.ttf"
sTC = "Microsoft JhengHei"
sTCl = "微軟正黑體"
sTCf = "msjh.ttf"
sJP = "Meiryo"
sJPf = "meiryo.ttc"
sKR = "Malgun Gothic"
sKRf = "malgun.ttf"
bTC = 1 ' 是否安装了微软正黑字体,如否请将1改为0
bJP = 1 ' Meiryo,日文字体
bKR = 1 ' Malgun Gothic,韩文字体
bRestore = false ' 反安装则改为true
set oSh = wscript.createobject("WScript.Shell")
sub WriteReg()
if bRestore then
if sVal <> "" then
oSh.run "reg add """ + sPath + """ /f /v """ + sKey + """ /t " + sType + " /d """ + sVal + """", 0
else
oSh.run "reg delete """ + sPath + """ /f /v """ + sKey + """", 0
end if
else
oSh.run "reg add """ + sPath + """ /f /v """ + sKey + """ /t " + sType + " /d """ + sNVal + """", 0
end if
end sub
' ========
sPath = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\GRE_Initialize"
sKey = "GUIFont.Facename"
sType = "REG_SZ"
sVal = "宋体"
sNVal = "微软雅黑"
call WriteReg
' ========
sPath = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontSubstitutes"
sKey = "宋体"
sType = "REG_SZ"
sVal = ""
sNVal = "Microsoft YaHei"
call WriteReg
' ========
sPath = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontLink\SystemLink"
sKey = "Microsoft YaHei"
sType = "REG_MULTI_SZ"
sVal = "gulim.ttc,gulim\0MSGOTHIC.TTC,MS UI Gothic\0mingliu.ttc,PMingLiU\0"
sNVal = ""
if bKR = 1 then
sNVal = sNVal & "malgun.ttf,Malgun Gothic\0"
else
sNVal = sNVal & "gulim.ttc,gulim\0"
end if
if bJP = 1 then
sNVal = sNVal & "meiryo.ttc,Meiryo\0"
else
sNVal = sNVal & "MSGOTHIC.TTC,MS UI Gothic\0"
end if
if bTC = 1 then
sNVal = sNVal & "msjh.ttf,Microsoft JhengHei\0"
else
sNVal = sNVal & "mingliu.ttc,PMingLiU\0"
end if
call WriteReg
' ========
sPath = "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\MIME\Database\Codepage\932"
sKey = "FixedWidthFont"
sType = "REG_SZ"
sVal = "MS Gothic"
sNVal = "Meiryo"
if bJP = 1 then call WriteReg
' --------
sKey = "ProportionalFont"
sType = "REG_SZ"
sVal = "MS PGothic"
sNVal = "Meiryo"
if bJP = 1 then call WriteReg
' ========
sPath = "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\MIME\Database\Codepage\936"
sKey = "FixedWidthFont"
sType = "REG_SZ"
sVal = "新宋体"
sNVal = "微软雅黑"
call WriteReg
' --------
sKey = "ProportionalFont"
sType = "REG_SZ"
sVal = "宋体"
sNVal = "微软雅黑"
call WriteReg
' ========
sPath = "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\MIME\Database\Codepage\949"
sKey = "FixedWidthFont"
sType = "REG_SZ"
sVal = "GulimChe"
sNVal = "Malgun Gothic"
if bKR = 1 then call WriteReg
' --------
sKey = "ProportionalFont"
sType = "REG_SZ"
sVal = "Gulim"
sNVal = "Malgun Gothic"
if bKR = 1 then call WriteReg
' ========
sPath = "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\MIME\Database\Codepage\950"
sKey = "FixedWidthFont"
sType = "REG_SZ"
sVal = "MingLiu"
sNVal = "Microsoft JhengHei"
if bTC = 1 then call WriteReg
' --------
sKey = "ProportionalFont"
sType = "REG_SZ"
sVal = "New MingLiu"
sNVal = "Microsoft JhengHei"
if bTC = 1 then call WriteReg
' ========
sPath = "HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\International\Scripts\23"
sKey = "IEFixedFontName"
sType = "REG_SZ"
sVal = "GulimChe"
sNVal = "Malgun Gothic"
if bKR = 1 then call WriteReg
' --------
sKey = "IEPropFontName"
sType = "REG_SZ"
sVal = "Gulim"
sNVal = "Malgun Gothic"
if bKR = 1 then call WriteReg
' ========
sPath = "HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\International\Scripts\24"
sKey = "IEFixedFontName"
sType = "REG_SZ"
sVal = "MS Gothic"
sNVal = "Meiryo"
if bJP = 1 then call WriteReg
' --------
sKey = "IEPropFontName"
sType = "REG_SZ"
sVal = "MS PGothic"
sNVal = "Meiryo"
if bJP = 1 then call WriteReg
' ========
sPath = "HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\International\Scripts\25"
sKey = "IEFixedFontName"
sType = "REG_SZ"
sVal = "MingLiu"
sNVal = "Microsoft JhengHei"
if bTC = 1 then call WriteReg
' --------
sKey = "IEPropFontName"
sType = "REG_SZ"
sVal = "New MingLiu"
sNVal = "Microsoft JhengHei"
if bTC = 1 then call WriteReg
' ========
sPath = "HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\International\Scripts\26"
sKey = "IEFixedFontName"
sType = "REG_SZ"
sVal = "新宋体"
sNVal = "微软雅黑"
call WriteReg
' --------
sKey = "IEPropFontName"
sType = "REG_SZ"
sVal = "宋体"
sNVal = "微软雅黑"
call WriteReg
' ========