Я заметил, что я могу вставить все виды символов Юникода в Visual Studio 2013, и они отображаются очень хорошо. Но если я попробую тот же трюк в Notepad++, используя тот же шрифт, они не появятся. Таким образом, Visual Studio должен дополнять выбранный шрифт дополнительными символами из другого места. Куда? Это как CSS, где где-то есть определение семейства шрифтов (можете ли вы его изменить?) или это какое-то странное специальное поведение, когда случается так, что под рукой есть куча символов Юникода?

РЕДАКТИРОВАТЬ: Экспериментируя с этим немного больше, эти специальные символы, кажется, появляются в блокноте Windows и некоторых других программ в конце концов. В основном кажется, что Notepad++ испытывает проблемы с ними, несмотря на настройки кодировки и шрифтов.

2 ответа2

0

Эта функция недоступна в Visual Studio, шрифты, содержащие символы Юникода, должны быть установлены в вашей системе. Вы также можете отобразить эти символы в блокноте, то есть вопрос формата: отображение Unicode в блокноте

Различные программы кодируют символы по-разному. Блокнот может управлять текстом, закодированным в нескольких форматах, таких как ANSI, Unicode и UTF-8. Найдите эти параметры, нажав кнопку "Кодировка" в окне "Сохранить как" в блокноте. После создания или обновления текста в документе вы можете выбрать один из этих вариантов кодирования, в котором нужно сохранить файл. Если вы не выберете опцию, Блокнот сохранит ваш документ в формате ANSI по умолчанию.

0

Техника известна как замена шрифта. Например, веб-браузер попытается найти шрифт с соответствующим символом - я думаю, что в Firefox есть список шрифтов, которые нужно сначала попробовать, основываясь на языке, а затем, по-видимому, совершает какую-то другую магию, если не находит его.

Похоже, что GDI может использовать несколько различных форм замены шрифта, хотя трудно найти много деталей. Этот устаревший документ MSDN дает некоторые подробности о том, что делает Windows. Здесь перечислены некоторые шрифты, используемые для разных языков.

Я не знаю, почему это будет работать в Visual Studio, а не в блокноте. Возможно, что VS делает что-то помимо стандартного Windows API.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .