Fontes Internacionais nos Formulários do Windows e Controles

Em aplicativos internacionais o método recomendado de selecionar fontes é usar Font Fallback sempre que possível. Font fallback significa que o sistema determina a qual script pertence o caractere.

Usando Font Fallback

Para aproveitar este recurso, não defina a propriedade Font no seu formulário ou qualquer outro elemento. O aplicativo utilizará automaticamente a fonte padrão do sistema, que difere de um idioma localizado do sistema operacional para outro. Quando o aplicativo é executado, o sistema fornecerá automaticamente a fonte correta para a cultura selecionada no sistema operacional.

Há uma exceção à regra de não configurar a fonte, que é ao alterar o estilo da fonte. Isso pode ser importante para um aplicativo no qual o usuário clica em um botão para tornar o texto de uma caixa de texto em negrito. Para fazer isso, escreva uma função para alterar o estilo da fonte da caixa de texto para negrito, com base em qualquer que seja a fonte do formulário. É importante chamar essa função em dois lugares: o botão Click manipulador de eventos e na FontChanged manipulador de eventos. Se a função é chamada apenas no manipulador de eventos Click e alguma outra parte do código altera a família de fontes do formulário inteiro, a caixa de texto não será alterada com o resto do formulário.

' Visual Basic
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

// C#
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();
   }
}

No entanto, quando você torna o aplicativo local, a fonte em negrito pode ser exibida de maneira distorcida em determinados idiomas. Se esta é uma preocupação, convém que os localizadores tenham a opção de alternar a fonte de negrito para texto regular. Como localizadores tipicamente não são desenvolvedores e não tem acesso ao código-fonte, apenas a arquivos de recurso, essa opção precisa ser definida nos arquivos de recurso. Para fazer isso, defina a propriedade Bold como true. Isso resulta em a configuração da fonte ser gravada nos arquivos de recursos, onde localizadores podem editá-lo. Escreva código então após o método InitializeComponent para redefinir a fonte com base em qualquer que seja a fonte do formulário, mas usando o estilo de fonte especificado no arquivo de recurso.

' Visual Basic
TextBox1.Font = New System.Drawing.Font(Me.Font, TextBox1.Font.Style)

// C#
textBox1.Font = new System.Drawing.Font(this.Font, textBox1.Font.Style);

Consulte também

Outros recursos

Globalizando Formulários do Windows

Usando fontes e texto