Estoy tratando de entender la discrepancia entre los tamaños de fuente que los usuarios seleccionan o especifican (por ejemplo, usando FontDialog) y el tamaño em reportado por la clase Font en .NET.¿Discrepancia de tamaño de fuente en .NET GDI +?
Por ejemplo:
using (FontDialog dlg = new FontDialog()) {
if (dlg.ShowDialog() == DialogResult.OK) {
Console.WriteLine("Selected font size: " + dlg.Font.SizeInPoints.ToString("0.##"));
}
}
Usando el código anterior, obtendrá unos resultados confusos:
Selección 11 en el cuadro de diálogo produce 11,25
Selección 12 en el cuadro de diálogo produce 12
Seleccionar 14 en el cuadro de diálogo produce 14.25
Seleccionar 16 en el cuadro de diálogo produce 15.75
Este comportamiento se produce independientemente de la fuente que elija. Como puede ver desde arriba, no hay un patrón en la discrepancia, parece variar aleatoriamente entre +0.25 y -0.25.
Me muevo por esto en las interfaces de usuario solo mostrando el tamaño de la fuente como un número entero redondeado, pero juro que he visto paquetes de procesamiento de texto/DTP que permiten a los usuarios seleccionar tamaños de fuente fraccionarios, y estos paquetes no muestra el comportamiento anterior al interactuar con cuadros de diálogo de fuente de Windows.
¿Alguien puede proporcionar una explicación racional para esto? ¿Existe una técnica de mejores prácticas para mostrar el tamaño de fuente en una UI? ¿Qué tal si el usuario quiere un tamaño fraccionario como '10 .5 '?
Así que, esencialmente, los tamaños integrales en los cuadros de diálogo comunes son (y siempre han sido) valores aproximados ? ¿Soy el único que encuentra esto un poco desconcertante? :/ Obviamente no tiene sentido ofrecer a mis usuarios tamaños de fuente fraccionarios, ya que ya existe un elemento de imprecisión en las convenciones establecidas ... –
@Bradley Smith: Por lo que entiendo, sí. Pero esto podría ser diferente si ejecuta su monitor en una configuración diferente de DPI. Te sugiero que juegues con él, sin obtener respuestas, pregúntaselo a los mismísimos MS. – leppie