次の方法で共有


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 Greek の区別などの問題に関心を持つ必要はありません。

注意

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 Me/98/95 でのフォント マッピング

MS Shell Dlg は通常、MS Sans Serif のコード ページ固有のバージョンにマップされます。

Windows NT 4.0 でのフォント マッピング

MS Shell Dlg は、西ヨーロッパおよび中央ヨーロッパ、ギリシャ語、トルコ語、バルト言語、キリル文字を使用した言語の MS Sans Serif にマップされます。日本語用 MS UI ゴシック;韓国の場合はグリム。簡体字中国語の 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 Shell Dlg を使用する

Windows Me/98/95 では、MS Shell Dlg は、ユーザーが別の Windows 基本文字セットを持つロケールを選択したときに実行される、英語以外の静的ユーザー インターフェイス アプリケーションでの使用を目的としたものではありません。 この場合、MS Shell Dlg に代わるフォントでは、アプリケーション ユーザー インターフェイス言語がサポートされていない可能性があります。

たとえば、ユーザーがドイツ語バージョンの Windows を使用していて、Unicode 以外のギリシャ語アプリケーションをインストールする場合、ユーザーはロケールをギリシャ語 (ギリシャ) に変更しようとします。 この操作により MS Shell Dlg がギリシャ語フォントにリセットされますが、このフォントにはドイツ語で表示するために必要なすべてのグリフが含まれているわけではありません。 したがって、ドイツ語ユーザー インターフェイスの ASCII 以外の文字は正しく表示されません。 このシナリオをサポートするには、アプリケーションで MS Shell Dlg を、西ヨーロッパ言語とギリシャ語の両方のグリフを含むフォントに設定する必要があります。

国際フォントの列挙と選択

多言語ユーザー インターフェイス