
- по умолчанию windows 10 поставляется сsegoe ui эмодзишрифт
- Этот шрифт является единственным шрифтом по умолчанию, который содержит следующие 4 символа Unicode:
решение1
Современные элементы пользовательского интерфейса работают не так, как устаревшие элементы. Диалоговое окно «Выполнить» и блокнот — это устаревшие элементы, которые не обновляются вместе с остальной частью ОС. Панель поиска — это современный элемент ОС, поэтому так должно вести себя и все новые элементы ОС. Семейство шрифтов Segoe было разработано для современного пользовательского интерфейса, и все они используются для различных функций отображения текста. При этом разработка Microsoft не славится последовательностью. Вы можете обнаружить разные элементы, разработанные разными командами, которые ведут себя по-разному.
Дополнительную информацию о том, как по-разному обрабатываются шрифты в «современных» приложениях Windows 10, можно найти в этой статье:https://docs.microsoft.com/en-us/dotnet/framework/wpf/advanced/typography-in-wpf
WPF обеспечивает расширенную поддержку шрифтов, предоставляя следующие возможности: Unicode для всего текста. Поведение и выбор шрифта больше не требуют набора символов или кодовой страницы.
Это объясняет, как современные приложения могут отображать символы из нескольких шрифтов одного семейства шрифтов.
решение2
@harrymc «Все программное обеспечение под Windows использует один и тот же API, который поддерживается одними и теми же компонентами Windows».
я: * это относительно вашего определения "api" * они оба работают в .net, который, в свою очередь, работает в winrt (среда выполнения Windows) * однако, они все равно могут иметь разные интерфейсы * с учетом этого, вики предполагает, что они разные: https://en.wikipedia.org/wiki/Windows_Forms * «Windows Forms построен на существующем API Windows, а некоторые элементы управления просто являются оболочкой для базовых компонентов Windows». https://en.wikipedia.org/wiki/Windows_Presentation_Foundation * «Архитектура WPF охватывает как управляемый код, так и компоненты собственного кода. Однако открытый API доступен только через управляемый код. В то время как большая часть WPF находится в управляемом коде, механизм композиции, который отображает приложения WPF, является собственным компонентом».
https://docs.microsoft.com/en-us/dotnet/api/system.windows.media.fontfamily?view=netframework-4.8
«Механизм резервного копирования шрифтов WPF заменяет предыдущие технологии замены шрифтов Win32».
«Windows по-прежнему отлично поддерживает Unicode и международный текст, а также гарантирует, что универсальные приложения Windows смогут отлично отображать текст на настольных устройствах и устройствах любого другого форм-фактора.
@HackSlash «Диалоговое окно «Выполнить» и блокнот — устаревшие элементы, которые не обновляются вместе с остальной частью ОС».
я: * неправда * однако блокнот не обновляется так часто как wordpad
4 упомянутых мной эмодзи были добавлены в Windows по одному:
- https://emojipedia.org/microsoft/windows-10-fall-creators-update/sled/
- https://emojipedia.org/microsoft/windows-10-fall-creators-update/летающая-тарелка/
- https://emojipedia.org/microsoft/windows-10-october-2018-update/skateboard/
- https://emojipedia.org/microsoft/windows-10-may-2019-update/auto-rickshaw/
https://docs.microsoft.com/en-us/typography/fonts/windows_10_font_list
- этот список segoe ui emoji как 1.27
- но у меня 1,29
доказательства свидетельствуют о том, что Windows обновила часть своего программного обеспечения (WordPap, Windows Search), чтобы ссылаться на новейшую версию Segoe UI Emoji во время отката шрифта
- тогда как другое программное обеспечение (блокнот, диалоговое окно «Выполнить») ссылается на старую версию segoe ui emoji
примечание * я скоро приведу этот пост в порядок * я едва успел это сделать, прежде чем истекло время вознаграждения * у @harrymc и @HackSlash были фундаментальные ошибки * поэтому я хотел предоставить более точную информацию
решение3
Я не согласен с принятым ответом: Все программное обеспечение под Windows использует один и тот же API, который поддерживается одними и теми же компонентами Windows. Хотя более старое программное обеспечение может использовать устаревший API, это не относится ни к Notepad, ни к Wordpad, которые все еще находятся в стадии разработки.
Проблема, с которой столкнулся автор поста с Notepad и Wordpad, больше связана с пользовательским интерфейсом, чем с проблемами этих продуктов, и вот доказательство: символы отображаются правильно, если текущий шрифт указан как Segoe UI Emoji:
Однако не ожидайте, что вставка этих символов сработает, если текущий шрифт не является Segoe UI Emoji, если только один или несколько из них не включены в текущий шрифт.
Для диалогов Windows: при создании диалога шрифт, используемый текстовым полем, указывается в определении диалога. Шрифт Segoe UI Emoji, очевидно, не подходит в качестве обычного текстового шрифта и поэтому никогда не будет использоваться для такого пользовательского интерфейса.
Вы не можете заставить диалог использовать другой шрифт, нежели тот, с которым он запрограммирован, по крайней мере, не взломав .exe
или .dll
, содержащий определение диалога. Поэтому вы не можете ожидать, что вставка эмодзи будет работать в диалогах.
РЕДАКТИРОВАТЬ
Диапазон символов Unicode, хотя и очень большой, недостаточен для того, чтобы содержать все символы всех языков на Земле. Вот почему шрифты важны, поскольку одна и та же кодовая точка Unicode может использоваться для разных символов в разных шрифтах.
Буфер обмена Windows богат, в отличие от буфера обмена Linux. Он не только содержит символы, но также может содержать информацию о языке, направлении (вправо, влево), шрифте и т. д. API способен устанавливать и получать различные форматы, а также достаточно умен, чтобы преобразовывать при получении сохраненный формат в запрошенный формат.
Итак, то, что вы получаете при копировании и вставке специальных символов, зависит от API, который использовался исходной и целевой программами. Ниже приведен пример, который использует Wordpad.
Исходный текст шрифтом Arial:
Теперь я копирую-вставляю ваш четвертый символ из браузера в конец текста, и о чудо — шрифт теперь Segoe UI Emoji:
И вот теперь я нажимаю на слово «Arial», и шрифт внезапно становится другим:
Итак, теперь у нас есть текст, набранный двумя разными шрифтами. Символ, который мы вставили (