当我运行Mocha时,它尝试分别显示复选标记或 X 来表示测试运行通过或失败。我看过 Mocha 输出的漂亮屏幕截图。但这些屏幕截图都是在 Mac 或 Linux 上拍摄的。在 Windows 的控制台窗口中,这些字符都显示为一个不起眼的空框字符,即经典的“嗯?”字形:
如果我在控制台窗口中突出显示文本并将其复制到剪贴板,我确实会看到实际的 Unicode 字符;我可以将花哨的字符粘贴到 Web 浏览器的文本框中,它们渲染得很好 (✔, ✖)。所以 Unicode 输出可以很好地到达控制台窗口;问题是控制台窗口无法正确显示这些字符。
如何解决此问题,以便 Mocha 的所有输出(包括 ✔ 和 ✖)都能在 Windows 控制台中正确显示?
最佳答案
通过将字符粘贴到 LinqPad 中,我能够确定它们是 'HEAVY CHECK MARK' (U+2714) 和 'HEAVY MULTIPLICATION X' (U+2716) 。看起来 Windows 7 中提供的任何控制台字体(Consolas、Lucida Console 或 Raster Fonts)都不支持这两个字符。事实上,Windows 7 附带的所有字体,只有少数支持这些字符(Meiryo、Meiryo UI、MS Gothic、MS Mincho、MS PGothic、MS PMincho、MS UI Gothic 和 Segoe UI Symbol)。以“MS”开头的字体都是固定宽度(等宽)字体,但它们在控制台典型的字体大小下看起来都很糟糕。其他的都被淘汰了,因为控制台需要固定宽度的字体。
所以您需要下载字体。我喜欢 DejaVu Sans Mono ——它是免费的,在控制台尺寸上看起来不错,很容易区分 0
和 O
以及 1
和I
来自 l
,它有各种奇特的 Unicode 符号,包括 Mocha 使用的检查和 X。
不幸的是,安装新的控制台字体有点麻烦,但这是可行的。 (步骤改编自 this post by Scott Hanselman ,但扩展为包括 000
的不明显的微妙之处。)
步骤:
- Download the DejaVu fonts. 解压缩文件。进入刚刚解压的“ttf”目录,选择所有文件,右键单击“安装”。
- 运行 Regedit,然后转到
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Console\TrueTypeFont
。 - 添加新的字符串值。为其指定一个名称,该名称是一串零,比现有的最长的零串长一串。例如,在我安装的 Windows 7 中,已有一个名为
0
的值和一个名为00
的值,因此我必须将新值命名为000
. - 双击新值,并将其值设置为
DejaVu Sans Mono
。 - 重新启动。 (是的,此步骤是必要的,至少在 Windows 7 及之前的操作系统上是这样。)
- 现在您可以打开控制台窗口,打开窗口菜单,转到“默认值”>“字体”选项卡,并且“DejaVu Sans Mono”应该出现在“字体”列表框中。选择它并确定。
现在 Mocha 的输出将展现其全部荣耀。
关于powershell - 如何让 Mocha 的 Unicode 输出在 Windows 控制台中正确显示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9817926/