- 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>
41 lines
1.9 KiB
Python
41 lines
1.9 KiB
Python
"""生成正式字标和全部组合 SVG 到 svg/(决策 B4:H2 比例 + F2 中文 + E5 英文 + C2 视觉对齐)。
|
||
|
||
用法:.work/venv/bin/python scripts/build_logo.py
|
||
通常由 scripts/build_assets.sh 调用;运行前 svg/ 里要已有 seal*.svg。
|
||
"""
|
||
from logo_lib import FINAL, FINAL_INSET, LOGO, NAVY, SEAL_RED, WHITE, lockup_h2, lockup_vertical, seal_group, wordmark
|
||
|
||
SVG = LOGO / "svg"
|
||
|
||
|
||
def write(name, svg):
|
||
(SVG / name).write_text(svg)
|
||
|
||
|
||
def wordmark_svg(color, pad=2):
|
||
body, w, h = wordmark(FINAL, color, inset=FINAL_INSET)
|
||
return f'<svg xmlns="http://www.w3.org/2000/svg" viewBox="{-pad} {-pad} {w + 2 * pad:.2f} {h + 2 * pad:.2f}">{body}</svg>'
|
||
|
||
|
||
write("wordmark.svg", wordmark_svg(NAVY))
|
||
write("wordmark-reverse.svg", wordmark_svg(WHITE))
|
||
|
||
for kind, suffix in (("textured", "-textured"), ("clean", "")):
|
||
for color, dark, rev in ((NAVY, False, ""), (WHITE, True, "-reverse")):
|
||
body, w, h = wordmark(FINAL, color, inset=FINAL_INSET)
|
||
write(f"logo-horizontal{suffix}{rev}.svg", lockup_h2(body, w, h, on_dark=dark, kind=kind))
|
||
write(f"logo-vertical{suffix}{rev}.svg", lockup_vertical(body, w, h, on_dark=dark, kind=kind))
|
||
|
||
# 单色:干净版印章 + 字标同色
|
||
for color, name in (("#000000", "logo-mono-black.svg"), ("#FFFFFF", "logo-mono-white.svg")):
|
||
body, w, h = wordmark(FINAL, color, inset=FINAL_INSET)
|
||
write(name, lockup_h2(body, w, h, kind="clean", seal_color=color))
|
||
|
||
# 应用图标:印泥铺满,不留白边。印章实心部分撑满画布,毛边外的空隙用印章红补齐;
|
||
# 印章下面垫纸色底,白字和颗粒仍显示为白色
|
||
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"])
|