Mit SIIR jede beliebige Schrift auf seiner Webseite einsetzen

Gestalter sind beim Webdesign gegenüber den Printmedien bei der Auswahl einer Schrift recht eingeschränkt. Es gibt nur ein etwa ein Dutzend Schriften, die standardmäßig sowohl auf PC als auch auf dem Mac installiert sind und somit im Browser anzeigbar sind. Darunter fallen etwa die Verdana, Tahoma, Times New Roman. Zwar kann man exotische Schriften auf gut Glück einsetzen und hoffen, dass die Schrift auf dem Computer des Seitenbesuchers installiert ist, oder jeden Textabschnitt als statisches Bild einbetten, doch gibt es mittlerweile bessere und flexiblere Möglichkeiten. Im folgendem Abschnitt möchte ich die sogenannte Scalable Inline Image Replacement Methode vorstellen.

SIIR ist eine 2004 von Ryan Petrellos entwickelte Bildersatztechnik, basierend auf PHP und JavaScript. Bei dieser Technik werden Überschriften durch generierte Images mit eigenen Fonts ersetzt. Sind JavaScript und die Anzeige von Bildern deaktiviert, wir ein ALT-Text des Bildes angezeigt. Da SIIR die bereits generierten Bilder in einem seperaten Ordner cached, entstehen keine langen Ladezeiten.

SIIR OrdnerstrukturDie Installation von SIIR sieht folgendermaßen aus:
Als erstes lädt man sich die siir_files.zip herunter und enpackt sie in den Ordner /siir. In diesem Ordner wiederum muss nun der Ordner "cache" erstellt und mit den CHMOD Besitzerberechtigungen "Lesen Schreiben Ausführen" (Wert 700) freigegeben werden. Im cache-Verzeichnis werden später über das PHP-Script die Bilddateien erstellt und gespeichert. Im /siir-Ordner müssen nun auch die Font-Dateien, die man verwenden möchte, im .ttf-Format abgelegt werden. Um die eigene HTML- oder PHP-Seite zu konfigurieren, fügt man im <head> die Zeilen

<script language="JavaScript" type="text/javascript" src="siir/external.js"></script>

ein. Um das Script zu starten, muss im HTML- oder PHP-Dokument vor den abschließenden </body> und </html> Tags folgendes geschrieben werden:

<script type="text/javascript">
SIIR_init();
</script>


Nun kann man ganz normal Überschriften einsetzen, etwa so:

<h1>Testüberschrift</h1>

Eine Beispieldatei würde nun wie folgt aussehen:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>SIIR Test</title>
<script language="JavaScript" type="text/javascript" src=siir/external.js"></script>
</head>
<body>
<h1>Testüberschrift</h1>
<script type="text/javascript">
SIIR_init();
</script>
</body>
</html>


In der external.js muss der absolute Pfad zum siir-Ordner angegeben werden. Man muss dazu im Script die Zeile

var path = "http://www.path.to/siir/";

suchen und den Pfad durch den entsprechenden ersetzen.

Um das Aussehen, also Schriftgröße, Schriftfarbe, Antialiasing, Schatten Transparenz etc. der einzelnen <h1> bis <h4> Tags zu definieren, muss man jeweils die Zeilen:

settings["h1"]["padding"] = 1; // Abstand
settings["h1"]["bgcolor"] = "FFFFFF"; // Hintergrundfarbe einstellen
settings["h1"]["transparentbg"] = 0; // Transparenter Hintergrund? (1=Ja, 0=Nein)
settings["h1"]["font_color"] = "000000"; // Schriftfarbe
settings["h1"]["shadow_color"] = "E2E2E2"; // Farbe des Schriftschattens
settings["h1"]["font_file"] = "FFFGALAX.TTF"; // Name der Schrift
settings["h1"]["font_size"] = 44; // Schriftgröße
settings["h1"]["antialias"] = 1; // Antialiasing? (1=Ja, 0=Nein)


suchen und anpassen.

In der Dokumentation von SIIR wird empfohlen, den cache-Ordner über .htaccess zu schützen. Dadurch soll verhindert werden, dass die Bandbreite des eigenen Servers ausgenutzt wird, um Bilder für eine fremde Webseite zu generieren. Der Inhalt dieser .htaccess sollte gemäß der Dokumentation folgendermaßen aussehen:

IndexIgnore *
RewriteEngine on
RewriteCond %{HTTP_REFERER} ^$ [OR]
RewriteCond %{HTTP_REFERER} !^http://(www\.)?yourwebsite\.de.*$ [NC]
RewriteRule .* http://yourwebsite.de/dontStealMyBandwidthJerk.html [R,L]


Also einfach diese fünf Zeilen anpassen und als .htaccess im siir-Ordner speichern. Dann wäre SIIR fertig konfiguriert.

Auskommentieren - wo wie?

Hier ist eine kleine Übersicht, wie man richtig auskommentiert:

