Re[4]: Вопрос по измерению фонтов
От: Andrej-V  
Дата: 13.05.08 22:48
Оценка:
Здравствуйте, 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
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.