Không có độ rộng trung bình cho phông chữ vì kerning có thể có tác dụng tùy thuộc vào chữ cái nào trước và sau bất kỳ chữ cái nào.
Nếu bạn muốn phông chữ có kích thước không cố định được sử dụng trong một kịch bản có chiều rộng cố định, tùy chọn chính của bạn là để khoảng trắng các ký tự theo chiều rộng của chữ hoa "W".
Những người khác đã đưa ra một ví dụ về việc chiều rộng của một chuỗi chỉ định, nhưng để trả lời câu hỏi của bạn, để có được một trung bình thực sự của nhân vật có thể in bạn có thể muốn làm điều gì đó như:
StringBuilder sb = new StringBuilder();
// Using the typical printable range
for(char i=32;i<127;i++)
{
sb.Append(i);
}
string printableChars = sb.ToString();
// Choose your font
Font stringFont = new Font("Arial", 16);
// Now pass printableChars into MeasureString
SizeF stringSize = new SizeF();
stringSize = e.Graphics.MeasureString(printableChars, stringFont);
// Work out average width of printable characters
double average = stringSize.Width/(double) printableChars.Length;
Nguồn
2008-11-21 14:20:05
Heh. Tôi yêu phương pháp vẽ chuỗi đó thành bitmap và sau đó đọc pixel để xem nó thực sự rộng đến mức nào. Không hiệu quả nhưng được đảm bảo hoạt động chính xác. :) – MusiGenesis