Не существует строго средней ширины для шрифтов, поскольку кернинг может оказывать влияние в зависимости от того, какие буквы находятся до и после любой данной буквы.
Если вы хотите использовать шрифты не фиксированного размера, используемые в сценарии с фиксированной шириной, ваш основной вариант - разместить символы по ширине символа W в верхнем регистре.
Другие уже приводили пример получения ширины указанной строки, но чтобы ответить на ваш вопрос, чтобы получить истинное среднее число печатаемых символов, вы можете захотеть сделать что-то вроде:
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;