astro-notion-blogのGitHubのwikiにある方法でfaviconを設定したのですが、iPhoneのホーム画面に追加等には対応していませんでした。
もう少ししっかりと設定したいところです。
faviconの変更 旧
public\
直下にfavicon.ico
を配置する。
ロゴの画像を下記サイズで透過PNG形式で作成し、下のサイトでfavicon.ico
を作成した。
- 16px × 16px
- 24px × 24px
- 32px × 32px
- 48px × 48px
- 64px × 64px
- 180px × 180px
たまたま発見したこのサイトが日本語だしシンプルだしとても良かった。
まずはSVGでロゴを作ります。
CADで設計したロゴだったので、dxf→Inkscapeで上手いことやりました。
塗りつぶしで隙間ができやすいので、線を少し太くして、塗りつぶしの拡縮量を増やして解決。
SVGからfavicon用PNG画像を作るのならこのサイトが便利です。出力するPNGファイルのサイズを指定できます。
最初気づきませんでしたが、ファイルの出力設定を変えるごとにファイルをD&Dしないと出力されたファイルが更新されません。
- 既に作ってある
favicon.ico
- SVG形式の
icon.svg
- 180x180の
apple-touch-icon.png
- 192x192の
icon-192.png
- 512x512の
icon-512.png
// manifest.webmanifest
{
"icons": [
{ "src": "/icon-192.png", "type": "image/png", "sizes": "192x192" },
{ "src": "/icon-512.png", "type": "image/png", "sizes": "512x512" }
]
}
favicon.ico
icon.svg
apple-touch-icon.png
icon-192.png
icon-512.png
manifest.webmanifest
これらをpublic\
直下に配置します。
<link rel="icon" href="/favicon.ico" sizes="32x32">
<link rel="icon" href="/icon.svg" type="image/svg+xml">
<link rel="apple-touch-icon" href="/apple-touch-icon.png"><!-- 180×180 -->
<link rel="manifest" href="/manifest.webmanifest">
これをsrc\layouts\Layout.astro
の<head>
部分に追加します。<link rel="icon" href="/favicon.ico" sizes="32x32">
は無くても読み込まれるようだけど、これ無しだとSVGのアイコンを無視してfavicon.ico
を読み込むChromeのバグがあるらしいです。今もなのかはちょっとわかりませんでした。
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="robots" content="max-image-preview:large" />
<meta charset="UTF-8" />
<meta name="generator" content={Astro.generator} />
<title>{siteTitle}</title>
<meta name="description" content={siteDescription} />
<link rel="canonical" href={siteURL} />
<meta property="og:url" content={siteURL} />
<meta property="og:title" content={siteTitle} />
<meta property="og:description" content={siteDescription} />
<meta property="og:site_name" content={database.Title} />
<meta property="og:image" content={ogImage || siteOGImage} />
<meta name="twitter:title" content={siteTitle} />
<meta name="twitter:description" content={siteDescription} />
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:image" content={ogImage || siteOGImage} />
<link
rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/[email protected]/dist/katex.min.css"
integrity="sha384-vKruj+a13U8yHIkAyGgK1J3ArTLzrFGBbBc0tDp4ad/EyewESeXE/Iv67Aj8gKZ0"
crossorigin="anonymous"
/>
<link rel="icon" href="/favicon.ico" sizes="32x32">
<link rel="icon" href="/icon.svg" type="image/svg+xml">
<link rel="apple-touch-icon" href="/apple-touch-icon.png"><!-- 180×180 -->
<link rel="manifest" href="/manifest.webmanifest">
</head>
反映に1時間程度掛かりました。
このサイトにURLを入力することで、自分の各種アイコンの反映状況を確認することができます。
これで終わりなんですが、体感では読み込みが不安定です。アイコンを設定してない初期状態(ページタイトルの頭文字のやつ)になることがあります。
時間を置いての確認が必要そうです。