[feat] solution/frontend,site: 파비콘을 PNG 로 — 발행본·앱 양쪽에 건다

주신 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) <noreply@anthropic.com>
This commit is contained in:
Mina Choi 2026-09-15 17:32:03 +09:00
parent 079c93a62a
commit b76144746b
3 changed files with 2 additions and 0 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 339 B

View File

@ -15,6 +15,7 @@ const PUBLISH_HOST = import.meta.env.VITE_PUBLISH_HOST || 'web4ai.o2osolution.ai
export const ORIGIN = `https://${PUBLISH_HOST}`;
export const links: LinksFunction = () => [
{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'},

View File

@ -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'}),