2020年のキラーソリューション
このソリューションは、質問が最初に質問されてから9年後に必ず発生し.svg
ます。これは、ごく最近まで、ほとんどのブラウザーはファビコンをフォーマットで処理することができなかったためです。
それはもう当てはまりません。
参照:https : //caniuse.com/#feat=link-icon-svg
1)ファビコン形式としてSVGを選択します
現在、2020年6月に、これらのブラウザーはSVGファビコンを処理できます。
- クロム
- Firefox
- 縁
- オペラ
- Android向けChrome
- KaiOSブラウザ
ただし、これらのブラウザでは次のことはできません。
- サファリ
- iOSサファリ
- Android版Firefox
上記を念頭に置いて、SVG Faviconを自信を持って使用できます。
2)SVGをデータURIとして提示する
ここでの主な目的は、HTTPリクエストを回避することです。
他のソリューションが述べたように、これを行うかなり賢い方法は、HTTP URLではなくデータURIを使用することです。
SVG(特に小さなSVG)はデータURIに完全に適しています。後者は単純なプレーンテキスト(パーセンテージでエンコードされた曖昧な文字がある可能性がある)であり、前者はXMLであるため、長いテキストのプレーンテキストとして(少しずつ)書き出すことができるためです。パーセンテージコードの)信じられないほど簡単に。
3)SVG 全体が絵文字です
2019年12月、Leandro LinaresはChromeがFirefoxに参加してSVGファビコンをサポートして以来、絵文字からファビコンを作成できるかどうか試してみる価値があることを最初に認識した人物の1人でした:
https://lean8086.com/articles/using-an-emoji-as-favicon-with-svg/
リナレスの直感は正しかった。
数か月後(2020年3月)、Code Pirate Lea Verouは同じことを実現しました。
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>
そして、これがデータURIと同じSVG です:
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
そして最後に、ファビコンとしてのData 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" />