Безпечні шрифти
Безпечні шрифти - це опціональний модуль, який зменшує і контролює зовнішні запити до Google Fonts, що надсилаються вашою темою чи плагінами. Він діє на кожній таблиці стилів (<link>), адреса якої вказує на fonts.googleapis.com, і пропонує дві незалежні поведінки, які можна вмикати окремо: оптимізацію завантаження та притримання таблиці до моменту надання згоди.
Модуль надає інструменти для обмеження й відтермінування запитів до третіх сторін. Він не є юридичною консультацією і сам по собі не гарантує жодного конкретного правового ефекту. Повний хостинг файлів шрифтів на власному сервері не входить до обсягу цієї версії модуля, модуль обмежує й контролює зовнішні виклики, а не переносить самі файли.
Увімкнення модуля
Section titled “Увімкнення модуля”Модуль за замовчуванням вимкнений. Увімкніть його в WooCommerce > Polski > Модулі (ключ модуля safe_fonts). Після увімкнення він діє лише на фронті магазину, адмін-панель пропускається. Якщо модуль не може розпізнати чи переписати даний тег, він повертає його без змін, тож шрифти завжди працюють далі (м’яка деградація).
Режими роботи
Section titled “Режими роботи”| Режим | Що робить |
|---|---|
| Оптимізація | Додає display=swap до адреси Google Fonts, якщо його бракує, та емітує підказки preconnect для fonts.googleapis.com і (з crossorigin) fonts.gstatic.com. Зменшує зсуви макета і вартість з’єднання, не змінюючи того, що завантажується. |
| Притримання до згоди | Переписує тег <link> Google Fonts на вимкнене замінне посилання (зі справжньою адресою в атрибуті data). Невеликий контролер знову вмикає його лише тоді, коли відвідувач надасть обрану категорію згоди. До того часу зовнішній запит не виконується. |
Обидва режими незалежні. Ви можете увімкнути лише один, обидва одразу або жоден.
Оптимізація
Section titled “Оптимізація”Після увімкнення оптимізації модуль:
- дописує
display=swapдо адреси таблиці Google Fonts, якщо в ній немає явного значенняdisplay. Адреси з-поза Google Fonts залишаються незмінними. - виводить у
<head>дві підказкиpreconnect: дляhttps://fonts.googleapis.comта дляhttps://fonts.gstatic.com(з атрибутомcrossorigin).
Ця поведінка не блокує жодних запитів, лише зменшує зсуви макета і вартість встановлення з’єднання.
Притримання до згоди
Section titled “Притримання до згоди”Після увімкнення цього режиму модуль замінює тег Google Fonts на вимкнену таблицю (disabled, media="print", href="about:blank"), яка нічого не завантажує. Справжня адреса потрапляє до атрибута data-polski-safefont, а обрана категорія згоди до data-polski-consent. Невеликий контролер на фронті вмикає таблицю лише тоді, коли відвідувач надасть налаштовану категорію згоди, та реагує на подію polskiConsentChange від Менеджера згод.
Для надійності зберігається також варіант <noscript> з оригінальним тегом, завдяки чому шрифти завантажаться навіть при вимкненому JavaScript. Контролер додається лише тоді, коли в даному запиті дійсно притримано якусь таблицю шрифтів.
Цей режим співпрацює з модулем Менеджер згод (категорія згоди і подія зміни згоди походять з цього модуля). Щоб притримання мало сенс, категорія згоди мусить реально дотримуватися на боці відвідувача.
Налаштування
Section titled “Налаштування”Налаштування знаходяться на картці модуля в WooCommerce > Polski > Модулі.
| Налаштування | За замовчуванням | Опис |
|---|---|---|
| Оптимізація | увімкнено | Додає display=swap і підказки preconnect для хостів Google Fonts. |
| Притримання до згоди | вимкнено | Притримує таблицю Google Fonts до моменту надання обраної категорії згоди. |
| Категорія згоди | Преференції | Категорія згоди, потрібна для завантаження шрифтів при притриманні. |
М’яка деградація
Section titled “М’яка деградація”Якщо тег не вдається розпарсити чи безпечно реконструювати (наприклад, він не є стандартним посиланням rel="stylesheet"), модуль повертає його без змін. Це означає, що непідтримувані випадки не псують вигляд сторінки, а шрифти завантажуються так, як раніше.
Усунення проблем
Section titled “Усунення проблем”Шрифти не завантажуються після увімкнення притримання - перевірте, чи відвідувач надав обрану категорію згоди і чи модуль Менеджер згод активний. До моменту згоди таблиця залишається вимкненою.
display=swap не з’являється - стосується виключно адрес, що вказують на fonts.googleapis.com, і лише коли адреса ще не має явного значення display.
Шрифти, завантажені локально з теми, не змінюються - модуль діє лише на зовнішніх запитах до Google Fonts. Локально хостовані шрифти не підтримуються.
Повідомлення про проблеми: github.com/wppoland/polski/issues