CSS
/* Kommentare Ein- oder Mehrzeilig */

HTML, XML
<!-- Kommentare Ein- oder Mehrzeilig -->

PHP, Javascript, ActionScript
// Einzeiliger Kommentar
/* Mehrzeiliger Kommentar */

Javascript: Email-Adresse gegen Spam-Roboter schützen

Ich möchte in diesem Beitrag Möglichkeiten beschreiben, mit denen man seine Email-Adresse auf einer Website relativ sicher angeben kann, ohne Gefahr zu laufen, dass man mit Spam zugemüllt wird. Dazu kombiniere ich zwei Verfahren:

1. Eine JavaScript-Verschlüsselung
2. Eine Unicode-Verschlüsselung

1. JavaScript-Verschlüsselung
Zum einen benutze ich dazu ein JavaScript, dass die Email-Adresse an einer beliebigen Stelle im HTML-Projekt Stück für Stück zusammensetzt:

<span>
<!--
<script type="text/javascript">
var emailname = "HierEmailAdresse";
var at = "@";
var emaildomain = "HierDomainName";
var punkt = ".";
var emaildomainendung = "HierDomainEndung";
document.write('<a href=\"mailto:' + emailname + at + emaildomain + punkt + emaildomainendung + '\">');
document.write('eine Email schicken' + '</' + 'a' + '>');
</script>
// -->
<span>

Anstelle von HierEmailAdresse setzt Ihr den ersten Teil Eurer Email-Adresse ein, also alles was vor dem @ steht. HierDomainName tauscht Ihr mit dem Namen Eurer Domain aus und schreibt dann anstelle von HierDomainEndung die entsprechende Endung rein.

Lautet die Adresse also beispielsweise "Max.Mustermann@web.de", muss das Script folgendermaßen angepasst werden:

<span>
<!--
<script type="text/javascript">
var emailname = "Max.Mustermann";
var at = "@";
var emaildomain = "web";
var punkt = ".";
var emaildomainendung = "de";
document.write('<a href=\"mailto:' + emailname + at + emaildomain + punkt + emaildomainendung + '\">');
document.write('eine Email schicken' + '</' + 'a' + '>');
</script>
// -->
<span>

Ihr Internetbrowser wird eine normale Email-Adresse anzeigen, die jedoch für die Spider unsichtbar ist.

2. Unicode-Verschlüsselung
Aber um das Ganze noch sicherer zu machen, wird das Script mit einer Unicode-Verschlüsselung kombiniert. Der Unicode ist eine Zeichentabelle, in dem Schriftzeichen in einem Code versehen werden. Statt der Buchstaben verwende ich also eine bestimmte Zeichenfolge, die jeder Internetbrowser ohne Probleme interpretieren kann, ein Spyder in der Regel nicht. Diese Unicode-Tabelle findet Ihr im Beitrag Email-Adressen codieren bei Dr. Web. Man nimmt einfach jeden einzelnen Buchstaben seiner Email-Adresse und trägt nun stattdessen den entsprechenden Wert aus der Tabelle ein. Das Beispiel Max Mustermann sähe dann folgendermaßen aus:

"Max.Mustermann" wird zu:
&#77;&#97;&#120;&#46;&#77;&#117;&#115;&#116;&#101;&#114;&#109;&#97;&#110;&#110;
"@" wird verschlüsselt in: &#64;
für "web" wird folgendes eingesetzt: &#119;&#101;&#98;
der "." sollte später so aussehen: &#46;
und das "de" wie folgt: &#100;&#101;

Alternativ könnt ihr auch über das Tool auf http://tools.freecity.de/crypt.phtml eure Adresse direkt online codieren lassen. Das Ergebnis ist zwar das selbe, geht aber etwas flotter ;-).

Das Ergebnis
Diese Zeichenfolge ersetzen Sie dann im JavaScript mit den normalen Angaben, das Ergebnis sollte dann folgendermaßen aussehen:

<span>
<!--
<script type="text/javascript">
var emailname =
"&#77;&#97;&#120;&#46;&#77;&#117;&#115;&#116;&#101;&#114;&#109;&#97;&#110;&#110;";
var at = "&#64;";
var emaildomain = "&#119;&#101;&#98;";
var punkt = "&#46;";
var emaildomainendung = "de";
document.write('<a href=\"mailto:' + emailname + at + emaildomain + punkt + emaildomainendung + '\">');
document.write('eine Email schicken' + '</' + 'a' + '>');
</script>
// -->
</span>

Im Browser erscheint nun ganz normal Ihre Email-Adresse und der Besucher bemerkt keinen Unterschied.

Der Vorteil gegenüber Varianten wie "emailname at domain.de" ist, dass für den User keine Nachteile entstehen, er muss nicht etwa noch die Email-Adresse wegen einem fehlenden @-Zeichen zusammensetzen oder ähnliches.

Und so schaut das Ergebnis aus: