"optische" länge von strigs bestimmen

RealScorp

Mitglied
Hallo, ich habe folgendes Problem:

Ich code grade an einer seite mit ua. Kommentarbereich. Jetzt soll auf der Hauptseite zb eine News angezeigt werden, und drunter die letzten 3 kommentare von usern dazu.
Jetzt solleen diese 3 "Vorschauen" aber die länge einer zeile nicht überschreiten.
Jetzt kann man natürlich mit strlen eine bestimmte anzahl von zeichen abschneiden, aber wenn man das macht dann sieht das zb wenn man 40 zeichen nimmt so aus:

iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii

mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm

Das ist natürlich ein _kleiner_ Unterschied. Gibt es eine möglichkeit das bei dem Abschneiden auch in betracht zu ziehen?
 
In den Grafikfunktionen (gd) von PHP gibt es einige Funktionen, welche die Textbreite ermitteln können.
Jedoch erstellst Du dann erstmal ein Image, lädst einen Font (der sich dann idealerweise auf dem Server befindet) und prüfst einen String.
Und das alles für eine HTML-Textausgabe...
Grafikfunktionen sind nicht sonderlich effizient und der User verstellt auch mal seine Schriftgröße.
Ich würde es dabei belassen, die Anzahl der Buchstaben zu ermitteln.
Es stehen in einem Titel ja nicht nur m oder nur i. Und wenn ein gewisser Mix an Buchstaben da ist, hast Du immerhin eine Näherung. Wie breit der Text beim User wirklich ist wirst Du nicht ermitteln können.

Gruß hpvw
 
Naja die Schriftgröße kann der user nicht mehr verändern wenn sie mit CSS festgelegt ist ;)

Naja habe mir fast gedacht das das nicht geht. Das mit Bild erstellen ist glaube ich etwas aufwendig.

Was mir noch gekommen ist ist dass man ein Array festlegen könnte das jedem Buchstaben eine Pixelbreite zuordnet und dann den String da durchjagt aber das ist auch schon ein bisschen umständlich, vielleicht kann ich mich aber doch dazu durchringen, mal sehen ;-)
 
RealScorp hat gesagt.:
Naja die Schriftgröße kann der user nicht mehr verändern wenn sie mit CSS festgelegt ist ;)
Nenn' mir eine CSS-Anweisung/Maßeinheit, die es verhindert, dass ich in Firefox meine Schriftgröße verändern kann.
Allerdings ist es auch das letzte, was man tun sollte, den User in dieser Weise zu bevormunden.
Aber dazu gibt es schon diverse Beiträge im HTML und CSS Forum.
Die Variante mit dem Array ist vermutlich die schnellere Variante, als mit der gd.
Du must Dir für jede Schriftart und Größe und Fett/Kursiv halt jedesmal einmal die Arbeit machen.
Aber ich bin mir sicher, dass Du meinem Firefox nicht das verändern verbieten kannst.
Meine Lieblingstastenkombination sind Strg + und Strg - :-)

Gruß hpvw
 
mir ist durchaus klar das man vielleicht mit firefox oder alternativbrowsern die schriftgröße die per css festgelegt ist vielleicht overriden kann.
Darum gehts aber nciht, es reicht wenn das erste mal wenn die Seite geladen ist die schrift so ist wie sie in der CSS festgelegt ist. Wenn der user dann unbedingt rumspielen muss ist es eh egal ob das nicht zu lang ist, weil der damit dann das ganze design verpfuschen wird wenn er zb die schrift größer macht!
Deshalb werde ich von dem ausgehen was in der CSS definiert ist
 
Ich würde dir empfehlen, dein Design nochmal zu überdenken, weil die Darstellung einer Seite nicht von der Schriftgröße / Schriftart abhängig sein soll. Du hast schließlich keinen Einfluss darauf, welche Schriftart und Schriftgröße der Client zur Anzeige von Text verwendet.
 
Oliver Gringel hat gesagt.:
Ich würde dir empfehlen, dein Design nochmal zu überdenken, weil die Darstellung einer Seite nicht von der Schriftgröße / Schriftart abhängig sein soll. Du hast schließlich keinen Einfluss darauf, welche Schriftart und Schriftgröße der Client zur Anzeige von Text verwendet.


nein das ist nict möglich. nur als beispiel wenn du ein loginfeld hast und da eine schrift drin hast und die auf einmal 78 px groß ist dann ist das design natürlich ferhunzt.
Das halte ich auch für kompletten Schwachsinn, nenn mir eine homepage bei der man die größe ändern kann wie man will und das alles noch schön so bleibt wie es soll...
 
http://www.dfclan.2in.de/tutde.jpg

ah ja alles klar klappt ja wirklich gut...
Ausserdem änderst du nicht die Schriftgröße sondern vergrößerst die Seite das ist ein Unterschied!

Das soll jetzt hier in keine Grundsatzdiskussion ausarten, weil das was du angeführt hast eigendlich überhaupt nichts mit meiner Frage zu tun hat, da die sich auf eine festgelegte Schriftart/Größe (und deren Einhaltung) bezogen hat.

Aber trotzdem danke für die Antworten
 
Und was hat sich bei deinem Screenshot jetzt geändert, außer die Schriftgröße? Ok, an der einen Stelle überlappen sich 2 Schriften. Das sollte natürlich nicht passieren, aber ansonsten schaut die Seite genauso aus, wie bei einer kleineren Schriftgröße.

Und wie bereits erwähnt, hast du keinen Einfluss darauf, wie der Browser deine Schrift anzeigt. Du kannst zwar per CSS die Schrift-Familie und Schriftgröße angeben, aber wie die Schriftart dann genau aussieht, hängt einfach vom Browser ab.
 
Zurück