Здравствуйте, vmpire,
Спасибо. Непонятно в каких едмницах Font.Height (=16)?
И что такое 10 в Font f = new Font("Arial", 10); (это не равно ascent+descent пересчитанных в пиксели=11,17187463)
lineSpacing пересчитанное в пиксели равно 11.4990234 — это не равно ни 10 ни 16.
//g -объект Graphics
g.PageUnit = GraphicsUnit.Pixel;
float scale = g.PageScale;//1.0
float xdpi = g.DpiX;//96.0 - количество пикселей на логический дюйм по горизонтали
float ydpi = g.DpiY;//96.0 - количество пикселей на логический дюйм по вертикали
Font f = new Font("Arial", 10);
int fHeight = f.Height;//16
int lineSpacing = f.FontFamily.GetLineSpacing(FontStyle.Regular);//2355 Design units
int EmHeight = f.FontFamily.GetEmHeight(FontStyle.Regular);//Design units 2048
float lineSpacingPixel = f.Size * lineSpacing / f.FontFamily.GetEmHeight(FontStyle.Regular);//11.4990234
//11.4990234 --высота шрифта в пикселях
int ascent = f.FontFamily.GetCellAscent(FontStyle.Regular);//Design units 1854 (не зависит от буквы)
int descent = f.FontFamily.GetCellDescent(FontStyle.Regular);//Design units 434 (не зависит от буквы)
float ascentPixel = f.Size * ascent / f.FontFamily.GetEmHeight(FontStyle.Regular);//9.052734
float descentPixel = f.Size * descent / f.FontFamily.GetEmHeight(FontStyle.Regular);//2.11914063
//ascentPixel+descentPixel =11,17187463