Philipp Grashoff: textlänge ermitteln

Beitrag lesen

Hi Jens,

über so eine Funktion habe ich mir ausch schon Gedanken gemacht...
nun, so schwierig ist es garnicht einmal, es ist nur sehr viel Arbeit:
man schreibt einfach erstmal alle Zeichen in einer Schrift (die, die das menue sein soll, auch die richtige schriftgroeße), macht einen Screenshot und findet per Bildbearbeitungsprogramm raus, wieviel px jedes Zeichen verbraucht. Wenn man es allgemeiner machen will, kann man sich auch noch etwas mehr arbeit machen, ein HTML-Menue erstellen, in dem man Schriftgroeße und Art (als erweiterung: z.B. schriftdicke) wählen kann. Anschließend erzeugt das Script eine HTML-Datei, in der in z.B. divs mit padding:0px und margin:0px z.B. 10 mal ein Zeichen der gewünschten Schrift reingeschrieben wird, und das fuer jedes Zeichen. Dann ermittelt man in dieser Datei mit Javascript die breite jeden Divs, teilt diese durch 10 und man hat die breite jedes Zeichens dieser Schriftart in dieser Groeße. Per Javascript wird dann das ganze an ein PhP-Script weitergeleitet, wo die werte Gespeichert werden.

Nun der 2te Teil: die Funktion zum ermittlen:
Gar nicht so schwer, man muss bloß die Breite der einzelnen Zeichen addieren, z.B.

$laenge = 0;
function get_laenge($eingabe,$schriftart,$schriftgroesse) {
 for($i=0;$i<strlen(trim($eingabe));$i++) {
  //Hier:Verweis auf eine Funktion, die die länge des Zeichens in px zurückgibt, z.B.
  $laenge += get_px($eingabe[$i],$schriftart,$schriftgroesse);
 }
}

Und das wars dann schon, $laenge ist dann die laenge des Strings in PX in der gewuenschten Schriftart und Größe.

Wenn du willst, koennen wir diese Funktion ja zusammen realisieren (in PhP waer mir am liebsten, von allen anderen Sprachen hab ich wenig Ahnung). Ich bin mir sicher, dass auch noch andere Aus dem Forum mitarbeiten würden, da wir sicherlich nicht die einzigen sind, die die länge eines Strings in px bei bekannter Schriftart und Größe wissen wollen.
Falls du interesse an einer gemeinsamen Verwirklichung hast, schreib doch einfach hier zurück ;)

MFG

Philipp