Google Fonts lokal einbinden

Hintergrund

Am 20. Januar 2022 hat das Landgericht München I entschieden ( 3 O 17493/20 ), dass das dynamische Einbinden von Google Fonts einen abmahnfähigen Verstoß gegen die DSGVO darstellt. Die Begründung: „Die unerlaubte Weitergabe der dynamischen IP-Adresse des Klägers durch die Beklagte an Google stellt eine Verletzung des allgemeinen Persönlichkeitsrechtes in Form des informationellen Selbstbestimmungsrechts nach § 823 Abs. 1 BGB dar“ ( https://rewis.io/s/u/zH2/#rd_3 ). Das Urteil ist noch nicht rechtskräftig.

Problem

Wer MIR out-of-the-box verwendet, sollte beachten, dass in älteren Versionen (MIR 2022.06.x und früher, vgl. MIR-1159 ) Google-Fonts direkt von fonts.google.com eingebunden wurden, wenn nichts anderes eingerichtet ist.

Lösung

Um das Problem zu vermeiden, bietet sich das Self-Hosting der Fonts an. Die Fonts können heruntergeladen und lokal eingebunden werden (siehe dazu google-webfonts-helper ). Dort können die Google-Fonts in verschiedenen Versionen (und Dateiformaten) zusammengestellt und im ZIP-Verzeichnis heruntergeladen werdem. Auch werden Hinweise gegeben, wie sie in die eigene Webseite (CSS-Dateien) integriert werden können.

Für MIR-Templates, die auf Bootstrap / Bootswatch basieren, kann das Laden der von Google gehosteten Version durch das Setzen der Sass-Variable $web-font-path auf '' unterbunden werden. Alternativ kann eine URL eingetragen werden:
$web-font-path: "https://webfonts.mydomain.de/css?family=Lato:400,700,400italic";

Die Variable muss in einer Sass-Datei ergänzt werden. In MIR gibt es 16 Templates und 2 Layouts. Beides wird in einer Sass-Datei zusammengeführt und je nachdem welches Template und Layout verwendet wird, ergibt sich ein anderer Name, z.B. Layout flatmir + Template flatly = flatmir-flatly.scss.

Der Inhalt sieht immer folgendermaßen aus:

 @import "%layout%/lib/variables";  
 @import "common/variables";  
 @import  "../assets/bootswatch/%template%/variables";  
 @import  "../assets/bootstrap/bootstrap";  
 @import  "../assets/bootswatch/%template%/bootswatch";  
 @import "%layout%/layout";  

Wobei %layout% durch flatmir und %template% durch flatly zu ersetzen sind. Am Anfang der Datei können Variablen ergänzt werden, wie z.B. $web-font-path oder $font-family-sans-serif:

 $web-font-path: "https://webfonts.mydomain.de/css?family=Roboto:400,700,400italic";  
 $font-family-sans-serif: 'Roboto', Helvetica, Arial, sans-serif;  
 @import "flatmir/lib/variables";  
 @import "common/variables";  
 @import  "../assets/bootswatch/flatly/variables";  
 @import  "../assets/bootstrap/bootstrap";  
 @import  "../assets/bootswatch/flatly/bootswatch";  
 @import "flatmir/layout;  
Die Datei muss anschließend im webpages-Verzeichnis abgelegt werden, z.B. hier:
 ~/.mycore/mir/data/webpages/META-INF/resources/mir-layout/scss/flatmir-flatly.scss</code>

Mit MIR 2022.06.x ist dieses Problem behoben. Sind keine größeren Layout-Anpassungen vorgenommen worden, kann ein Update auf diese Version das Problem bereits beheben. Für Details siehe auch PullRequest #787 bei github.

Hinweis

Boostrap selbst bindet keine Google-Fonts ein.

Quellen

Siehe Meldungen z.B. bei