Mazze: Textmenge analysieren

Hallo alle zusammen!

Folgendes Problem:

Auf einer Webseite mit Portalcharakter soll in vielen kleineren Tabellenfeldern (fester Größe, wegen Hintergrundbild) der Anfang von Artikeln oder Nachrichten o.ä. dargestellt werden. Ist das Feld voll (die maximale Textmenge erreicht), sollte dann der Text abgebrochen werden durch einen link:  ...mehr>>>

Jetzt also die Frage: Wie ermittle ich mehr oder weniger zuverlässig die Textmenge, d.h. wo wird umgebrochen, wann ist die maximale Grenze (Zeilenanzahl) erreicht. Sehr ausführlich wäre es, in php oder perl assoz. arrays zu erstellen, die die jeweiligen Buchstaben ihren Pixelbreiten zuordnen - klingt aber schon bei Schreiben irgendwie umständlich, oder?

Hat jemand damit Erfahrung, gibt es vielleicht so etwas wie einen zuverlässigen Mittelwert oder kennt jemand ein Tut zu Buchstabengrößen o.ä.?

Vielen Dank für die Hilfe, ich könnte mir vorstellen, das schon andere mit diesem Problem gekämpft haben.

Mazze

PS: Zusatzfrage - Gibt es eine Technik, bei der (für "justify") Wortumbrüche an "-" erzwungen werden können?

  1. Hallo Matze

    Du kannst letztenendes nie genau wissen, wieviel Platz ein Zeichen im Browser nacher brauchen wird. Ich würde einfach die Anzahl der Zeichen beschränken und das Layout so gestalten, dass es die entstehenden Abweichungen in der Textlänge toleriert.

    Grüße

    Daniel

  2. Hallo alle zusammen!

    Folgendes Problem:

    Auf einer Webseite mit Portalcharakter soll in vielen kleineren Tabellenfeldern (fester Größe, wegen Hintergrundbild) der Anfang von Artikeln oder Nachrichten o.ä. dargestellt werden. Ist das Feld voll (die maximale Textmenge erreicht), sollte dann der Text abgebrochen werden durch einen link:  ...mehr>>>

    Jetzt also die Frage: Wie ermittle ich mehr oder weniger zuverlässig die Textmenge, d.h. wo wird umgebrochen, wann ist die maximale Grenze (Zeilenanzahl) erreicht. Sehr ausführlich wäre es, in php oder perl assoz. arrays zu erstellen, die die jeweiligen Buchstaben ihren Pixelbreiten zuordnen - klingt aber schon bei Schreiben irgendwie umständlich, oder?

    Ganz generell geantwortet: Das verlangte ist unmöglich. Für die Darstellung am Bildschirm ist der Browser zuständig. Der verfügt nur über installierte Schriften, und deren Aussehen kennst du nicht.

    Es gehört zum Lerninhalt der ersten Stunde der ersten Woche im ersten Semester HTML, daß variabler Content nicht in feste Größen passen MUSS, es sei denn, es ist wesentlich mehr Platz vorhanden, als der Content groß wird. Mit anderen Worten: Wenn du den Text in eine Zelle fester Breite UND Höhe packen willst, geht das Vorhaben schief, es sei denn, du hast entsprechende Sicherheitsreserven. Pixelgenau geht es auf keinen Fall.

    Aber du bist nicht ganz verloren. PHP bietet eine Funktion "wordwrap" an. Die hilft dir zwar nicht, aber bei http://www.php.net/manual/en/function.wordwrap.php gibt es einen netten Userkommentar mit einer Funktion, die eine definierbare Anzahl von Worten zurückliefert. Damit kann man längeren Text recht simpel begrenzen.

    function cut_string($string_to_cut, $number_words,
    $append="..")
    {
    $string = explode(" ", $string_to_cut);
    for($x=0; $x < $number_words; $x++)
    {
    $string_return .= $string[$x] . " ";
    }
    $string = substr($string_return, 0, -1);
    $return_string = $string.$append;
    return($return_string);
    }
    Usage:
    print(cut_string("This is a test",2));

    Du kannst natürlich auch die Anzahl der Buchstaben begrenzen, allerdings spielt dir dann der Umbruch im Browser einen Streich, wenn gerade ein ziemlich langes Wort gerade nicht mehr in die Zeile paßt - es wird dadurch in der ersten Zeile viel Platz gelassen, der ungenutzt verfällt.

    Wie gesagt: Mit genügend Sicherheitsreserve im Feld kein Problem.

    PS: Zusatzfrage - Gibt es eine Technik, bei der (für "justify") Wortumbrüche an "-" erzwungen werden können?

    Es gibt das Tag <wbr> (Word Break), welches dem Browser sagt, daß er an dieser Stelle das Wort umbrechen kann.

    Vorteile:

    • User-Definierbare Wortumbruchstellen.
      Nachteile:
    • Nicht W3C-definiertes Tag, in keinem Standard enthalten.
    • Wird von vielen Browsern nicht interpretiert.
    • Für die Trennzeichen muß man selbst sorgen, es bietet sich also nicht als "variable Trennstelle" an, die im Trennfall automatisch Trennstriche erzeugt.

    Mit anderen Worten: Das,was du willst, geht nicht. Aus diesem Grunde ist die Formatierung "justify" für Webtexte eher ungeeignet, da sich bei relativ großer Schriftart und relativ kurzen Zeilen zwangsläufig relativ breite Leerzeichen ergeben, die relativ schwer zu lesen sind. Linksbündige Texte haben das Problem nicht.

    - Sven Rautenberg