Jak bumerang wraca temat polskich znaków w Google Fonts i tego że ich nie widać.
Gwiazdka w tytule oznacza pewne założenie. Otóż tym założeniem jest to, że dany krój pisma posiada polskie znaki diakrytyczne.
Jak dany krój nie posiada, to i tak nic nie pomoże.
Aby czcionka mogła wyświetlać musi być załadowany odpowiedni zestaw znaków, ten zestaw dla Polski nazywa się latin-ext.
Poniższy kod wykorzystuje filtr style_loader_src i dodaje odpowiednią definicję do każdej dodanej przez motyw czy wtyczkę czcionki google o ile ten krój został dodany za pomocą funkcji wp_enqueue_style. Jak kod dodany jest ręcznie … to nie pomoże. Wtedy trzeba się w kod pofatygować osobiście i dodać „&subset=latin,latin-ext”.
class iworks_subset_latin_extended { public function __construct() { add_filter('style_loader_src', array($this,'style_loader_src'), 10, 2); } public function style_loader_src($src, $handle) { /** * check is google fonts url? */ if ( !preg_match( '@fonts.googleapis.com/css@', $src ) ) { return $src; } $url = explode('?', $src); if ( sizeof($url) < 2 ) { return $src; } /** * parse arguments */ $args = wp_parse_args($url[1]); /** * build subset array */ $subset = array(); if ( array_key_exists('subset', $args ) ) { $subset = explode(',', $args['subset']); } /** * add latin and latin-ext to subset */ $subset[] = 'latin'; $subset[] = 'latin-ext'; /** * avoid duplicates */ $args['subset'] = implode(',',array_unique($subset)); /** * replace space to fiz add_query_arg */ $args['family'] = preg_replace('/ +/', '+', $args['family']); return add_query_arg($args, $url[0]); } } new iworks_subset_latin_extended(); |
Jak użyć podany kod?
Masz 3 rozwiązania:
- wrzuć załączony plik do folderu
wp-content/plugins
, a potem włącz wtyczkę - wrzuć załączony plik do folderu
wp-content/mu-plugins
- dołącz kod do pliku
functions.php
aktualnie używanego motywu
Uwaga!
Podana metoda działa TYLKO na czcionki osadzane z serwisu fonts.googleapis.com. Nie działa na inne, nie działa na takie z własnego serwera.
Łukasz
bardzo fajne rozwiązanie! Dzięki Marcin, za sek wtyczka będzie na blogu klienta, bo autor skórki zapomniał, że mogą jej używać ludzie spoza anglojęzycznego internetu.
Super, że działa jako wtyczka, bo do tej pory nadpisana funkcja była wyciągnięta do child theme żeby jej nie stracić przy aktualizacji skórki :)
Alex
Kolejna ciekawa wtyczka z pod pióra Marcina. Próbuję ją zaimplementować na naszym blogu firmowym o tabletach, bo autor skórki miał chyba kłopot z polskimi znakami. Serdecznie pozdrawiam.
Piotr Bielecki
Marcin, dzięki za wtyczkę! Szybko i sprawnie naprawiłem dwa swoje blogi na dwa, opisane przez Ciebie sposoby :-)
Kulin
Wrzuciłem do wp-content/plugins i włączyłem wtyczkę według pierwszego rozwiązania. Osobiście jednak wolę, gdy w wp-content/plugins są foldery o nazwie wtyczki i dopiero w folderze plik (pliki) od danej wtyczki. Jest to dla mnie bardziej przejrzyste. Tak też zrobiłem :)
Marcin Pietrzak
@Kulin: to tylko przykładowy kod. Cieszę się, że zrobiłeś z tego wtyczkę z folderem. „Jednoplikowość” jest istotna, bo tak powinno być w przypadku wtyczek wymuszanych (wp-content/mu-plugins).
Antoni
Dzięki!
Dariusz
Witam, chcę zmodyfikować szablon Daily Notes theme.
Niestety, nie potrafię osunąć braku polskich liter w tytułach. Pana wtyczka także niewiele pomogła. Jest inne rozwiązanie?
Ile kosztuje opracowanie prostej strony?
Pozdrawiam
Dariusz