次のコードを完了すると、"font1" が通常で "font2" が太字であるにもかかわらず、"result1" 変数と "result2" 変数 (測定された文字列の幅) の値は同じになります。興味深いことに、このエラーはフォント「Times New Roman」と「Arial」で表示されます。たとえば、フォント「Calibri」の戻り値は正しく、変数「result2」の値は変数「result1」の値よりも大きくなります。なぜこうなった?
using (System.Drawing.Graphics graphics = System.Drawing.Graphics.FromHwnd(IntPtr.Zero))
{
graphics.PageUnit = System.Drawing.GraphicsUnit.Pixel;
graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;
System.Drawing.Font font1 = new System.Drawing.Font("Arial", 10.0f, System.Drawing.FontStyle.Regular);
System.Drawing.Font font2 = new System.Drawing.Font("Arial", 10.0f, System.Drawing.FontStyle.Bold);
float result1 = graphics.MeasureString("WWW", font1, int.MaxValue, System.Drawing.StringFormat.GenericTypographic).Width;
float result2 = graphics.MeasureString("WWW", font2, int.MaxValue, System.Drawing.StringFormat.GenericTypographic).Width;
}