Шрифт в GraphicsPath.AddString меньше обычного - PullRequest
6 голосов
/ 19 февраля 2010

По какой-то причине, если я добавлю строку в GraphicsPath , используя AddString , шрифт будет меньше, чем выглядит в диалоге шрифтов.

  SizeF sz = g.MeasureString(Text, new Font(Font.FontFamily, (int)(Font.Size - (Font.Size / 7)), Font.Style), new PointF(0, 0), StringFormat.GenericDefault);

  this.Size = new Size((int)sz.Width, (int)sz.Height);
  //These are not the same
  fontpath.AddString(this.Text, this.Font.FontFamily,(int)this.Font.Style, this.Font.Size, new Point(0, 0),StringFormat.GenericDefault);

Кто-нибудь знает, почему он это делает?

Ответы [ 2 ]

20 голосов
/ 19 февраля 2010

Предполагая, что юнит вашего Font.Size равен Point, вы должны преобразовать переданный вами размер в AddString в emSize (высота квадрата em, ограничивающего символ).

float emSize = graphics.DpiY * font.Size / 72;
2 голосов
/ 30 октября 2015
float emSize = graphics.DpiY * font.SizeInPoints / 72;
...