top of page

Filtr dnia: style_loader_src – czyli zawsze* polskie znaki

Zdjęcie autora: Piotr BartczakPiotr Bartczak

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:

  1. wrzuć załączony plik do folderu wp-content/plugins, a potem włącz wtyczkę

  2. wrzuć załączony plik do folderu wp-content/mu-plugins

  3. 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.

0 wyświetleń0 komentarzy

Ostatnie posty

Zobacz wszystkie

Comments


bottom of page