刚刚将办公电脑从 XP 切换到 Win7,我发现了一些奇怪的事情。
系统字体(例如“Courier”、“Terminal”和“System”)中缺少某些“未定义”的字形(即“字符映射表”中的“字体”下拉菜单中没有图标的字形)。
字符代码 0x81、0x8D、0x8F、0x90 和 0x9D 在 XP 版本的这些字体中有一个小方块,但在 Win7 中它们是空的(零宽度)。
您可以在记事本中“输入”这些字符,方法是按住左侧的 [Alt] 键,在数字键盘上输入它们的四位十进制值(分别为 0129、0141、0143、0144 和 0157),然后释放 [Alt] 键。在 XP 中,您将得到一个空方块,在 Win7 中,您将得到一个零宽度字符 - 什么都不显示,但使用箭头移动光标会显示那里有“东西”......
当然,如果这是一个 bug,那么肯定有人会注意到它。为什么它们消失了?
我之所以注意到这一点,是因为我经常为法语读者编写批处理文件 (.bat),为了简化重音字符输入(和方框绘制字符),我创建了一个包含 DOS 字符和等效 Windows 字符的文件。缺失的字形对应于 DOS 字符 ü、ì、Å、É 和 ¥。
答案1
如果它们没有字形,那么我认为它们的显示是“未定义的”,这意味着您不能依赖它们相同。Windows 7 可能已经更改了字体渲染以更好地支持其他零宽度字符 - 我怀疑除了进行更改的 Microsoft 内部团队之外,没有人真正知道。
我承认真正的 DOS 只是略微领先于我的时代,但所有当前字体(包括 Courier 和 Terminal)都将描述的字形 ü、ì、Å、É 和 ¥ 映射到 0xDC、0xEC、0xC5、0xC9 和 0xA5,包括在 cmd.exe(不是真正的 DOS)中显示时。因此,我推测我遗漏了一些问题,比如你到底在做什么以及在哪里使用了什么字体。(不过我确实看到标有“系统”的字体在你描述的位置有字形。也许可以将 CMD.exe 窗口的字体更改为具有适当字形支持的字体?)