Я разыгрываю свои мозги, пытаясь понять несоответствие между размерами шрифтов, которые пользователи выбирают или задают (например, используя FontDialog) и размер em, указанный . Шрифт класс в .NET.Неверный размер шрифта в .NET GDI +?
Например:
using (FontDialog dlg = new FontDialog()) {
if (dlg.ShowDialog() == DialogResult.OK) {
Console.WriteLine("Selected font size: " + dlg.Font.SizeInPoints.ToString("0.##"));
}
}
Используя приведенный выше код, вы получите некоторые запутанные результаты:
Выбор 11 в диалоге производит 11,25
Выбор 12 в диалоге производит 12
Выбор 14 в диалоговом окне производит 14.25
Выбор 16 в диалоговом окне производит 15.75
Это поведение происходит независимо от выбранного шрифта. Как видно из вышеизложенного, в расхождении нет шаблона, оно, по-видимому, изменяется случайным образом между +0,25 и -0,25.
Я обойду это в пользовательских интерфейсах, только когда-либо отображая размер шрифта в виде округленного целого числа, но я клянусь, что видел пакеты обработки текстов/DTP, которые позволяют пользователям выбирать размеры дробных шрифтов - и эти пакеты не показать поведение выше при взаимодействии с диалоговыми окнами шрифтов Windows.
Может ли кто-нибудь дать рациональное объяснение этому? Существует ли наилучшая методика отображения размера шрифта в пользовательском интерфейсе? Как насчет того, когда пользователю нужен дробный размер, такой как «10 .5»?
Так по существу, интегральные размеры в общих диалоговых окнах (и всегда были) приближенные значения ? Я единственный, кто считает это немного озадаченным? :/ Очевидно, нет смысла предлагать моим пользователям размеры дробных шрифтов, поскольку в установленных соглашениях уже есть элемент неточности ... –
@Bradley Smith: Насколько я понимаю, да. Но это может быть другим, если вы запустите свой монитор с другой настройкой DPI. Я предлагаю вам поиграть с ним, не получив ответов, спросите у себя самих МС. – leppie