Webfonts auf dem eigenen Server hosten mit ein paar simplen Zeilen PHP

Das Netz dreht durch. Cookies, rufen sie, pass auf! Cookies hier, Cookies da, Cookies überall. Ein Wort, das einst Erinnerungen an Schokostückchen, kalte Milch und achtlose Krümel in unseren Mundwinkeln wachrief, hat sich in einen Schlachtruf verwandelt. Und vielleicht ist das gar nicht einmal so schlimm, wie es sich anhört.
Das Netz, wie es heute existiert, ist kaputt. Es wird von einer Handvoll Unternehmen beherrscht, die die Mehrzahl der Server betreiben, gigantische Datenberge anhäufen und diese Daten schließlich nutzen, um uns lächerlich schlechte Anzeigen zu präsentieren. Die Datenschutz-Grundverordnung hat den Zweck, etwas Kontrolle an Nutzer*innen in der EU zurückzugeben, und ich sehe staunend zu, wie sogar die größten Plattformen im entfernten Kalifornien händeringend feststellen, dass ihre Macht Grenzen hat.
Das ist die Sonnenseite der DSGVO. Auf der Schattenseite befinden sich verzweifelte Freiberufler*innen, verängstigte Blogger*innen und rundherum verwirrte Privatpersonen, denn niemand weiß, wie die rechtliche Auslegung dieser neuen Verordnung genau aussehen wird. Anstatt den meisten Expert*innen zu vertrauen, die behaupten, dass sich für diese Bevölkerungsschicht kaum etwas ändern wird, schließen Leute ihre Webseiten und wenden sich ironischerweise Plattformen wie Facebook oder Google zu—der Art von Unternehmen, die mit ihren Rechtsabteilungen und ihrer Lobbykraft diese Zeiten der Unsicherheit problemlos überstehen werden.
Anstatt die Position von Nutzer*innen zu stärken, könnte die DSGVO also im Gegenteil den Einfluss des bestehenden Netz-Oligopols vergrößern. So sollte es nicht sein, und das muss es auch nicht. Werkzeuge wie WordPress verfügen mittlerweile über eingebaute Funktionen und eine Vielzahl an Erweiterungen, um Webseiten datenschutzkonform zu machen.
Ein Aspekt, der bisher zu wenig Aufmerksamkeit erfahren hat, sind Webfonts. Google Fonts sind auf 40 Prozent der eine Million populärsten Webseiten eingebunden, und auch wenn Google in diesem Zusammenhang keine Tracking-Cookies einsetzt, reichen IP-Adresse und Request-Header aus, um Google zu verraten, auf welcher Seite jemand unterwegs ist.
Es ist völlig unnötig, Besucher*innen zu Google zu schicken, wo sich Webfonts doch ganz einfach auf dem eigenen Server hosten lassen. Dank Open-Source-Lizenzen ist das völlig legal. Ich habe ein kleines Skript geschrieben, das diese Aufgabe erleichtert. Hier kommt mein mikroskopischer Beitrag zur Dezentralisierung des Netzes.
Was dieses Skript macht
Einmal pro Woche (oder so oft, wie du möchtest) wird eine CSS-Datei mit mindestens einer @font-face
-Regel von einem externen Server geladen, zum Beispiel von Google Fonts, und auf deinem lokalen Server gespeichert. Anschließend werden die einzelnen Schriftdateien, die im Stylesheet angegeben sind, ebenfalls auf deinen Server kopiert und alle URLs im Stylesheet ersetzt.
Falls du dich fest für eine bestimmte Schriftart entschieden hast, die du überall in deinem Template einsetzen möchtest, brauchst du dieses Skript wahrscheinlich nicht. Stattdessen könntest du den großartigen Google Webfonts Helper verwenden, der alle gewünschten Schriftarten in einer ZIP-Datei verpackt, die du auf deinen Server hochladen und dann vergessen kannst.
Dieses Skript könnte dagegen nützlich sein, falls deine Auswahl an Schriftarten sich von Zeit zu Zeit ändert, etwa bei der Entwicklung, und du nicht immer manuell neue Dateien kopieren und überflüssige löschen möchtest. Es wird außerdem deine bestehende Auswahl an Schriften in regelmäßigen Abständen nachladen, falls sich Änderungen an den einzelnen Glyphen ergeben haben.
Implementierung
- WordPress: Kopiere das Skript in deine
functions.php
und verwendeget_webfont(string $url)
an beliebiger Stelle in deinem Theme, z.B.<link href="<?php get_webfont('https://fonts.googleapis.com/css?family=Roboto'); ?>" rel="stylesheet">
- Jede andere Umgebung: Kopiere das Skript auf deinen Server und binde es mit
<?php include '/absolute/path/to/cache_webfonts.php'; ?>
ein, um dannget_webfont(string $url)
an beliebiger Stelle in dieser Datei zu verwenden, z.B.<link href="<?php get_webfont('https://fonts.googleapis.com/css?family=Roboto'); ?>" rel="stylesheet">
- Um die Länge des Update-Zyklus anzupassen, ändere einfach den Wert in Zeile 4
Vorteile
- Die Stylesheets werden regelmäßig nachgeladen, damit sie immer aktuell sind. Google Fonts zwingt Browser, ihre Stylesheets einmal pro Tag neu zu laden, der Standardwert in diesem Skript ist auf eine Woche gesetzt
- Schriftdateien bleiben bis zu ein Jahr lang im Browser-Cache, außer ihr Inhalt ändert sich
- Am Ende jedes Update-Zyklus werden obsolete Dateien gelöscht
Nachteile
- Das Format der Schriftdateien kann vom User-Agent abhängen—in meinen Tests lieferte Google Fonts TTF-Dateien, um eine maximale Kompatibilität von 95 Prozent zu garantieren, ein moderner Browser hätte dagegen WOFF2-Dateien erhalten
- Keine Fehlerbehandlung, wenn der Datentransfer fehlschlägt
Anforderungen
- Die Genehmigung, Schriften auf deinem eigenen Server zu hosten
- PHP 5.1 oder höher
- Apache—wenn du einen anderen Webserver verwendest, wird die
.htaccess
-Datei im Unterordner/fonts
nicht berücksichtigt, die als wichtige Sicherheitsmaßnahme die Ausführung von Skripten verhindert
Du kannst mich jederzeit in den Kommentaren um Hilfe bitten oder Verbesserungsvorschläge machen.