Как я могу получить вывод Mocha Unicode для корректного отображения на консоли Windows?

Когда я запускаю Mocha, он пытается показать галочку или X для прогона или неудачного пробного запуска, соответственно. Я видел великолепные скриншоты выхода Mocha. Но эти скриншоты были взяты на Mac или Linux. В консольном окне в Windows эти символы отображаются как неописуемый символ пустой коробки, классический "да?" Глиф:

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

Если я выделил текст в окне консоли и скопировал его в буфер обмена, я вижу фактические символы Юникода; Я могу вставлять причудливые символы в текстовое поле в веб-браузере, и они отлично отображают (✔, ✖). Таким образом, выход Unicode подходит к консольному окну просто отлично; проблема в том, что консольное окно не отображает эти символы должным образом.

Как я могу это исправить, чтобы весь вывод Mocha (включая ✔ и ✖) отображался правильно на консоли Windows?

Ответ 1

Обновление: эта проблема исправлена. Начиная с Mocha 1.7.0, резервные копии используются для символов, которые не существуют в стандартных консольных шрифтах (вместо √ вместо ✔, × вместо ✖ и т.д.). Это не так красиво, как могло бы быть, но это, безусловно, превосходит символы заполнителя с пустыми полями.

Подробнее см. связанный запрос на растяжение: https://github.com/visionmedia/mocha/pull/641

Ответ 2

Вставив символы в LinqPad, я смог понять, что они были 'HEAVY CHECK MARK' (U + 2714) и "ТЯЖЕЛАЯ МУЛЬТИПЛИКАЦИЯ X" (U + 2716). Похоже, ни один символ не поддерживается ни в одном из консольных шрифтов (Consolas, Lucida Console или Raster Fonts), доступных в Windows 7. Фактически, из всех шрифтов, которые поставляются с 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, включая проверку и X, которые использует Mocha.

Sample of the DejaVu Sans Mono font

К сожалению, это немного больно, чтобы установить новый шрифт консоли, но это выполнимо. (Шаги, адаптированные из этот пост Скотта Гензельмана, но расширены, чтобы включить неочевидные тонкости 000.)

Шаги:

  • Загрузите шрифты DejaVu. Разархивируйте файлы. Перейдите в каталог "ttf", который вы только что распаковали, выделите все файлы, щелкните правой кнопкой мыши и "Install".
  • Запустите Regedit и перейдите к HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Console\TrueTypeFont.
  • Добавить новое строковое значение. Дайте ему имя, что строка с нулями длиннее самой длинной строки нулей, которая уже существует. Например, на моей установке Windows 7 уже есть значение с именем 0 и одно с именем 00, поэтому я должен был назвать новый 000.
  • Дважды щелкните новое значение и установите его значение DejaVu Sans Mono.
  • Reboot. (Да, этот шаг необходим, по крайней мере, на ОС до и включая Windows 7.)
  • Теперь вы можете открыть окно консоли, открыть меню окна, перейти на вкладку "По умолчанию" > "Шрифт" и "DejaVu Sans Mono" должен быть доступен в списке "Шрифт". Выберите его и нажмите OK.

Теперь вывод Mocha будет отображаться во всей красе.

Screenshots of Mocha output displaying correctly in a Windows console