Windows フォームおよびコントロールの国際対応フォント

国際対応のアプリケーションで、フォントの選択に推奨される方法は、可能な限りフォント フォールバックを使用することです。 フォント フォールバックとは、その文字が属するスクリプトがシステムによって決定されることを意味します。

フォント フォールバックの使用

この機能を利用するには、フォームやその他の要素に Font プロパティを設定しないでください。 アプリケーションでは、既定のシステム フォントが自動的に使用されます。これは、オペレーティング システムのローカライズされた言語とは互いに異なります。 アプリケーションが実行されると、オペレーティング システムで選択されているカルチャに対応する正しいフォントが、システムによって自動的に提供されます。

そのルールには、フォントが設定されないという例外があります。これは、フォント スタイルを変更するためのものです。 これは、ユーザーがボタンをクリックするとテキスト ボックス内のテキストが太字で表示されるアプリケーションにとって重要な場合があります。 これを行うには、フォームのフォントの内容に基づいて、テキスト ボックスのフォント スタイルを太字に変更する関数を記述します。 この関数は、ボタンの Click イベント ハンドラーと、FontChanged イベント ハンドラーの 2 か所で呼び出すことが重要です。 関数が Click イベント ハンドラーでのみ呼び出され、他のコードによってフォーム全体のフォント ファミリが変更される場合、そのフォームの残りの部分ではテキスト ボックスは変更されません。

Private Sub MakeBold()
   ' Change the TextBox to a bold version of the form font
   TextBox1.Font = New Font(Me.Font, FontStyle.Bold)
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
   ' Clicking this button makes the TextBox bold
   MakeBold()
End Sub

Private Sub Form1_FontChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.FontChanged
   ' If the TextBox is already bold and the form's font changes,
   ' change the TextBox to a bold version of the new form font
   If (TextBox1.Font.Style = FontStyle.Bold) Then
      MakeBold()
   End If
End Sub
private void button1_Click(object sender, System.EventArgs e)
{
   // Clicking this button makes the TextBox bold
   MakeBold();
}

private void MakeBold()
{
   // Change the TextBox to a bold version of the form's font
   textBox1.Font = new Font(this.Font, FontStyle.Bold);
}

private void Form1_FontChanged(object sender, System.EventArgs e)
{
   // If the TextBox is already bold and the form's font changes,
   // change the TextBox to a bold version of the new form font
   if (textBox1.Font.Style == FontStyle.Bold)
   {
      MakeBold();
   }
}

ただし、アプリケーションをローカライズすると、太字のフォントは特定の言語で正しく表示されない場合があります。 この問題が懸念される場合は、フォントを太字から標準テキストに切り替えるオプションをローカライズ担当者に提供することをお勧めします。 通常、ローカライズ担当者は開発者ではなく、ソース コードにアクセスできず、リソース ファイルにしかアクセスできないため、このオプションはリソース ファイルに設定する必要があります。 これを行うには、Bold プロパティを true に設定します。 これにより、フォント設定がリソース ファイルに書き込まれ、ローカライズ担当者がそれを編集できます。 その後、InitializeComponent メソッドの後にコードを記述し、フォームのフォントの内容 (ただしリソース ファイルで指定されたフォント スタイルを使用する) に基づいてフォントをリセットします。

TextBox1.Font = New System.Drawing.Font(Me.Font, TextBox1.Font.Style)
textBox1.Font = new System.Drawing.Font(this.Font, textBox1.Font.Style);

関連項目