Killer Solution nel 2020
Questa soluzione arriva necessariamente nove anni dopo la domanda iniziale, poiché fino a poco tempo fa la maggior parte dei browser non era in grado di gestire favicon in .svg
formato.
Non è più così.
Vedi: https://caniuse.com/#feat=link-icon-svg
1) Scegli SVG come formato Favicon
In questo momento, nel giugno 2020, questi browser sono in grado di gestire Favicon SVG :
- Cromo
- Firefox
- Bordo
- musica lirica
- Chrome per Android
- KaiOS Browser
Nota che questi browser non possono ancora:
- Safari
- Safari iOS
- Firefox per Android
Tenendo presente quanto sopra, possiamo usare con sicurezza un Favicon SVG .
2) Presentare SVG come URI di dati
L'obiettivo principale qui è evitare le richieste HTTP.
Come altre soluzioni hanno già detto, un modo abbastanza intelligente per farlo è utilizzare un URI dei dati anziché un URL HTTP .
Gli SVG (in particolare i SVG di piccole dimensioni) si prestano perfettamente agli URI dei dati, poiché quest'ultimo è semplicemente in chiaro (con caratteri potenzialmente ambigui codificati in percentuale) e il primo, essendo XML, può essere scritto come una lunga riga di testo in chiaro (con un'influenza di codici percentuali) incredibilmente semplice.
3) L' intero SVG è un Emoji
Nel dicembre 2019, Leandro Linares è stato uno dei primi a rendersi conto che da quando Chrome si era unito a Firefox nel supportare SVG Favicons, valeva la pena sperimentare per vedere se una favicon potesse essere creata da un'emoji:
https://lean8086.com/articles/using-an-emoji-as-favicon-with-svg/
L'intuizione di Linares aveva ragione.
Diversi mesi dopo (marzo 2020), il pirata del codice Lea Verou realizzò la stessa cosa:
https://twitter.com/leaverou/status/1241619866475474946
E le favicon non erano più le stesse.
4) Implementazione autonoma della soluzione:
Ecco un semplice 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>
Ed ecco lo stesso SVG di un URI di dati :
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
E, infine, ecco l' URI dei dati come Favicon:
<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) Altri trucchi
Poiché Favicon è un file SVG, è possibile applicare qualsiasi numero di effetti filtro (sia SVG che CSS).
Ad esempio, accanto al favicon di unicorno bianco sopra, possiamo facilmente creare un favicon di unicorno nero applicando il filtro:
style="filter: invert(100%);"
Favicon Unicorno nero:
<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" />