Несовместимый рендеринг шрифтов .Net - PullRequest
3 голосов
/ 22 декабря 2009

Я создаю приложение Windows Forms для .Net 2.0 SP2. Шрифты формы отлично смотрятся на моей машине, когда я пробовал на другой машине, она выглядит больше. (Это не из-за разницы в разрешении, шрифты больше по сравнению с другими значками и т. Д.)

Я попытался отладить проблему и обнаружил, что следующий код возвращает разные размеры на разных компьютерах.

//inside a windows form
private void checkfont()
{
    var g = this.CreateGraphics();
    MessageBox.Show(g.MeasureString("Hello World", this.Font) + "," + this.Font);
}

Я ожидаю, что graphics.measurestring () вернет одно и то же значение для одних и тех же аргументов на разных машинах.

Для шрифта 'Verdana 8.25'

  • На машине 1 «Hello World» имеет размер 69.0px, 14.7px
  • На машине 2 "Hello World" имеет размеры 86,3 пикселя, 18,4 пикселя

Почему эта разница? из-за этого шрифты моего приложения выглядят больше и влияют на макет.

alt text alt text

редактирование:

Обе машины имеют .Net 2.0 SP2, но их разрешение и размеры экрана различаются. Я понимаю, что физическое измерение шрифтов (на физическом экране) зависит от разрешения и размера экрана. Но мой вопрос, почему их размерность в пиксельных единицах отличается?

Machine 2 - eeetop ET1602 с windows xp, системой сенсорного экрана, по умолчанию она поставляется со всеми настольными шрифтами большего размера, но я по умолчанию сбросил шрифты windows / windows.

Ответы [ 2 ]

4 голосов
/ 22 декабря 2009

Когда вы выделяете «Verdana 8.25», эти 8.25 не имеют ничего общего с пикселями напрямую, вместо этого они считаются «точками» и будут отображаться по-разному на разных компьютерах, если Screen DPI отличается.

В Windows в настройках рабочего стола вы можете увеличить размер шрифта экрана без изменения разрешения. Если вы увеличиваете размер шрифта на экране, то меняется точка на пиксель, что позволяет измерять разный размер пикселя для одного и того же текста на другом компьютере.

Это связано с тем, что пожилые люди не могут читать мелкие шрифты, поэтому они могут увеличить размер шрифта в настройках рабочего стола. И вы можете указывать размер шрифта только в точках. Если размер шрифта будет фиксирован в пикселях, старым людям или людям с нарушениями зрения будет трудно правильно читать текст. Таким образом, размер текста всей операционной системы контролируется пользователем.

1 голос
/ 22 декабря 2009

Похоже, масштабирование шрифта DPI установлено на "большие шрифты"?

EDIT
См. Ответ Акаша Кавы - он более подробно расскажет о настройке «больших шрифтов».

...