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);