通常の環境で GraphicsPath.AddString
と Graphics.DrawString
で同じサイズを与えて描画した文字列を比べると,前者の方が小さく表示されます。これはフォントサイズの単位が両者で異なることに起因します。
Font.Size
プロパティでは普通ポイント単位での大きさなので, DPI を取得してピクセル単位に変換してやれば OK です。
float sizeInPixels = font.SizeInPoints * g.DpiY / 72; // 1 inch = 72 points
path.AddString(s, font.FontFamily, (int)font.Style, sizeInPixels, PointF.Empty, null);