feat(logo): 应用图标改为印泥铺满,不留白边
- build_logo.py 新增 svg/app-icon.svg:印章实心部分撑满画布,毛边外的空隙用印章红补齐,白字和颗粒保留 - build_assets.sh 由 app-icon.svg 渲染 180 / 192 / 512 / 1024px 图标,方形、不带透明,圆角交给系统 - logo-spec.md 同步资产清单 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@@ -22,8 +22,9 @@
|
|||||||
| `svg/seal-textured.svg` / `svg/seal.svg` | 只用印章:头像、水印、图标 |
|
| `svg/seal-textured.svg` / `svg/seal.svg` | 只用印章:头像、水印、图标 |
|
||||||
| `svg/seal-small.svg`、`favicon.svg` | 32–64px 专用:白色笔画已经加粗 |
|
| `svg/seal-small.svg`、`favicon.svg` | 32–64px 专用:白色笔画已经加粗 |
|
||||||
| `svg/favicon-16.svg` | 16px 专用:加粗简化的「标」字(B2 已确认的方案 B) |
|
| `svg/favicon-16.svg` | 16px 专用:加粗简化的「标」字(B2 已确认的方案 B) |
|
||||||
|
| `svg/app-icon.svg` | 应用图标:印泥铺满整个方形,不留白边(B6)。不带圆角、不带透明,圆角由系统裁 |
|
||||||
| `svg/wordmark.svg` / `wordmark-reverse.svg` | 只用字标(藏青 / 白色) |
|
| `svg/wordmark.svg` / `wordmark-reverse.svg` | 只用字标(藏青 / 白色) |
|
||||||
| `png/` | 位图导出:横版 1200 / 2400px、竖版 600px、印章 1024px(均为透明背景),以及图标 16 / 32 / 180 / 192 / 512px |
|
| `png/` | 位图导出:横版 1200 / 2400px、竖版 600px、印章 1024px(均为透明背景),以及图标 16 / 32px(透明)和应用图标 180 / 192 / 512 / 1024px(不透明,由 `app-icon.svg` 渲染) |
|
||||||
|
|
||||||
**质感版和干净版怎么选**:显示尺寸大于 64px(印章部分)时用质感版;小于 64px,或者是界面元素、单色印刷,用干净版。
|
**质感版和干净版怎么选**:显示尺寸大于 64px(印章部分)时用质感版;小于 64px,或者是界面元素、单色印刷,用干净版。
|
||||||
|
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 19 KiB |
BIN
docs/design/logo/png/icon-1024.png
Normal file
|
After Width: | Height: | Size: 150 KiB |
|
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 100 KiB After Width: | Height: | Size: 66 KiB |
@@ -34,13 +34,10 @@ rsvg-convert -w 1024 svg/seal-textured.svg -o png/seal-1024.png
|
|||||||
# 5. PNG:图标
|
# 5. PNG:图标
|
||||||
rsvg-convert -w 16 svg/favicon-16.svg -o png/favicon-16.png
|
rsvg-convert -w 16 svg/favicon-16.svg -o png/favicon-16.png
|
||||||
rsvg-convert -w 32 svg/seal-small.svg -o png/favicon-32.png
|
rsvg-convert -w 32 svg/seal-small.svg -o png/favicon-32.png
|
||||||
# 应用图标:白底,印章占 80%(iOS 不支持透明图标)
|
# 应用图标:印泥铺满整个方形,不留白边,不带透明(iOS 不支持透明图标);圆角由系统加
|
||||||
for s in 180 192 512; do
|
for s in 192 512 1024; do
|
||||||
inner=$((s * 80 / 100))
|
rsvg-convert -w "$s" -b "$RED" svg/app-icon.svg -o "png/icon-$s.png"
|
||||||
rsvg-convert -w "$inner" svg/seal-textured.svg -o "png/.tmp-$s.png"
|
|
||||||
magick -size "${s}x${s}" xc:white "png/.tmp-$s.png" -gravity center -composite "png/icon-$s.png"
|
|
||||||
rm "png/.tmp-$s.png"
|
|
||||||
done
|
done
|
||||||
mv png/icon-180.png png/apple-touch-icon-180.png
|
rsvg-convert -w 180 -b "$RED" svg/app-icon.svg -o png/apple-touch-icon-180.png
|
||||||
|
|
||||||
ls svg png
|
ls svg png
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
用法:.work/venv/bin/python scripts/build_logo.py
|
用法:.work/venv/bin/python scripts/build_logo.py
|
||||||
通常由 scripts/build_assets.sh 调用;运行前 svg/ 里要已有 seal*.svg。
|
通常由 scripts/build_assets.sh 调用;运行前 svg/ 里要已有 seal*.svg。
|
||||||
"""
|
"""
|
||||||
from logo_lib import FINAL, FINAL_INSET, LOGO, NAVY, WHITE, lockup_h2, lockup_vertical, wordmark
|
from logo_lib import FINAL, FINAL_INSET, LOGO, NAVY, SEAL_RED, WHITE, lockup_h2, lockup_vertical, seal_group, wordmark
|
||||||
|
|
||||||
SVG = LOGO / "svg"
|
SVG = LOGO / "svg"
|
||||||
|
|
||||||
@@ -31,4 +31,10 @@ for color, name in (("#000000", "logo-mono-black.svg"), ("#FFFFFF", "logo-mono-w
|
|||||||
body, w, h = wordmark(FINAL, color, inset=FINAL_INSET)
|
body, w, h = wordmark(FINAL, color, inset=FINAL_INSET)
|
||||||
write(name, lockup_h2(body, w, h, kind="clean", seal_color=color))
|
write(name, lockup_h2(body, w, h, kind="clean", seal_color=color))
|
||||||
|
|
||||||
print("ok", sorted(p.name for p in SVG.glob("logo-*.svg")) + ["wordmark.svg", "wordmark-reverse.svg"])
|
# 应用图标:印泥铺满,不留白边。印章实心部分撑满画布,毛边外的空隙用印章红补齐;
|
||||||
|
# 印章下面垫纸色底,白字和颗粒仍显示为白色
|
||||||
|
seal, _ = seal_group("textured", 0, 0, 100, on_dark=True)
|
||||||
|
write("app-icon.svg", f'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">'
|
||||||
|
f'<rect width="100" height="100" fill="{SEAL_RED}"/>{seal}</svg>')
|
||||||
|
|
||||||
|
print("ok", sorted(p.name for p in SVG.glob("logo-*.svg")) + ["wordmark.svg", "wordmark-reverse.svg", "app-icon.svg"])
|
||||||
|
|||||||
1
docs/design/logo/svg/app-icon.svg
Normal file
|
After Width: | Height: | Size: 374 KiB |