Коротка відповідь
middleІконковий шрифт створюється шляхом конвертації набору SVG у font‑файл, після чого кожен символ відповідає окремому іконі. Для цього використовується інструмент, наприклад, FontForge або IcoMoon, який генерує TTF/WOFF і CSS‑клас для кожної іконки. Після підключення font‑файлу до проекту, іконку можна вставляти як <span class="icon-home"></span> або через ::before‑псевдоелемент.
Повне пояснення
-
Що це і навіщо. Іконковий шрифт – це колекція векторних іконок, що зберігаються у форматі font (TTF/WOFF). Він дозволяє використовувати іконки як звичайні символи, що полегшує їх масштабування та стилізацію через CSS.
-
Ключові принципи, терміни, інваріанти. • SVG – векторний формат зображень. • FontForge, IcoMoon – інструменти для конвертації SVG у font. • Unicode‑кодова точка – кожна іконка отримує свій код. • CSS‑клас або псевдоелемент – спосіб вставки іконки у HTML.
-
Як це працює (життєвий цикл, алгоритм).
- Збираємо SVG‑файли.
- Імпортуємо їх у інструмент (FontForge, IcoMoon).
- Присвоюємо кожному SVG унікальний Unicode‑код.
- Генеруємо font‑файли (TTF, WOFF, WOFF2).
- Створюємо CSS‑таблицю зі селекторами, що відповідають кодам.
- Підключаємо font‑файл через @font-face і використовуємо у проекті.
-
Практика і реалізація (React/Next.js приклад).
// _app.tsx import '../styles/icons.css'; function Icon({name}: {name: string}) { return <span className={`icon-${name}`} aria-hidden="true"></span>; } -
Тестування. Перевіряємо, що font‑файл завантажується (Network), і що символи відображаються у різних браузерах.
-
Оптимізація продуктивності. • Використовувати WOFF2 для зменшення розміру. • Підключати лише потрібні символи через subset‑інструменти (glyphhanger).
-
Accessibility. Додаємо aria-hidden="true" або role="img" + title для доступності.
-
Безпека та валідація. Переконуємося, що SVG‑файли не містять небезпечного коду (XSS), оскільки вони конвертуються у font.
-
Типові помилки й edge cases. • Неправильний Unicode‑код → іконка не відображається. • Браузери, що не підтримують WOFF2 → fallback‑у TTF.
-
Cheatsheet + follow-up питання. • Як підключити font‑файл у Next.js? – використати next/font або статичний файл. • Чому використовувати font замість inline SVG? – швидкість, масштабованість, CSS‑контроль.