derkaan: textbreite

hallo!

ich suche nach einer möglichkeit die textbreite zu ermitteln:
ich brauche die textbreite um die breite eines layers anzupassen.
beispiel:

var fooText = "abcdefghijk...." (<-- wird dynamisch erzeugt)

layer.width = {fooText.width}

gibt es eine lösung für diese problem? ich hatte mir erst überlegt
die textlänge mit einem durchschnittswert zu multiplizieren, aber
das wird zu ungenau.

wäre schön, wenn mir jemand eine lösung wüsste.

grüße,
derkaan

  1. mit laenge = footext.length; ermittelst du die Anzahl der Zeichen im String diese musst du mal die Zeichenbreite nehmen. Und da liegt das problem, da bei den meisten Schriften die Zeichen unterschiedlich breit sind. Ausser bei "Courier" da sind die Zeichen immer gleich breit, glaube ich.

    kevin

    1. mit laenge = footext.length; ermittelst du die Anzahl der Zeichen im String diese musst du mal die Zeichenbreite nehmen.

      hatte mich verschrieben. ich ich meinte mit "fooText.width" eigentlich "footext.length"...
      wie schon erwähnt, der durchschnittswert für die zeichenbreite ist
      halt zu ungenau. dann scheint es wohl keine andere lösung zu geben, ausser man setzt eine andere sprache ein.  schade...

      danke trotzdem!

      grüße
      derkaan

      1. Hallo,

        wie schon erwähnt, der durchschnittswert für die zeichenbreite ist
        halt zu ungenau. dann scheint es wohl keine andere lösung zu geben, ausser man setzt eine andere sprache ein.  schade...

        Ein Ansatz waere das Ausmessen der Textbreite (ggf. Text unsichtbar machen) mit einem entsprechend aufgespannten 1-Pixel-GIF, etwa so:

        <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
        <html>
        <head>
        <title>Test by TM 10/02</title>
        </head>
        <body onload="alert('Textbreite: '+document.images['test'].width+'px')">
        <table border="0">
        <tr><td>Das ist ein Testtext ...</td></tr>
        <tr><td><img src="leer.gif" width="100%" height=1" name="test" alt=""></td></tr>
        </table>
        </body>
        </html>

        BTW: Praktikabler und genauer ist so etwas in SVG ermittelbar, wo es Methoden wie getComputedTextLength() oder getSubstringLength() gibt ...

        MfG, Thomas