From b76144746b857e5ff0a1f6ca8dd4652c463511b9 Mon Sep 17 00:00:00 2001 From: Mina Choi Date: Tue, 15 Sep 2026 17:32:03 +0900 Subject: [PATCH] =?UTF-8?q?[feat]=20solution/frontend,site:=20=ED=8C=8C?= =?UTF-8?q?=EB=B9=84=EC=BD=98=EC=9D=84=20PNG=20=EB=A1=9C=20=E2=80=94=20?= =?UTF-8?q?=EB=B0=9C=ED=96=89=EB=B3=B8=C2=B7=EC=95=B1=20=EC=96=91=EC=AA=BD?= =?UTF-8?q?=EC=97=90=20=EA=B1=B4=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 주신 32x32 PNG 를 브랜드 자산으로 넣고 앱과 발행본이 같이 쓴다. SVG 는 뒤에 남겨 둔다 — PNG 를 못 읽는 자리는 없지만, 고해상도 탭에서는 SVG 가 낫다. 브라우저는 앞의 것부터 보고 처리할 수 있는 것을 고른다. - public/brand/favicon-w4a.png (신규, 32x32) - site/seo/head.ts · frontend/root.tsx: PNG 를 먼저, SVG 를 뒤에 검증: site vitest 86건 통과 · tsc(site·frontend) 통과. 발행본 반영에는 전체 재굽기가 필요하다. Co-Authored-By: Claude Opus 5 (1M context) --- solution/frontend/public/brand/favicon-w4a.png | Bin 0 -> 339 bytes solution/frontend/src/root.tsx | 1 + solution/site/src/seo/head.ts | 1 + 3 files changed, 2 insertions(+) create mode 100644 solution/frontend/public/brand/favicon-w4a.png diff --git a/solution/frontend/public/brand/favicon-w4a.png b/solution/frontend/public/brand/favicon-w4a.png new file mode 100644 index 0000000000000000000000000000000000000000..7ba4919bc4e7870855f777cdcb00beb4739e33cc GIT binary patch literal 339 zcmV-Z0j&OsP)}T(9qCFM@J$e zB3@oz`1ts`y1JN{m@+aldwY8w9UXsvf8*ohl9G~CR8+;q#jdWdIyyR?e+R_?0065= zL_t(IjqQ-j4uUWcMel(E [ + {rel: 'icon', type: 'image/png', sizes: '32x32', href: '/brand/favicon-w4a.png'}, {rel: 'icon', type: 'image/svg+xml', href: '/brand/favicon-w4a.svg?v=14'}, // self-host Pretendard 가 어떤 환경에서든 못 뜰 때 한글이 굴림/맑은고딕으로 떨어지지 않게 하는 안전망 {rel: 'preconnect', href: 'https://fonts.googleapis.com'}, diff --git a/solution/site/src/seo/head.ts b/solution/site/src/seo/head.ts index d66f78f..d4cb4aa 100644 --- a/solution/site/src/seo/head.ts +++ b/solution/site/src/seo/head.ts @@ -181,6 +181,7 @@ export function renderHead({payload, meta, scriptSrc, cssHrefs = []}: HeadOption * 파일은 오리진 루트의 공용 자산이라 사이트마다 복사하지 않는다 — `basePath` 가 아니라 * 루트 절대경로로 가리킨다(robots·sitemap 과 같은 자리다). */ + tag('link', {rel: 'icon', type: 'image/png', sizes: '32x32', href: '/brand/favicon-w4a.png'}), tag('link', {rel: 'icon', type: 'image/svg+xml', href: '/brand/favicon-w4a.svg'}), tag('link', {rel: 'apple-touch-icon', href: '/apple-touch-icon.png'}), tag('meta', {'http-equiv': 'content-language', content: 'ko-KR'}),