favicon、apple-touch-icon 與 Web App Manifest 仍常需要 PNG 階梯。本文提供 Mac 維運一份 2026 矩陣:實際 WxH、maskable 中心 80% 安全圓、touch 留白、sRGB 與 favicon 銳化閘門,以及於 遠端 M4 上以 stat 與清單取代口頭驗收。
痛點:一張需求單裡其實是三種產品
- 幾何衝突。32/16 要可辨;iOS 要
180×180吃圓角;清單要192與512,單一母版難以全優。 - maskable 不等於「放大 512」。遮罩會裁邊,圖形須落在安全區。
- 色偏。廣色域定稿、sRGB 殼層交付時須先寫 ICC 契約;見 sRGB·P3 清單、WebP/AVIF 與 PNG 混排策略。
- 批量缺工人。白牌換標要同一套
sips、stat與 JSONL,筆電休眠即斷鏈。
槽位對照矩陣:favicon、touch、manifest、maskable
| 交付槽位 | 典型 PNG 尺寸 | 主要風險 | 交付規則摘要 |
|---|---|---|---|
| 經典分頁 favicon | 32×32(可選 16×16) |
縮小後發糊 | 向量 glyph 可極輕 unsharp;攝影母版不宜當 favicon |
rel="apple-touch-icon" |
180×180 |
圓角吃掉四角 | 外周留白預設 ≥10%,細線標 12–14% |
清單 icons[](any) |
192×192 與 512×512 |
缺檔或 purpose 錯誤 | 192/512 齊備,"purpose": "any",WxH 與宣告一致 |
Maskable 512 |
512×512,內區安全繪圖 |
圓形或 squircle 遮罩吃邊 | 關鍵圖形落在以中心為圓心、直徑為邊長 80% 的圓內,外圈視為可裁出血 |
可執行步驟:sips 階梯、可選銳化、清單衛生
在工作機釘選 Homebrew ImageMagick 版本;每批 JSONL 紀錄 sips --version 與 magick -version。ICC 剝離或保留須與靜態 PNG 契約一致,必要時見 ICC 與無損重壓縮清單。
步驟 1:母版對齊 sRGB
sips --matchTo "/System/Library/ColorSync/Profiles/sRGB Profile.icc" master.png --out master_srgb.png
步驟 2:以 sips 輸出確定性 WxH
sips -z 32 32 master_srgb.png --out favicon-32.png
sips -z 180 180 master_srgb.png --out apple-touch-icon-180.png
sips -z 192 192 master_srgb.png --out pwa-192.png
sips -z 512 512 master_srgb.png --out pwa-512-any.png
若仍需 legacy .ico 多幀包,再另匯 16×16;否則優先 32 加 SVG。
步驟 3:favicon 可選微銳化(magick)
magick favicon-32.png -colorspace sRGB -filter Lanczos -resize 32x32! -unsharp 0x0.45+0.45+0.006 favicon-32-sharp.png
半徑宜小,避免光暈;512 maskable 一般不做銳化,以免硬邊被遮罩放大。
步驟 4:maskable 獨立構圖與 Chrome 自檢
在 512×512 內將徽標整體縮放,使包圍盒舒適落在 80% 直徑圓 內;以 Chrome 開發者工具 Application → Manifest 預覽 maskable。勿與 any 512 混用單一檔,除非母版已天然留白充足。
步驟 5:雜湊與 HTML/manifest 對齊
shasum -a 256 pwa-512-any.png pwa-512-maskable.png >> icons-manifest.sha256
link rel="icon"、apple-touch-icon 與 manifest.webmanifest 指向的檔名須與 QA 通過件一致;改名須聯動快取鍵。
遠端 M4 批處理驗收清單
- 幾何鎖:匯出 WxH 與 manifest 宣告零容差;禁止在清單寫偶數方圖卻交付奇數邊長。
- sRGB:抽檢
magick identify -verbose中Colorspace: sRGB與書面 ICC 策略一致。 - 位元組閾值(可依 CDN 調參):
favicon-32 ≤ 12KB,180 ≤ 45KB,192 ≤ 55KB,512 any ≤ 180KB,512 maskable ≤ 220KB;寫入 README 覆蓋值。 - 銳化稽核:凡執行
-unsharp必須在 JSONL 紀錄完整參數,防預設靜默漂移。 - 安裝面煙測:Android Chrome 與 iOS Safari 各執行一次「加入主畫面」並歸檔截圖。
單條閘門可用 test "$(stat -f%z pwa-192.png)" -le 55000 在 macOS 工人上腳本化(字面量依 SKU 替換)。
可引用閾值與政策句
- Maskable 安全圓:直徑
0.8 × min(寬, 高),置中;圓外像素視為可被遮罩丟棄。 - Touch 留白:預設外周 ≥10%;尖角方形標在細筆畫情境可升到 14%。
- 清單衛生:
512同時提供purpose: "any"與"maskable"兩條目時,檔案應分軌,避免 Pixel 類啟動器裁切爭議。
FAQ
一個 512 同時充當 any 與 maskable? 僅當母版邊緣已預留大量平坦出血且通過 DevTools maskable 預覽;否則拆兩檔、兩條 manifest 紀錄最穩。
touch 圖示偏暗? 比對設計工具匯出與 Safari 的 gamma 假設;重做 sRGB matchTo 並核對審閱顯示器設定檔。
下一步:租用遠端 M4 做夜間圖示階梯與閘門
多站點換標或活動皮膚需要同一套 sips、magick 與 stat 閾值在分支間可重現時,將流水線放到遠端 Mac mini M4 專機最合適:無休眠打斷、可並行跑批、日誌與雜湊集中落盤。請開啟 MacPng 首頁 了解服務,於 購買/租用 選擇方案,查閱 價格與節點,並依 說明中心 完成 SSH 或 noVNC 接入;更多決策矩陣見公開 技術見解 列表。閱讀說明與選購流程無須登入。