Google Fonts entfernen und lokal in Laravel-Projekten selbst hosten

Google Fonts selbst zu hosten hat, wenn es richtig gemacht wird, viele Vorteile. Erstens ist Google Fonts (der CDN-Dienst, nicht die Schriftarten selbst) in der EU für illegal erklärt worden. Wenn Sie als Website-Betreiber diese Verordnung einhalten wollen, ist es also eine gute Idee, selbst zu hosten.

Lesen Sie mehr über diese Entscheidung auf dem Blog von noyb. Außerdem ist es in den meisten Fällen wider Erwarten schneller, selbst zu hosten. Eines der Hauptargumente, warum die Verwendung des Google Fonts CDN eine gute Idee war, war, dass viele Websites Google Fonts verwenden, so dass es sehr wahrscheinlich war, dass die Schriftart, die Sie für Ihre Website verwenden, bereits im Browser-Cache des Benutzers war. Aus Gründen des Datenschutzes haben alle großen Browser diese Form der Zwischenspeicherung zwischen Websites unterschiedlicher Herkunft unterbunden, so dass dies nicht länger ein Vorteil ist. Weitere Informationen über die Auswirkungen auf die Leistung finden Sie in diesem Blogbeitrag von Simon Wicki.

Schritt 1: Finden Sie heraus, wo Google Fonts eingebettet ist

Google Fonts in Standard-Fehlermeldungs-Templates

Laravel verwendet Google Fonts in dem Standard-Fehlermeldungs-Template. Laravel verwendet das Fehlermeldungs-Template nicht nur für Serverfehler, sondern auch für die hoffentlich häufiger auftretenden "404 Nicht gefunden"-Seiten. Um die Standardvorlagen zu bearbeiten, führen Sie den folgenden artisan-Befehl aus:

php artisan vendor:publish --tag=laravel-errors

Der Befehl kopiert die für die Fehlerseite verwendete Blade-Template-Datei in resources/views/errors. Die folgenden Dateien in diesem Ordner enthalten Google Fonts:

  • illustrated-layout.blade.php
  • layout.blade.php
  • minimal.blade.php

Laravel Nova Standard-Templates

Hinweis: Dieses Kapitel ist nur relevant, wenn Sie Laravel Nova verwenden.

Nova v4

Kopieren Sie die Standard-Layout-Blade-Dateien aus dem Ordner vendor in Ihr Projektverzeichnis.

mkdir resources/views/vendor/nova
cp vendor/laravel/nova/resources/views/layout.blade.php resources/views/vendor/nova/layout.blade.php

Nova v3

Kopieren Sie die Standard-Layout-Blade-Dateien aus dem Ordner vendor in Ihr Projektverzeichnis.

mkdir resources/views/vendor/nova
cp vendor/laravel/nova/resources/views/layout.blade.php resources/views/vendor/nova/layout.blade.php

mkdir resources/views/vendor/nova/auth
cp vendor/laravel/nova/resources/views/auth/layout.blade.php resources/views/vendor/nova/auth/layout.blade.php

Laravel Jetstream Standard-Templates

Hinweis: Dieses Kapitel ist nur relevant, wenn Sie Laravel Jetstream verwenden.

Livewire + Blade

Nach der Veröffentlichung der Views ist die Layout-Datei, die den Google Font-Link enthält, in resources/views/app.blade.php zu finden.

Inertia + Vue

Nach der Installation enthalten die folgenden Dateien einen Google Fonts link Tag:

  • resources/views/layouts/app.blade.php
  • resources/views/layouts/guest.blade.php

Find Google Fonts in your own code

Suchen Sie in allen Blade-Vorlagen (Ordner resources/views) nach fonts.googleapis.com.

Schritt 2: Ersetzen Sie sie durch eine lokale, selbst gehostete Version der Schriftart

Es gibt mehrere Möglichkeiten, die gerade gefundenen Google Fonts durch eine lokal gehostete Version zu ersetzen. Ich werde zwei Wege demonstrieren.

Version 1: Herunterladen mit Google Webfonts Helper

Bei der ersten Methode muss kein Paket installiert werden. Sie laden einfach ein passendes Paket vom Google Webfonts Helper herunter.

Suchen Sie einfach nach der Schriftart, wählen Sie die gewünschten Stile und Zeichensätze aus und geben Sie den Pfad an, in dem Sie die Schriftarten speichern möchten. In diesem Beispiel nehme ich den Pfad /fonts/. Dann muss die ZIP-Datei heruntergeladen und in den entsprechenden Ordner entpackt werden. In diesem Beispiel ist dies der Ordner public/fonts.

Nachdem die Schriftarten in einem öffentlichen Ordner gespeichert wurden, ersetzen Sie die gefundenen Google Fonts CDN link-Tags durch die heruntergeladene CSS-Datei.

Davor:

<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Nunito:wght@400;600;700&display=swap">

Danach:

<link rel="stylesheet" href="&#123;&#123; asset('fonts/nunito.css') &#125;&#125;">

Version 2: Verwenden des Pakets laravel-google-fonts von Spatie

Wenn Sie die Schriftarten nicht manuell herunterladen möchten, können Sie ein Paket von Spatie verwenden, das diesen Vorgang automatisiert.

Installieren Sie zunächst das Paket mit Composer und veröffentlichen Sie die Konfigurationsdatei:

composer require spatie/laravel-google-fonts
php artisan vendor:publish --provider="Spatie\GoogleFonts\GoogleFontsServiceProvider" --tag="google-fonts-config"

Fügen Sie nun das Attribut href der gefundenen Schriftarten in das Array fonts in der Konfigurationsdatei google-fonts.php ein.

Für die folgende Schriftart könnte die Konfiguration wie folgt aussehen:

<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Nunito:wght@400;600;700&display=swap">
// config/google-fonts.php

return [

	 // ...
	
    'fonts' => [
        'default' => 'https://fonts.googleapis.com/css2?family=Inter:ital,wght@0,400;0,700;1,400;1,700',
        'nunito' => 'https://fonts.googleapis.com/css2?family=Nunito:wght@400;600;700&display=swap',
    ],
    
    // ...
];

Um sicherzustellen, dass die Schriftart niemals direkt vom Google Fonts CDN geladen wird, müssen Sie die Konfiguration fallback auf false setzen.

// config/google-fonts.php

return [

	 // ...
	
    'fallback' => false,
    
    // ...
];

Es gibt noch ein paar weitere Konfigurationsoptionen. Sie können mehr über diese in der README des Pakets lesen.

Wenn Sie die Schriften in einem Object-Storage mit einem davor geschalteten CDN speichern wollen, können Sie die Konfigurationsoption disk auf ein Objektspeicher-Dateisystem setzen.


Irgendwelche Vorschläge?

Benutze den Chat in der rechten unteren Ecke