Использование MS Shell Dlg и MS Shell Dlg 2

Windows доступна в локализованных выпусках для многих языков. Однако англоязычный выпуск также можно использовать для запуска приложений, написанных на языках, отличных от английского. Это верно, даже если для этих языков используется другой сценарий, как при написании приложений на греческом или японском языках. Для этих приложений требуется пользовательский интерфейс с диалоговым окном, значками и служебными программами, предоставляющими информацию на языке приложения, который может отличаться от языка, используемого в текущем пользовательском интерфейсе Windows.

Проблема при выборе шрифта для пользовательского интерфейса очевидна. Например, шрифт оболочки, также известный как системный шрифт или шрифт по умолчанию, для английского (США) Windows 98 — MS Sans Serif, а шрифт оболочки для греческого (Греция) Windows 98 — MS Sans Serif greek. Для японской (Япония) Windows 98 шрифт оболочки — MS UI Gothic. Эти наборы символов не могут быть напрямую сопоставлены друг с другом. Замена MS Sans Serif на MS Sans Serif греческим, если для языкового стандарта задано значение Греческий (Греция), не позволяет существующим приложениям правильно работать или отображать греческие символы в системных меню, диалоговых окнах и элементах управления для редактирования.

Windows решает эту проблему, используя логические шрифты MS Shell Dlg и MS Shell Dlg 2, чтобы разрешить выбор подходящего шрифта для отображения скрипта. В этом разделе рассматриваются некоторые аспекты программирования при использовании логических шрифтов для реализации диалоговых окон, меню и т. п. для гибких пользовательских интерфейсов, которые хорошо отображаются во всех поддерживаемых операционных системах Windows и на всех языках. Дополнительные сведения см. в разделе Создание и выбор шрифта. См. также многоязычный пользовательский интерфейс для обсуждения использования технологии многоязыкового пользовательского интерфейса (MUI) при создании пользовательских интерфейсов для многоязычных приложений.

Сведения о логических шрифтах

Логические шрифты MS Shell Dlg и MS Shell Dlg 2 по сути являются именами лиц, используемыми для сопоставления, чтобы обеспечить поддержку языковых стандартов и региональных параметров с символами, не содержащимися в кодовой странице 1252, наборе символов Windows для США и Западной Европы. Ms Shell Dlg сопоставляется с шрифтом оболочки по умолчанию, связанным с текущим языком и региональными параметрами или языковым стандартом, и поддерживает классический вид рабочего стола Windows. Имя лица MS Shell Dlg 2 было представлено в Windows 2000 для поддержки внешнего вида, представленного в Windows 2000.

Например, если приложение использует MS Shell Dlg или MS Shell Dlg 2 для диалоговых окон, команда локализации, создающая ресурсы на греческом языке для приложения, может сосредоточиться на переводе текста. Они не должны быть обеспокоены такими вопросами, как различие между MS Sans Serif и MS Sans Serif Greek.

Примечание

Шрифты, созданные MS Shell Dlg и MS Shell Dlg 2, отличаются в разных версиях Windows. Поэтому следует убедиться, что элементы пользовательского интерфейса хорошо отображаются на всех платформах.

 

Обработка имен шрифтов Hard-Coded

Использование Юникода позволяет приложениям работать с тысячами различных символов, но большинство шрифтов не охватывают все наборы символов Юникода. Приложения не должны жестко кодировать имена шрифтов. Одна из причин заключается в том, что жесткое написание имени шрифта, отображающего символы для одного языка, а не символов для другого языка, приводит к неправильному отображению всего локализованного текста на втором языке. Еще одна причина, по которой не следует жестко кодировать имена шрифтов, заключается в том, что требуемый шрифт может не загружаться в операционной системе, отображающей текст приложения.

Лучший способ обработки имен шрифтов — рассматривать их как локализуемые ресурсы. Использование логического шрифта решает проблему запуска интерфейса на любом языке в Windows NT или Windows 2000 для любого языка. Установка имени шрифта в качестве локализуемого ресурса позволяет локализатору изменять шрифт для локализованного пользовательского интерфейса.

Обработка Hard-Coded размеров шрифтов

Некоторые скрипты являются сложными и требуют большого количества пикселей для правильного отображения. Например, большинство английских символов отображаются в сетке 5x7, но японские символы должны иметь по крайней мере сетку 16x16, чтобы они были четко видны. В то время как для китайского языка требуется сетка 24x24, для тайского требуется только 8 пикселей для ширины, но не менее 22 пикселей для высоты. Легко понять, что некоторые символы могут быть не разборчивыми при небольшом размере шрифта.

