12

当我运行Mocha时,它会尝试分别显示一个复选标记或一个 X 来表示通过或失败的测试运行。我已经看到了 Mocha 输出的漂亮屏幕截图。但这些截图都是在 Mac 或 Linux 上拍摄的。在 Windows 的控制台窗口中,这些字符都显示为一个不起眼的空框字符,即经典的“嗯?” 字形:

Windows 控制台中 Mocha 的屏幕截图,使用框字符而不是预期的复选标记

如果我在控制台窗口中突出显示文本并将其复制到剪贴板,我会看到实际的 Unicode 字符;我可以将花哨的字符粘贴到 Web 浏览器的文本框中,它们呈现得很好(✔,✖)。所以 Unicode 输出可以很好地进入控制台窗口;问题是控制台窗口没有正确显示这些字符。

如何解决此问题,以便 Mocha 的所有输出(包括 ✔ 和 ✖)在 Windows 控制台中正确显示?

4

2 回答 2

25

通过将字符粘贴到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——它是免费的,它在控制台大小方面看起来不错,很容易区分0from theO1from Ithe l,它有各种花哨的 Unicode 符号,包括 Mocha 使用的 check 和 X。

DejaVu Sans Mono 字体示例

不幸的是,安装新的控制台字体有点痛苦,但它是可行的。(步骤改编自Scott Hanselman 的这篇文章,但扩展到包括 的非显而易见的微妙之处000。)

脚步:

  1. 下载 DejaVu 字体。解压缩文件。进入刚刚解压的“ttf”目录,选择所有文件,右键“安装”。
  2. 运行 Regedit,然后转到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Console\TrueTypeFont.
  3. 添加一个新的字符串值。给它一个名称,该名称是一串零,比已经存在的最长的零串长一个。例如,在我的 Windows 7 安装中,已经有一个值 named0和一个 named 00,所以我必须命名新的一个000
  4. 双击您的新值,并将其值设置为DejaVu Sans Mono
  5. 重启。(是的,这一步是必要的,至少在 Windows 7 之前的操作系统上是这样。)
  6. 现在您可以打开一个控制台窗口,打开窗口菜单,转到 Defaults > Font 选项卡,并且“DejaVu Sans Mono”应该在字体列表框中可用。选择它并确定。

现在,Mocha 的输出将尽显其荣耀。

在 Windows 控制台中正确显示 Mocha 输出的屏幕截图

于 2012-03-22T07:19:19.747 回答
7

更新:此问题现已修复。从 Mocha 1.7.0 开始,回退用于默认控制台字体中不存在的符号(√ 代替 ✔,× 代替 ✖ 等)。它没有想象中的那么漂亮,但它肯定胜过空框占位符符号。

详情见相关拉取请求:https ://github.com/visionmedia/mocha/pull/641

于 2012-11-10T19:01:28.023 回答