让Windows Vista字体查看器显示中文字符预览

总的来说 , Vista 的字体查看器和 XP 的并没有太大区别 , 只是将头部的字体信息部分显示方式做了一点修改 。但 Vista 字体查看器的本地化工作明显没有做够 , 居然无法显示中文字符的预览 , 无论什么语言的字体都会显示出 "The quick brown fox jumps over the lazy dog. 1234567890" 这一句 , 而且还有一些中文字体无法显示出其中文名称 。如果平时不和这些字体打交到倒也没什么 , 但对于有这部分需求的人总不能找到字体后都先安装到系统中再用其它软件查看效果吧 。今天正巧需要找几个字体 , 这个 Bug 可把我惹毛了 , 研究了一下 。还真的有解决办法 。

首先我想到用 XP 中的 fontview.exe 文件替换掉 Vista 的 , 成功 。但文件毕竟是 XP 的 , 不知道会不会引发其它问题 。于是用 Restorator 2007 打开 XP 的 fontview.exe , 发现有一个“信息表”资源 , 一堆16进制编码 , 不过从右侧的预览可以看出这部分的确包含字体预览窗格中的文字 。再打开 Vista 的文件 , 没有“信息表”资源 , 想必是在它的 mui 中 , 用 XP 的“信息表”替换掉 Vista 的 。随便找一个字体打开 , 没有出错 , 不过文字显示位置全部错乱 , 比如窗口左上角的“打印”变成了我们苦苦寻找的“Windows 中文字型范例 1234567890” , 看来对应关系不太一样 , 于是导出 Vista 的“信息表” , 使用16进制编辑软件打开想手动修改 , 不过软件貌似不支持将字符替换为中文 , 于是又搜中文转16进制码的东西 。

自认为修改完成后想要替换回 mui 文件时 , 手一抖将 mui 文件拖拽到了 ResHacker 的图标上 , 不看不知道 , 一看...原来 ResHacker 可以直接对“信息表”资源进行修改(ResHacker 称之为“消息表”) , 晕...费了我半天劲...于是直接修改完毕 , 顺便还汉化了2个微软没有翻译的地方 。保存 , 试验成功 。这样以后就可以直接查看该字体中文字符的样式了 , 不过某些字体无法显示中文名称的问题还是没有解决(如果你认为这一点很重要那么就使用 XP 的 fontview.exe 吧) 。

下面是对比图 , 上为 Vista 默认状态 , 下为修改 mui 后的效果 。

    推荐阅读