Пользовательский интерфейс приложения должен рассматривать размеры шрифтов как локализуемые ресурсы. Использование логического шрифта решает проблему запуска интерфейса на любом языке в Windows NT или Windows 2000 для любого языка. Установка размера шрифта в качестве локализуемого ресурса позволяет локализатору изменять шрифт для локализованного пользовательского интерфейса.

Сопоставление логических шрифтов

Каждый из логических шрифтов сопоставляется записью в реестре с соответствующим шрифтом оболочки для текущего активного языкового стандарта. При использовании одного из логических шрифтов Windows переключается на шрифт для выбранного языкового стандарта во время выполнения. Эта операция позволяет правильно отображать английский (США) пользовательский интерфейс Windows, а также символы, отсутствуют на кодовой странице 1252. Таким образом, в настоящее время доставка локализованных приложений может выполняться в английской (США) версии Windows без изменений.

Каждый компьютер Windows сопоставляет MS Shell Dlg и MS Shell Dlg 2 с соответствующим физическим шрифтом на основе определенного языка для программ, отличных от Юникода, описанных в разделе Терминология NLS. Фактические сопоставления хранятся в разделе реестра HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\Current Version\FontSubstitutes.

Сопоставление шрифтов в Windows Me/98/95

Ms Shell Dlg обычно сопоставляется с версией MS Sans Serif для конкретной кодовой страницы.

Сопоставление шрифтов в Windows NT 4.0

MS Shell Dlg сопоставляет MS Sans Serif для западного и центральноевропейского, греческого, турецкого, балтийского языков и языков с использованием кириллицы; MS UI Gothic для японского языка; Gulim для корейского языка; Simsun для китайского языка (упрощенное письмо); PMinglu для китайского языка (традиционное письмо); Др.

Сопоставление шрифтов в Windows 2000, Windows XP, Windows Server 2003, Windows Vista и Windows 7

Оба логических шрифта соответствуют шрифтам TrueType на основе Юникода. MS Shell Dlg использует Microsoft Sans Serif (отличается от MS Sans Serif), если язык установки не является японским. MS Shell Dlg сопоставляется с MS UI Gothic, если используется японский язык установки.

В системах WINDOWS XP MUI MS Shell Dlg сопоставляется с MS UI Gothic только в том случае, если языковой стандарт системы и язык пользовательского интерфейса заданы как японский. В противном случае MS Shell Dlg сопоставляется с Microsoft Sans Serif.

В Windows Vista и Windows 7 MS Shell Dlg сопоставляется с MS UI Gothic, если язык пользовательского интерфейса компьютера по умолчанию — японский (независимо от языка установки). MS Shell Dlg сопоставляется с Microsoft Sans Serif, если язык пользовательского интерфейса компьютера по умолчанию установлен на языке, отличном от японского.

MS Shell Dlg 2 просто использует шрифт Tahoma независимо от языка. Main преимущество Tahoma по сравнению с Microsoft Sans Serif заключается в том, что Tahoma имеет собственное полужирное шрифт лицо. Его main недостаток заключается в том, что старые операционные системы могут не устанавливать его и заменить менее привлекательным шрифтом.

Символы, которые не реализованы в Tahoma или Microsoft Sans Serif, могут быть реализованы в других шрифтах Windows, которые используются для отображения текста в пользовательских интерфейсах. В зависимости от того, какие элементы управления или API используются для отображения текста, система может использовать различные механизмы, такие как связывание шрифтов , для автоматического выбора таких шрифтов для отображения этих символов.

Приложения могут явно использовать Microsoft Sans Serif или Tahoma и сохранить уровень косвенного обращения, участвующий в использовании MS Shell Dlg или MS Shell Dlg 2. Из-за связывания шрифтов указание Microsoft Sans Serif или Tahoma предоставляет соответствующие глифы для всех языков.

Использование MS Shell Dlg для приложений, отличных от английского, в Windows Me/98/95

В Windows Me/98/95 MS Shell Dlg не предназначен для использования со статическим приложением пользовательского интерфейса, отличным от английского, которое выполняется, когда пользователь выбрал языковой стандарт с другой базовой кодировкой Windows. В этом случае язык пользовательского интерфейса приложения может не поддерживаться шрифтом, заменяющим ms Shell Dlg.

Например, если пользователь использует версию Windows на немецком языке и хочет установить приложение на греческом языке, отличное от Юникода, пользователь пытается изменить языковой стандарт на греческий (Греция). Это действие сбрасывает ms Shell Dlg на греческий шрифт, но этот шрифт не содержит все глифы, необходимые для отображения на немецком языке. Поэтому все символы, отличные от ASCII, в пользовательском интерфейсе на немецком языке будут отображаться неправильно. Для поддержки этого сценария приложение должно задать для MS Shell Dlg шрифт, содержащий как западноевропейские, так и греческие глифы.

Перечисление и выделение международных шрифтов

Многоязыковой интерфейс пользователя