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

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

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

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

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

Ответы [ 2 ]

25 голосов
/ 22 марта 2012

Вставив символы в LinqPad , я смог выяснить, что они 'HEAVY CHECK MARK' (U + 2714) и 'HEAVY MULTIPLICATION 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.)

Шаги:

  1. Загрузите шрифты DejaVu. Распакуйте файлы.Перейдите в каталог «ttf», который вы только что распаковали, выберите все файлы, щелкните правой кнопкой мыши и «Install».
  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 "должен быть доступен в списке шрифтов.Выберите его и OK.

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

Screenshots of Mocha output displaying correctly in a Windows console

7 голосов
/ 10 ноября 2012

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

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

...