Es gibt nicht unbedingt eine durchschnittliche Breite für Schriftarten, da Kerning eine Auswirkung haben kann, je nachdem, welche Buchstaben vor und nach einem gegebenen Buchstaben stehen.
Wenn Sie nicht fixierte Schriftarten in einem Szenario mit fester Breite verwenden möchten, besteht Ihre Hauptoption darin, die Zeichen mit der Breite des Großbuchstabens "W" zu belegen.
Andere haben bereits ein Beispiel bekommen die Breite einer bestimmten Zeichenfolge gegeben, aber Ihre Frage zu beantworten, ein den tatsächlichen Durchschnitt druckbare Zeichen erhalten Sie so etwas wie tun wollen könnte:
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;
Heh. Ich liebte die Methode, die Zeichenkette tatsächlich zu einer Bitmap zu zeichnen und dann Pixel zu lesen, um zu sehen, wie breit sie wirklich ist. Ineffizient, aber garantiert genau zu arbeiten. :) – MusiGenesis