<p>In den vergangenen Monaten habe ich schon viel über Canvas geschrieben. Doch etwas fehlte mir um damit umfassendere, grapfische Projekte umzusetzen: Die Möglichkeit Text zu integrieren.</p>
<p>Methoden zum Darstellen von Text sind in den (vorläufigen) <a class="previewlink" href="http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html#text">Spezifikationen des Canvas-Elementes</a> bereits vorgesehen.</p>
<p>Aktuelle Versionen von Webkit, Safari4 (Beta), Chrome 2 (Beta) und <a class="previewlink" href="https://developer.mozilla.org/En/Firefox_3.5_for_developers#New_Canvas_features">Firefox 3.5</a> (Beta) implementieren die Canvas-Text-Methoden, doch für die breite Masse eingesetzter Browser gilt dies nicht.</p>
<p>Die Lösung liefert ein Javascript-Bibliothek mit dem einfachen und treffenden Namen <a class="previewlink" href="http://code.google.com/p/canvas-text/">canvas-text.</a></p>
<p>Diese Bibliothek fügt die drei HTML5-Methoden zum Zeichnen von Text in Canvas (strokeText, fillText und measureText) den Browsers hinzu, die diese Funktionen nicht von Haus aus beherrschen (Firefox 2/3.0, Internet Explorer 6+, Opera 9+, Safari 3 und Chrome 1.0).</p>
<p>Canvas-text wurde so umgesetzt, dass es die Richtlinien des W3C und des WHATWG für das canvas-Elemente nach HTML5 erfüllt. Außer der <a href="http://www.ajaxschmiede.de/javascript/explorercanvas-erfaehrt-ie8-update/">ExCanvas</a>-Bibliothek für den Internet Explorer und der canvas.text.js-Datei werden keine anderen Dateien benötigt.</p>
<p>Vorhandene browser-spezifische Implementierungen werden nicht überschrieben, es sei denn, man gibt dies explizit an.</p>
<p>Der Einbau sieht wie folgt aus:</p>
<!--[if IE]><script type="text/javascript" src="excanvas.js" /><![endif]-->
<script type="text/javascript" src="canvas.text.js" />
<p>Um canvas.text auch zu nutzen,benötigt man nun noch Schriftarten. <a class="previewlink" href="http://typeface.neocracy.org/fonts.html">Typeface.js</a> bietet einige Font-Files an. Eine größere Auswahl gibt es bei <a class="previewlink" href="http://www.madasplayground.com/fonts/">Mada’s Playground</a>. Diese müssen unbedingt in einem Ordner mit dem Namen faces abgelegt werden, der sich im selben Verzeichnis wie die Datei canvas.text.js befindet.</p>
<p>Zudem gilt es zu beachten:</p>
<p>Der Dateiname canvas.text.js darf NICHT geändert werden!</p>
<p>Die Schriftartendateien müssen klein geschrieben werden und dem Format family-weight-style.js entsprechen. Family gibt den Namen der Schriftart an wie Arial oder Times new roman, weight steht für die Stärke (bold [=fett] oder normal) und style für den Stil (italic [=kursiv] oder normal).</p>
<p>Bei Schriften mit mehreren Wörtern werden die Leerzeichen durch Unterstriche ( _ ) ersetzt.</p>
<p>Hier ein korrektes Beispiel: optimer-normal-normal.js</p>
<p>Die Schriftarten-Dateien müssen nicht explizit eingebunden werden. Dies geschieht per Ajax zur Laufzeit.</p>
<p>Die browsereigenen canvas.text-Umsetzungen lassen sich per Schalter deaktivieren. Dafür ist folgender Aufruf geeignet:</p>
<script type="text/javascript" src="canvas.text.js?reimplement=true" />
<p>Auf der Projektseite von canvas.text finden sich 5 <a href="http://canvas-text.googlecode.com/svn/trunk/examples/index.html">Live-Demos</a>, die die Möglichkeiten aufzeigen. Ein Blick in den Quellcode zeigt auch einige Kniffe zur Umsetzung.</p>
<p>Zu guter letzt noch ein Codeschnipsel, wie man in Canvas dann damit umgeht:</p>
canvas.font = "20px 'optimer'";
canvas.strokeStyle = "rgb(0,0,200)";
canvas.textAlign = 'left';
canvas.textBaseline = 'middle';
canvas.fillText('Ein normaler Beispieltext ...', 150, 100);
canvas.font = "bold 25px 'optimer'";
canvas.strokeText('... und noch ein fetter Beispieltext', 150, 200);
<p>Methoden zum Darstellen von Text sind in den (vorläufigen) <a class="previewlink" href="http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html#text">Spezifikationen des Canvas-Elementes</a> bereits vorgesehen.</p>
<p>Aktuelle Versionen von Webkit, Safari4 (Beta), Chrome 2 (Beta) und <a class="previewlink" href="https://developer.mozilla.org/En/Firefox_3.5_for_developers#New_Canvas_features">Firefox 3.5</a> (Beta) implementieren die Canvas-Text-Methoden, doch für die breite Masse eingesetzter Browser gilt dies nicht.</p>
<p>Die Lösung liefert ein Javascript-Bibliothek mit dem einfachen und treffenden Namen <a class="previewlink" href="http://code.google.com/p/canvas-text/">canvas-text.</a></p>
<p>Diese Bibliothek fügt die drei HTML5-Methoden zum Zeichnen von Text in Canvas (strokeText, fillText und measureText) den Browsers hinzu, die diese Funktionen nicht von Haus aus beherrschen (Firefox 2/3.0, Internet Explorer 6+, Opera 9+, Safari 3 und Chrome 1.0).</p>
<p>Canvas-text wurde so umgesetzt, dass es die Richtlinien des W3C und des WHATWG für das canvas-Elemente nach HTML5 erfüllt. Außer der <a href="http://www.ajaxschmiede.de/javascript/explorercanvas-erfaehrt-ie8-update/">ExCanvas</a>-Bibliothek für den Internet Explorer und der canvas.text.js-Datei werden keine anderen Dateien benötigt.</p>
<p>Vorhandene browser-spezifische Implementierungen werden nicht überschrieben, es sei denn, man gibt dies explizit an.</p>
<p>Der Einbau sieht wie folgt aus:</p>
<!--[if IE]><script type="text/javascript" src="excanvas.js" /><![endif]-->
<script type="text/javascript" src="canvas.text.js" />
<p>Um canvas.text auch zu nutzen,benötigt man nun noch Schriftarten. <a class="previewlink" href="http://typeface.neocracy.org/fonts.html">Typeface.js</a> bietet einige Font-Files an. Eine größere Auswahl gibt es bei <a class="previewlink" href="http://www.madasplayground.com/fonts/">Mada’s Playground</a>. Diese müssen unbedingt in einem Ordner mit dem Namen faces abgelegt werden, der sich im selben Verzeichnis wie die Datei canvas.text.js befindet.</p>
<p>Zudem gilt es zu beachten:</p>
<p>Der Dateiname canvas.text.js darf NICHT geändert werden!</p>
<p>Die Schriftartendateien müssen klein geschrieben werden und dem Format family-weight-style.js entsprechen. Family gibt den Namen der Schriftart an wie Arial oder Times new roman, weight steht für die Stärke (bold [=fett] oder normal) und style für den Stil (italic [=kursiv] oder normal).</p>
<p>Bei Schriften mit mehreren Wörtern werden die Leerzeichen durch Unterstriche ( _ ) ersetzt.</p>
<p>Hier ein korrektes Beispiel: optimer-normal-normal.js</p>
<p>Die Schriftarten-Dateien müssen nicht explizit eingebunden werden. Dies geschieht per Ajax zur Laufzeit.</p>
<p>Die browsereigenen canvas.text-Umsetzungen lassen sich per Schalter deaktivieren. Dafür ist folgender Aufruf geeignet:</p>
<script type="text/javascript" src="canvas.text.js?reimplement=true" />
<p>Auf der Projektseite von canvas.text finden sich 5 <a href="http://canvas-text.googlecode.com/svn/trunk/examples/index.html">Live-Demos</a>, die die Möglichkeiten aufzeigen. Ein Blick in den Quellcode zeigt auch einige Kniffe zur Umsetzung.</p>
<p>Zu guter letzt noch ein Codeschnipsel, wie man in Canvas dann damit umgeht:</p>
canvas.font = "20px 'optimer'";
canvas.strokeStyle = "rgb(0,0,200)";
canvas.textAlign = 'left';
canvas.textBaseline = 'middle';
canvas.fillText('Ein normaler Beispieltext ...', 150, 100);
canvas.font = "bold 25px 'optimer'";
canvas.strokeText('... und noch ein fetter Beispieltext', 150, 200);
235 mal gelesen