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

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

Скриншот Mocha в консоли Windows, с квадратиком вместо ожидаемой галочки

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

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


person Joe White    schedule 22.03.2012    source источник


Ответы (2)


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

Подробнее см. соответствующий запрос на включение: https://github.com/visionmedia/mocha/pull/ 641

person jsalonen    schedule 10.11.2012
comment
На самом деле это лучший, более активный ответ, чем мой, — он просто работает везде. Спасибо за то, что это произошло! - person Joe White; 11.11.2012
comment
Нет проблем, приятель :) Давайте поиграем в Windows с Mocha прямо сейчас! - person jsalonen; 11.11.2012

Вставив символы в LinqPad, я смог выяснить, что они 'БОЛЬШАЯ ФАЛОЧКА' (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.

Образец шрифта DejaVu Sans Mono

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

Шаги:

  1. Загрузите шрифты DejaVu. Разархивируйте файлы. Перейдите в каталог «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» должен быть доступен в списке «Шрифт». Выберите его и ОК.

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

Скриншоты вывода Mocha, правильно отображаемого в консоли Windows

person Joe White    schedule 22.03.2012
comment
Перезагрузка не требовалась для меня в Windows 7 - person xori; 15.08.2013
comment
В Windows 10 перезагрузка также не требуется. - person MTJ; 26.10.2015