Visual Studio: Шрифт для фрагмента кода в HelpViewer (часть 2)

В первой части я вроде как успешно поборол проблему с отображением исходного кода шрифтами с засечками (типа Times New Roman).

Поставив Visual Studio Community 2015 на Windows 10, я обнаружил, что тут этот метод не сработал. Т.е. тут не было шрифта batang.ttf, а значит и удалять было нечего. Как выяснилось с помощью Process Explorer, здесь HelpViewer пытался использовать вместо batang.ttf обычный шрифт times.ttf (Times New Roman):
HelpViewer_font3

Шаги по искоренению этого «зла» следующие:
1. В редакторе реестра, запущенном под админом, находим в следующей ветке реестра упоминание о шрифте times и удаляем его:
HKLM\Software\Microsoft\Windows NT\Current Version\Fonts\
2. Через командную строку, опять же под админом, выполняем:

C:\Windows\Fonts>takeown /F times.ttf
C:\Windows\Fonts>icacls.exe times.ttf /T /Q /C /RESET
C:\Windows\Fonts>del /f /s /q /a times.ttf
Deleted file - C:\Windows\Fonts\times.ttf

C:\Windows\Fonts>takeown /F timesbd.ttf
C:\Windows\Fonts>icacls.exe timesbd.ttf /T /Q /C /RESET
C:\Windows\Fonts>del /f /s /q /a timesbd.ttf
Deleted file - C:\Windows\Fonts\timesbd.ttf

C:\Windows\Fonts>takeown /F timesbi.ttf
C:\Windows\Fonts>icacls.exe timesbi.ttf /T /Q /C /RESET
C:\Windows\Fonts>del /f /s /q /a timesbi.ttf
Deleted file - C:\Windows\Fonts\timesbi.ttf

C:\Windows\Fonts>takeown /F timesi.ttf
C:\Windows\Fonts>icacls.exe timesi.ttf /T /Q /C /RESET
C:\Windows\Fonts>del /f /s /q /a timesi.ttf
Deleted file - C:\Windows\Fonts\timesi.ttf

Перезагружаемся, смотрим на результат:

Уже лучше, но этот шрифт тоже с засечками. Process Monitor показывает, что на этот раз HelpViewer стал использовать шрифт Cambria.ttc.
Кому он также не нравится, повторяем для него шаги, описанные выше.

Способ с сопоставлением файлов в ветке HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontSubstitutes для HelpViewer не сработал.

Вообще сейчас я попробовал более «простой» способ:
1. Открываем редактор реестра под админом.
2. Находим ветку HKLM\Software\Microsoft\Windows NT\Current Version\Fonts\
*. Делаем экспорт этой ветки реестра!
3. В данной ветке прописаны соответствия названия вызываемого шрифта и его файл. Например для Times New Roman (TrueType) соответствует файлу times.ttf. Присваиваем ему новый файл segoeui.ttf.
4. Повторяем пункт 3 для курсива, жирного и полужирного шрифтов (если есть). Их названия соответственно оканчиваются на i, b, z. Эти шаги придется повторить несколько раз до тех пор, пока система не подберет шрифт, приятный для ваших глаз.

В итоге, после примерно 10 перезагрузок и изменений значений в этой ветке реестра, я дошел до шрифта ebrima.ttf

Если кому нужно, экспортированный файл для Windows 10 (может подойдет и к другим версиям) в архиве Fonts-151125

После применения этого файла невозможно будет использовать все замененные шрифты (Times New Roman, Cambria, Constantia, Georgia, MingLiU-ExtB & PMingLiU-ExtB & MingLiU_HKSCS-ExtB (TrueType), Palatino Linotype (TrueType), Sylfaen (TrueType), PT Serif Bold (TrueType), DejaVu Sans Condensed, DejaVu Serif (TrueType), DejaVu Serif Condensed Bold (TrueType), Liberation Serif (TrueType), PT Serif (TrueType), Cambria & Cambria Math (TrueType).

Способ конечно напоминает костыли, но к сожалению, я так и не смог найти адекватный способ отобразить фрагмент кода шрифтом без засечек…

Нашел решение.



Запись опубликована автором в рубрике Software с метками .