如何在Windows控制台中正确显示Mocha的Unicode输出?

Joe*_*ite 11 unicode powershell mocha.js windows-console

当我运行Mocha时,它会分别尝试为通过或失败的测试运行显示复选标记或X. 我见过Mocha输出的精美截图.但这些截图都是在Mac或Linux上拍摄的.在Windows的控制台窗口中,这些字符都显示为一个不起眼的空框字符,经典的"嗯?" 字形:

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

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

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

Joe*_*ite 25

通过将角色粘贴到LinqPad中,我能够发现它们是' 重型标记'(U + 2714)' 重复乘法X'(U + 2716).看起来在Windows 7中可用的任何控制台字体(Consolas,Lucida控制台或光栅字体)中都不支持任何字符.事实上,在Windows 7附带的所有字体中,只有少数支持这些字符(Meiryo,Meiryo UI,MS Gothic,MS Mincho,MS PGothic,MS PMincho,MS UI Gothic和Segoe UI Symbol).以"MS"开头的那些都是固定宽度(等宽字体)字体,但它们在控制台典型的字体大小上看起来都很糟糕.其他人都出局了,因为控制台需要固定宽度的字体.

所以你需要下载一个字体.我喜欢幻觉记忆国界单 -它是免费的,它看起来不错,在控制台的大小,可以很容易地告诉0O1Il,并且它有各种花式的Unicode符号,包括检查和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安装中,已经有0一个名为value 且一个名为的值00,因此我不得不命名新的名称000.
  4. 双击新值,并将其值设置为DejaVu Sans Mono.
  5. 重启.(是的,这一步是必要的,至少在操作系统之前,包括Windows 7).
  6. 现在您可以打开控制台窗口,打开窗口菜单,转到默认值>字体选项卡,并在字体列表框中显示"DejaVu Sans Mono".选择它然后确定.

现在摩卡的输出将显示出它的所有荣耀.

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


jsa*_*nen 7

更新:此问题现已修复.从Mocha 1.7.0开始,后备用于默认控制台字体中不存在的符号(√而不是✔,×而不是✖等).它并不像它可能的那样美观,但它确实胜过空盒占位符.

有关详细信息,请参阅相关的拉取请求:https://github.com/visionmedia/mocha/pull/641

  • 这实际上是一个比我更好,更主动的答案 - 它使它成为Just Work,无处不在.谢谢你能做到这一点! (2认同)