Разница между .NET и Java связана с различными предположениями о разрешении экрана..NET работает с 96dpi, Java с 72dpi.То есть, если вы спросите Java о шрифте 12pt, он будет иметь другой размер на экране, чем если бы вы спросили .NET для того же шрифта.На бумаге они будут одинаковыми.
Если вы преобразуете свои результаты в мм (или дюймы), вы обнаружите, что они одинаковы, за исключением потери точности из-за округления.
Я также проверил числа, напечатав несколько строк цифр из Microsoft Word и измерив их.Такая проверка реальности часто помогает.
Вы можете измерить длину текста в .NET довольно забавно.Почему бы не сделать это так:
using System;
using System.Drawing;
namespace Codo
{
class Program
{
static void Main(string[] args)
{
Bitmap bitmap = new Bitmap(100, 100);
Graphics graphics = Graphics.FromImage(bitmap);
graphics.PageUnit = GraphicsUnit.Pixel;
StringFormat strFormat = new StringFormat(StringFormat.GenericTypographic);
for (int fontSize = 11; fontSize <= 20; fontSize++)
{
Font font = new Font("Arial", fontSize, FontStyle.Regular);
float digitWidth = graphics.MeasureString("00000000", font, 1000, strFormat).Width / 8;
font.Dispose();
Console.WriteLine("Width of digit 0 for {0} {1}pt: {2} (96dpi)", font.FontFamily.Name, font.SizeInPoints, digitWidth);
digitWidth = digitWidth / 96 * 72;
Console.WriteLine("Width of digit 0 for {0} {1}pt: {2} (72dpi)", font.FontFamily.Name, font.SizeInPoints, digitWidth);
}
graphics.Dispose();
bitmap.Dispose();
}
}
}