Рішення вбивці в 2020 році
Це рішення обов'язково приходить через дев'ять років після того, як питання було спочатку задано, оскільки донедавна більшість браузерів не мали змоги обробляти файлові файли у .svg
форматі.
Це вже не так.
Дивіться: https://caniuse.com/#feat=link-icon-svg
1) Виберіть SVG як формат Favicon
Зараз у червні 2020 року ці браузери можуть працювати з SVG Favicons :
- Хром
- Firefox
- Край
- Опера
- Chrome для Android
- Браузер KaiOS
Зауважте, що ці браузери все ще не можуть:
- Сафарі
- iOS Safari
- Firefox для Android
Маючи на увазі вищесказане, ми можемо впевнено використовувати SVG Favicon .
2) Представити SVG як URI даних
Основна мета тут - уникнути HTTP-запитів.
Як зазначалося в інших рішеннях, досить розумний спосіб зробити це - використовувати URI даних, а не HTTP-URL .
SVG (особливо невеликі SVG) прекрасно піддаються URI даних даних, тому що останній є просто простим текстом (з будь-якими потенційно неоднозначними символами, кодованими у відсотках), а перший, будучи XML, може бути записаний у вигляді довгого рядка простого тексту (зі скороченням відсоткових кодів) неймовірно прямо.
3) Весь SVG - Emoji
У грудні 2019 року Леандро Лінарес одним із перших зрозумів, що оскільки Chrome приєднався до Firefox у підтримці SVG Favicons, варто було експериментувати, щоб дізнатись, чи може фавікон можна створити з емоджи:
https://lean8086.com/articles/using-an-emoji-as-favicon-with-svg/
Думка Лінареса була правильною.
Через кілька місяців (березень 2020 р.) Пірат Кодексу Ле Веру зрозумів те саме:
https://twitter.com/leaverou/status/1241619866475474946
І фавікони ніколи не були такими ж.
4) Реалізуйте рішення самостійно:
Ось простий SVG:
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
viewBox="0 0 16 16">
<text x="0" y="14">🦄</text>
</svg>
І ось такий же SVG як URI даних :
data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20viewBox='0%200%2016%2016'%3E%3Ctext%20x='0'%20y='14'%3E🦄%3C/text%3E%3C/svg%3E
І, нарешті, ось ось цей URI даних як фавікон:
<link rel="icon" href="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20viewBox='0%200%2016%2016'%3E%3Ctext%20x='0'%20y='14'%3E🦄%3C/text%3E%3C/svg%3E" type="image/svg+xml" />
5) Більше хитрощів
Оскільки Favicon є SVG, до нього може бути застосована будь-яка кількість ефектів фільтра (як SVG, так і CSS).
Наприклад, поруч з Білим Єдинорогом Фавіконом вище, ми можемо легко зробити Чорний Єдиноріг Фавікон , застосувавши фільтр:
style="filter: invert(100%);"
Чорний єдиноріг Фавікон:
<link rel="icon" href="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20viewBox='0%200%2016%2016'%3E%3Ctext%20x='0'%20y='14'%20style='filter:%20invert(100%);'%3E🦄%3C/text%3E%3C/svg%3E" type="image/svg+xml" />