Несоответствие размера шрифта в .NET GDI +?

Я ломаю себе голову, пытаясь понять несоответствие между размеры шрифта, которые пользователи выбирают или задают (например, используя FontDialog ), и размер em, сообщаемый классом Font в .NET.

Например:

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»?

8
задан Bradley Smith 23 August 2010 в 08:37
поделиться

1 ответ

в несоответствии нет закономерности

Как видите, размер шрифта задается с шагом 0,75.

Изменить: вы можете точно настроить размеры, если не используете диалог шрифтов, но результаты, как я подозреваю, будут менее приятными, чем «предпочтительные» размеры.

1
ответ дан 5 December 2019 в 12:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: