feat(achievement): 成就图标从 emoji 换成 iconify 图标名

机房的老浏览器缺 emoji 字体,成就图标会渲染成方块。改存 iconify
图标名(noto 集,Noto Color Emoji 的 SVG 版),前端渲染成 SVG,
和浏览器字体无关,视觉上与原 emoji 基本一致。

隐藏成就的遮罩图标一并改成 noto:red-question-mark。

迁移 0002 带 77 条 emoji → noto 映射,覆盖首批成就用到的全部图标;
表里没有的保持原值,前端按纯文本兜底,之后在后台手工补。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-04 19:20:02 -06:00
parent cf5c3c5d2f
commit b5702147b8
3 changed files with 128 additions and 1 deletions

View File

@@ -19,6 +19,8 @@ class Operator(models.TextChoices):
class Achievement(models.Model):
name = models.TextField(verbose_name="成就名称")
description = models.TextField(verbose_name="成就描述")
# iconify 图标名(如 noto:owl不是 emoji 字符:
# 机房的老浏览器缺 emoji 字体会渲染成方块,前端统一渲染成 SVG
icon = models.TextField(verbose_name="图标")
rarity = models.TextField(default=Rarity.BRONZE, choices=Rarity.choices, verbose_name="稀有度")
hidden = models.BooleanField(default=False, db_default=False, verbose_name="是否隐藏")