Google Fonts a RODO: lokalne czcionki w WordPressie
Google Fonts a RODO: co orzekł sąd w Monachium, dlaczego Data Privacy Framework nie zamyka sprawy i jak znaleźć oraz hostować czcionki lokalnie w WordPressie.
Także po: English Deutsch Français Español Italiano Português Türkçe
Jeśli strona na WordPressie ładuje Google Fonts z serwerów Google, przeglądarka każdego odwiedzającego łączy się z Google i ujawnia swój adres IP. Na tym polega problem Google Fonts w świetle RODO: przekazanie tego adresu wymaga podstawy prawnej, a niemiecki sąd orzekł, że strona, która tak robiła, takiej podstawy nie miała. Rozwiązanie jest proste: przechowywać pliki czcionek na własnym serwerze.
Ten poradnik wyjaśnia, co orzekł sąd i co zmieniło się od tamtej pory, jak sprawdzić, czy strona nadal pobiera czcionki z Google, oraz jak na trzy sposoby hostować je lokalnie w WordPressie.
Co orzekł sąd w Monachium w sprawie Google Fonts i RODO
20 stycznia 2022 roku Sąd Krajowy w Monachium I (Landgericht München I, sygn. 3 O 17493/20) rozstrzygnął sprawę strony internetowej, która osadzała Google Fonts bezpośrednio z serwerów Google. Przy każdym wyświetleniu strony adres IP odwiedzającego trafiał do Google. Z opublikowanego wyroku (w języku niemieckim) wynika, że:
- dynamiczny adres IP odwiedzającego jest dla operatora strony daną osobową;
- odwiedzający nie wyraził zgody na przekazanie go do Google;
- operator nie miał prawnie uzasadnionego interesu, ponieważ z czcionek można było korzystać bez żadnego połączenia z serwerami Google, hostując je lokalnie;
- sąd zasądził na rzecz odwiedzającego 100 euro odszkodowania.
To wyrok jednego niemieckiego sądu w jednej sprawie, a nie orzeczenie Trybunału Sprawiedliwości UE. Rozumowanie sądu łatwo jednak prześledzić, a skutki wyroku sięgnęły daleko poza tę jedną sprawę.
Fala wezwań z 2022 roku
Pod koniec 2022 roku w ślad za wyrokiem przyszła w Niemczech fala masowych wezwań, nazwana „Abmahnwelle”. W pismach żądano zapłaty od właścicieli stron, które nadal ładowały Google Fonts z zewnętrznych serwerów. Część tych wezwań uznano później za nadużycie.
Po otrzymaniu takiego pisma nie należy w pośpiechu niczego płacić ani podpisywać; warto dać je do sprawdzenia prawnikowi. Tak czy inaczej, przyczynę trzeba usunąć, żeby problem nie powrócił.
Czy Data Privacy Framework nie rozwiązuje problemu?
Tylko częściowo. Ramy ochrony danych UE–USA (Data Privacy Framework, DPF), oparte na decyzji Komisji Europejskiej z 10 lipca 2023 roku stwierdzającej odpowiedni stopień ochrony, dają podstawę do przekazywania danych certyfikowanym firmom w USA, a Google LLC ma taki certyfikat. Sąd Unii Europejskiej oddalił skargę na DPF (sprawa T-553/23, Latombe przeciwko Komisji) 3 września 2025 roku. 31 października 2025 roku wniesiono od tego wyroku odwołanie do Trybunału Sprawiedliwości, które wciąż czeka na rozstrzygnięcie, więc sytuacja może się jeszcze zmienić.
Wyrok z Monachium zapadł przed przyjęciem DPF. DPF osłabia argument dotyczący państwa trzeciego, czyli obawę, że dane trafiają do USA bez odpowiedniej ochrony. Nie dotyka jednak drugiego argumentu: na samo wysłanie adresu IP do Google potrzebna jest podstawa prawna, a na prawnie uzasadniony interes trudno się powołać, skoro czcionki można po prostu hostować u siebie.
Dlatego lokalny hosting pozostaje najczystszym rozwiązaniem. To także podręcznikowy przykład uwzględniania ochrony danych w fazie projektowania (art. 25 RODO): dane po prostu nie opuszczają Państwa serwera.
Jak sprawdzić, czy strona ładuje Google Fonts
Narzędzia deweloperskie przeglądarki
- Otworzyć stronę w oknie prywatnym.
- Otworzyć narzędzia deweloperskie (F12 lub Cmd+Option+I na Macu) i przejść do karty Sieć (Network).
- Zaznaczyć Wyłącz pamięć podręczną (Disable cache) i przeładować stronę.
- Wpisać w polu filtra
fonts.googleapis.com, a potemfonts.gstatic.com.
Każde żądanie do tych domen oznacza, że strona ładuje Google Fonts: fonts.googleapis.com dostarcza arkusz CSS, a fonts.gstatic.com same pliki czcionek.
Sprawdzenie trzeba powtórzyć na kilku typach podstron: na stronie głównej, we wpisie na blogu, na stronie kontaktowej, w sklepie i w kasie oraz na stronie logowania. Slidery, kreatory formularzy, wtyczki z mapami czy banery cookies potrafią ładować własne czcionki tylko tam, gdzie same się pojawiają.
Przeszukanie źródła strony i plików motywu
Należy otworzyć źródło strony (Ctrl+U lub Cmd+Option+U na Macu) i wyszukać te same dwie domeny. W ten sposób można znaleźć znaczniki <link> i wskazówki preconnect, ale nie czcionki importowane w plikach CSS ani ładowane przez JavaScript, więc karta Sieć pozostaje najpewniejszym testem.
Mając dostęp do powłoki, można też wylistować pliki motywów i wtyczek, w których pojawiają się te domeny:
grep -rl -e "fonts.googleapis.com" -e "fonts.gstatic.com" wp-content/themes wp-content/plugins
Page buildery często zapisują wybór czcionek w bazie danych, więc pusty wynik nie dowodzi, że strona jest czysta.
Jak hostować Google Fonts lokalnie w WordPressie
Są trzy drogi, od najmniej do najbardziej pracochłonnej. Po każdej z nich trzeba powtórzyć test w karcie Sieć.
Opcja 1: Motyw, page builder lub Biblioteka czcionek
Wiele motywów i page builderów oferuje dziś ustawienie, które ładuje Google Fonts lokalnie. Nazwa bywa różna („load fonts locally”, „self-host fonts”), dlatego warto przejrzeć panel Dostosuj (Customizer) motywu oraz ustawienia wydajności lub prywatności kreatora.
W motywach blokowych zrobi to za Państwa Biblioteka czcionek, dostępna od WordPressa 6.5. W Edytorze witryny należy otworzyć Style, następnie Typografię, i tam zarządzać czcionkami. Przy pierwszym przeglądaniu kolekcji Google Fonts trzeba zezwolić WordPressowi na połączenie z Google; zainstalowane czcionki są potem pobierane i zapisywane na stronie, a odwiedzający ładują je stamtąd (Learn WordPress).
Opcja 2: Wtyczka do lokalnych czcionek
Kilka wtyczek w katalogu WordPress.org wykrywa żądania do Google Fonts, pobiera pliki na serwer i podmienia odwołania. Wystarczy wyszukać w katalogu frazę „local Google Fonts”. Wtyczkę należy wybierać z taką samą starannością jak każdą inną; nasz poradnik o podatnych wtyczkach WordPress wyjaśnia, na co zwrócić uwagę.
Opcja 3: Ręczne reguły @font-face w motywie potomnym
Ta metoda daje pełną kontrolę bez dodatkowej wtyczki:
- Pobrać rodzinę czcionek i zostawić tylko używane style i grubości. Na potrzeby stron internetowych najbardziej kompaktowym formatem są pliki WOFF2.
- Skopiować pliki do folderu
fontsw motywie potomnym, razem z plikiem licencji czcionki. - Dodać reguły
@font-facedo arkusza stylów ładowanego przez motyw potomny, zwykle dostyle.css. - Wyłączyć ładowanie zdalnej kopii przez motyw.
Minimalny przykład dla dwóch grubości czcionki Inter:
@font-face {
font-family: "Inter";
font-style: normal;
font-weight: 400;
font-display: swap;
src: url("fonts/inter-400.woff2") format("woff2");
}
@font-face {
font-family: "Inter";
font-style: normal;
font-weight: 700;
font-display: swap;
src: url("fonts/inter-700.woff2") format("woff2");
}
body {
font-family: "Inter", system-ui, sans-serif;
}
Ścieżka w url() jest względna wobec pliku CSS, więc fonts/ oznacza folder obok style.css.
Aby wyłączyć zdalną kopię, najlepiej skorzystać z opcji samego motywu, jeśli ją ma. W przeciwnym razie trzeba znaleźć w źródle strony znacznik <link> prowadzący do fonts.googleapis.com: jego id wygląda jak themename-fonts-css, a uchwyt arkusza stylów (handle) to ten identyfikator bez -css. Następnie należy dodać do pliku functions.php motywu potomnego:
add_action( 'wp_enqueue_scripts', function () {
wp_dequeue_style( 'themename-fonts' ); // zastąpić prawdziwym uchwytem
}, 20 );
Trzeba też usunąć wskazówki preconnect do fonts.gstatic.com: preconnect otwiera połączenie z serwerem Google nawet wtedy, gdy nie jest z niego pobierana żadna czcionka.
Kwestia licencji: według repozytorium Google Fonts większość czcionek z kolekcji jest udostępniana na licencji SIL Open Font License 1.1, a niektóre na licencji Apache 2 lub Ubuntu Font License. OFL pozwala używać czcionek, osadzać je i rozpowszechniać, więc hostowanie ich na własnym serwerze jest w porządku. Czcionki z innych źródeł mogą mieć inne warunki, dlatego licencję zawsze trzeba przeczytać.
Inne zapytania do zewnętrznych serwerów
Ta sama logika dotyczy wszystkiego, co strona ładuje z serwerów innej firmy: adres IP odwiedzającego trafia tam w momencie otwarcia strony. Przy wciąż otwartej karcie Sieć warto poszukać:
- Map Google i innych osadzonych map
- osadzonych filmów z YouTube lub Vimeo
- skryptów, arkuszy stylów lub czcionek z ikonami z publicznych CDN
- reCAPTCHA i podobnych zabezpieczeń przed botami
- obrazków Gravatar w komentarzach (Ustawienia → Dyskusja → Awatary)
- widżetów czatu i narzędzi analitycznych
W przypadku każdego z nich trzeba zdecydować, czy hostować go lokalnie (skrypty, arkusze stylów, czcionki z ikonami), ładować dopiero po kliknięciu (mapy i filmy za obrazkiem zastępczym), czy prosić o zgodę tam, gdzie jest wymagana. To, co zostaje, należy opisać w polityce prywatności.
Zewnętrzne skrypty to także kwestia bezpieczeństwa, bo mają pełny dostęp do stron, na których działają. Tę stronę zagadnienia omawia nasza lista kontrolna bezpieczeństwa WordPressa.
Najczęściej zadawane pytania
Czy na lokalnie hostowane czcionki potrzebna jest zgoda?
Czcionki serwowane z własnego serwera działają tak samo jak obrazy i arkusze stylów: żadne dane odwiedzających nie trafiają do Google, więc problem ze sprawy monachijskiej w ogóle się nie pojawia.
Czy DPF wystarczy, żeby dalej ładować czcionki z Google?
Dopóki obowiązuje, zapewnia podstawę w postaci odpowiedniego stopnia ochrony przy przekazywaniu danych do USA. Nie odpowiada jednak na pytanie, czy adres IP w ogóle trzeba wysyłać do Google. Lokalny hosting pozwala uniknąć obu pytań.
Czy lokalne czcionki spowolnią stronę?
Zwykle nie. Przeglądarka nie musi już nawiązywać osobnego połączenia z domenami Google, a strona wysyła tylko te grubości, których faktycznie używa.
Ten artykuł ma charakter ogólnoinformacyjny i nie stanowi porady prawnej.
Sprawdź swoją stronę
Security Audit & Compliance to wtyczka WordPress od secaudit.eu: wyszukuje złośliwe oprogramowanie, ukryty spam, zmienione pliki rdzenia i podatny kod oraz przypisuje wyniki do art. 32 RODO, art. 21 NIS2 i OWASP Top 10.
Zobacz, co sprawdza wtyczka