2012-03-22 83 views
11

當我運行Mocha時,它會分別嘗試顯示一個複選標記或一個X代表通過或失敗的測試運行。我看過摩卡輸出的精美截圖。但是這些截圖都是在Mac或Linux上拍攝的。在Windows的控制檯窗口中,這些字符都顯示爲一個不起眼的空框字符,經典的「嗯?」字形:如何讓Mocha的Unicode輸出在Windows控制檯中正確顯示?

Screenshot of Mocha in the Windows console, with a box character instead of the expected check mark

如果我強調在控制檯窗口中的文本,並將其複製到剪貼板,我看到實際的Unicode字符;我可以將特殊字符粘貼到Web瀏覽器中的文本框中,並且它們渲染得很好(✔,✖)。所以Unicode輸出到控制檯窗口就好了;問題在於控制檯窗口沒有正確顯示這些字符。

我該如何解決這個問題,以便所有Mocha的輸出(包括✔和✖)在Windows控制檯中正確顯示?

回答

7

更新:此問題已得到修復。從Mocha 1.7.0開始,回退用於默認控制檯字體中不存在的符號(√代替√,×代替✖等)。它不如它可能,但它肯定會擊敗空框佔位符號。

有關詳細信息,請參閱相關的拉請求:https://github.com/visionmedia/mocha/pull/641

+2

這實際上是比我更好的,更積極的答案需要重新啓動 - 這可只是工作,無處不在。感謝你做到這一點! – 2012-11-10 21:00:59

+0

No probs mate :)現在讓我們在Windows上與摩卡一起搖滾吧! – jsalonen 2012-11-10 21:53:17

24

通過粘貼字符到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 - 它是免費的,它在控制檯尺寸上看起來不錯,很容易從O1Il中知道0,並且它有各種各樣的花式Unicode符號,包括檢查和X摩卡使用。

Sample of the DejaVu Sans Mono font

不幸的是,這是一個有點安裝一個新的控制檯字體的痛苦的,但它是可行的。 (步驟適於從this post by Scott Hanselman,但是延伸到包括的000的非顯而易見的細微之處。)

步驟:

  1. Download the DejaVu fonts.解壓縮的文件。進入剛剛解壓縮的「ttf」目錄,選擇所有文件,右鍵單擊並選擇「安裝」。
  2. 運行Regedit,然後轉到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Console\TrueTypeFont
  3. 添加新的字符串值。給它起一個名字,這個名字是一串零,比已經存在的最長的零字符串長。例如,在我的Windows 7安裝中,已經有一個名爲0的值和一個名爲00的值,所以我必須命名新的000
  4. 雙擊您的新值,並將其值設置爲DejaVu Sans Mono
  5. 重新啓動。 (是的,這一步是必要的,至少在操作系統直到包括Windows 7在內)。
  6. 現在你可以打開一個控制檯窗口,打開窗口菜單,進入默認設置>字體選項卡和「DejaVu Sans Mono」在字體列表框中可用。選擇它並確定。

現在摩卡的輸出將顯示所有的榮耀。

Screenshots of Mocha output displaying correctly in a Windows console

+0

的重啓是不需要的,我在Windows 7 – xori 2013-08-15 19:54:24

+0

沒有在Windows 10或者 – user1740331 2015-10-26 07:44:37

相關問題