Fuentes internacionales en formularios Windows Forms y controles

En las aplicaciones internacionales, el método recomendado para seleccionar fuentes es usar la reserva de fuentes siempre que sea posible. La reserva de fuentes significa que el sistema determina a qué script pertenece el carácter.

Uso de la reserva de fuentes

Para aprovechar esta característica, no establezca la propiedad Font del formulario ni de ningún otro elemento. La aplicación usará automáticamente la fuente predeterminada del sistema, que difiere de un idioma localizado del sistema operativo a otro. Cuando se ejecuta la aplicación, el sistema proporcionará automáticamente la fuente correcta para la referencia cultural seleccionada en el sistema operativo.

Hay una excepción a la regla de no establecer la fuente, que es para cambiar el estilo de fuente. Esto puede ser importante para una aplicación en la que el usuario hace clic en un botón para que el texto de un cuadro de texto aparezca en negrita. Para ello, escribiría una función para cambiar el estilo de fuente del cuadro de texto a negrita, en función de la fuente del formulario. Es importante llamar a esta función en dos lugares: en el controlador de eventos Click del botón y en el controlador de eventos FontChanged. Si solo se llama a la función en el controlador de eventos Click y algún otro fragmento de código cambia la familia de fuentes de todo el formulario, el cuadro de texto no cambia con el resto del formulario.

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

Sin embargo, al localizar la aplicación, la fuente en negrita podría mostrarse mal para determinados idiomas. Si le preocupa, quiere que los localizadores tengan la opción de cambiar la fuente de negrita al texto normal. Dado que los localizadores normalmente no son desarrolladores y no tienen acceso al código fuente, solo a los archivos de recursos, esta opción debe establecerse en los archivos de recursos. Para hacerlo, establecería la propiedad Bold en true. Esto da como resultado la configuración de fuente que se escribe en los archivos de recursos, donde los localizadores pueden editarla. A continuación, escriba código después del método InitializeComponent para restablecer la fuente en función de la fuente del formulario, pero con el estilo de fuente especificado en el archivo de recursos.

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

Consulte también