MS Shell Dlg と MS Shell Dlg 2 の使用
Windowsは、多くの言語のローカライズされたエディションで使用できます。 ただし、英語エディションを使用して、英語以外の言語で記述されたアプリケーションを実行することもできます。 これは、アプリケーションがギリシャ語または日本語で記述されている場合と同様に、これらの言語で使用されるスクリプトが異なる場合でも当てはまります。 これらのアプリケーションには、アプリケーション言語の情報を提供するダイアログ ボックス、アイコン、ユーティリティを含むユーザー インターフェイスが必要です。これは、現在の Windows ユーザー インターフェイスで使用されている言語とは異なる場合があります。
ユーザー インターフェイスのフォントを選択する際の問題は明らかです。 たとえば、英語 (米国) のシェル フォント (システムまたは既定のフォントとも呼ばれます) Windows 98 は MS Sans Serif、ギリシャ語 (ギリシャ) Windows 98 のシェル フォントは MS Sans Serif ギリシャ語です。 日本語 (日本) Windows 98 の場合、シェル フォントは MS UI ゴシックです。 これらの文字セットを相互に直接マップすることはできません。 ロケールがギリシャ語 (ギリシャ) に設定されている場合に MS Sans Serif を MS Sans Serif Greek に置き換えると、既存のアプリケーションを適切に実行したり、システム メニュー、ダイアログ ボックス、および編集コントロールにギリシャ文字を表示したりすることはできません。
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 ギリシャ語の区別などの問題に関心を持つ必要はありません。
Note
MS Shell Dlg と MS Shell Dlg 2 によって生成されるフォントは、Windowsバージョンによって異なります。 したがって、すべてのプラットフォームでユーザー インターフェイス要素が適切に表示されるようにする必要があります。
Hard-Codedフォント名の処理
Unicode を使用すると、アプリケーションは何千もの異なる文字を扱うことができますが、ほとんどのフォントはすべての Unicode 文字セットをカバーしているわけではありません。 アプリケーションでは、フォント名をハードコーディングしないでください。 1 つの理由は、ある言語の文字を表示し、別の言語の文字を表示しないフォント名をハードコーディングすると、第 2 言語のすべてのローカライズされたテキストが正しく表示されないことです。 フォント名をハードコーディングしないもう 1 つの理由は、アプリケーション テキストを表示しているオペレーティング システムに目的のフォントが読み込まれていない可能性があるためです。
フォント名を扱う最善の方法は、フォント名をローカライズ可能なリソースと見なす方法です。 論理フォントを使用すると、Windows NTまたは Windows 2000 の任意の言語で任意の言語を使用してインターフェイスを実行する問題が解決されます。 フォント名をローカライズ可能なリソースとして設定すると、ローカライズされたユーザー インターフェイスのフォントをローカライズ担当者が変更できるようになります。
Hard-Codedフォント サイズの処理
一部のスクリプトは複雑であり、正しく表示するには多数のピクセルが必要です。 たとえば、ほとんどの英語の文字は 5 x 7 のグリッドに表示されますが、日本語の文字を明確に表示するには少なくとも 16 x 16 のグリッドが必要です。 中国では 24 x 24 グリッドが必要ですが、タイ語では幅が 8 ピクセルですが、高さには少なくとも 22 ピクセルが必要です。 一部の文字が小さいフォント サイズでは読みにくい場合があることを理解するのは簡単です。
アプリケーション ユーザー インターフェイスでは、フォント サイズをローカライズ可能なリソースとして扱う必要があります。 論理フォントを使用すると、Windows NTまたは Windows 2000 の任意の言語で任意の言語を使用してインターフェイスを実行する問題が解決されます。 ローカライズ可能なリソースとしてフォント サイズを設定すると、ローカライズされたユーザー インターフェイスのフォントを変更できます。
論理フォントのマップ
各論理フォントは、レジストリ内のエントリによって、現在アクティブなロケールの適切なシェル フォントにマップされます。 論理フォントの 1 つを使用すると、Windowsは実行時に現在選択されているロケールのフォントに切り替わります。 この操作により、ユーザー インターフェイスWindows英語 (米国) と、コード ページ 1252 に含まれていない文字を正しく表示できます。 したがって、現在出荷されているローカライズされたアプリケーションは、英語 (米国) バージョンのWindowsで変更なしで実行できます。
各Windowsコンピューターは、NLS 用語で説明されている非 Unicode プログラムの定義された言語に基づいて、MS Shell Dlg と MS Shell Dlg 2 を適切な物理フォントにマップします。 実際のマッピングは、レジストリ キー HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\Current Version\FontSubstitutesに格納されます。
Windowsのフォント マッピング/98/95
通常、MS Shell Dlg は MS Sans Serif のコード ページ固有のバージョンにマップされます。
Windows NT 4.0 でのフォント マッピング
MS Shell Dlg は、西ヨーロッパ、中央ヨーロッパ、ギリシャ語、トルコ語、バルト言語、キリル文字を使用した言語の MS Sans Serif にマップされます。MS UI Gothic for Japanese;韓国のグリム。簡体字中国語のSimsun;繁体字中国語の PMinglu;など。
Windows 2000、Windows XP、Windows Server 2003、Windows Vista および Windows 7 でのフォント マッピング
どちらの論理フォントも Unicode ベースの TrueType フォントにマップされます。 インストール言語が日本語でない場合、MS Shell Dlg は Microsoft Sans Serif (MS Sans Serif とは異なる) を使用します。 インストール言語が日本語の場合、MS Shell Dlg は MS UI ゴシックにマップされます。
Windows XP MUI システムでは、MS Shell Dlg は、システムロケールと UI 言語が日本語に設定されている場合にのみ MS UI ゴシックにマップされます。 それ以外の場合、MS Shell Dlg は Microsoft Sans Serif にマップされます。
Windows Vista と Windows 7 では、コンピューターの既定の UI 言語が日本語に設定されている場合、MS Shell Dlg は MS UI ゴシックにマップされます (インストール言語に関係なく)。 コンピューターの既定の UI 言語が日本語以外の言語に設定されている場合、MS Shell Dlg は Microsoft Sans Serif にマップされます。
MS Shell Dlg 2 では、言語に関係なく Tahoma フォントを使用するだけです。 Microsoft Sans Serif よりも Tahoma の主な利点は、Tahoma にネイティブの太字のフォントフェイスがある点です。 その主な欠点は、古いオペレーティング システムにインストールされていない可能性があり、あまり魅力的ではないフォントに置き換えられる可能性があることです。
Tahoma または Microsoft Sans Serif で実装されていない文字は、ユーザー インターフェイスでのテキスト表示に使用される他のWindowsフォントに実装できます。 テキストの表示に使用されるコントロールや API によっては、 フォント リンク などのさまざまなメカニズムを使用して、それらの文字を表示するためにこのようなフォントを自動的に選択できます。
アプリケーションでは、Microsoft Sans Serif または Tahoma を明示的に使用し、MS Shell Dlg または MS Shell Dlg 2 の使用に関連する間接レベルを保存できます。 フォント リンクのため、Microsoft Sans Serif または Tahoma を指定すると、すべての言語に適切なグリフが提供されます。
Windows Me/98/95 で英語以外のアプリケーションに MS シェル Dlg を使用する
Windows Me/98/95 では、MS Shell Dlg は、ユーザーが別のWindows基本文字セットを持つロケールを選択したときに実行される、英語以外の静的ユーザー インターフェイス アプリケーションでの使用を意図していません。 この場合、アプリケーション のユーザー インターフェイス言語は、MS Shell Dlg に置き換えられるフォントではサポートされない場合があります。
たとえば、ユーザーがドイツ語バージョンのWindowsを使用していて、Unicode 以外のギリシャ語のアプリケーションをインストールする場合、ユーザーはロケールをギリシャ語 (ギリシャ) に変更しようとします。 このアクションは MS Shell Dlg をギリシャ語フォントにリセットしますが、このフォントにはドイツ語で表示するために必要なすべてのグリフが含まれていません。 したがって、ドイツ語ユーザー インターフェイスの ASCII 以外の文字は正しく表示されません。 このシナリオをサポートするには、アプリケーションで MS Shell Dlg を、西ヨーロッパとギリシャ語の両方のグリフを含むフォントに設定する必要があります。
関連トピック