enhance(emoji): update to Unicode 17, unify and lazy-load emoji data (#39363)

Generate emoji data from Unicode 17's `emoji-test.txt`, keeping existing
aliases. `public/assets/emoji.json` is now the single emoji data file,
also loaded by the backend. Rendered emoji drop their `aria-label`, the
dark theme inverts key on a new `data-alias` attribute instead.

Skin tone variants and their Gitea-only aliases are removed, GitHub has
none either.

Emoji autocompletion is now lazy-loaded with the markdown editor,
shrinking the index JS chunk from 653KB to 563KB.

---------

Signed-off-by: silverwind <me@silverwind.io>
Signed-off-by: wxiaoguang <wxiaoguang@gmail.com>
Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
Co-authored-by: bircni <bircni@icloud.com>
This commit is contained in:
silverwind
2026-09-24 20:23:15 +00:00
committed by GitHub
co-authored by wxiaoguang bircni
parent 05f049e8bb
commit 64f31d9b70
24 changed files with 2185 additions and 15287 deletions
+20 -20
View File
@@ -313,25 +313,25 @@ gitea-theme-meta-info {
}
/* invert emojis that are hard to read otherwise */
.emoji[aria-label="check mark"],
.emoji[aria-label="currency exchange"],
.emoji[aria-label="TOP arrow"],
.emoji[aria-label="END arrow"],
.emoji[aria-label="ON! arrow"],
.emoji[aria-label="SOON arrow"],
.emoji[aria-label="heavy dollar sign"],
.emoji[aria-label="copyright"],
.emoji[aria-label="registered"],
.emoji[aria-label="trade mark"],
.emoji[aria-label="multiply"],
.emoji[aria-label="plus"],
.emoji[aria-label="minus"],
.emoji[aria-label="divide"],
.emoji[aria-label="curly loop"],
.emoji[aria-label="double curly loop"],
.emoji[aria-label="wavy dash"],
.emoji[aria-label="paw prints"],
.emoji[aria-label="musical note"],
.emoji[aria-label="musical notes"] {
.emoji[data-alias="heavy_check_mark"],
.emoji[data-alias="currency_exchange"],
.emoji[data-alias="top"],
.emoji[data-alias="end"],
.emoji[data-alias="on"],
.emoji[data-alias="soon"],
.emoji[data-alias="heavy_dollar_sign"],
.emoji[data-alias="copyright"],
.emoji[data-alias="registered"],
.emoji[data-alias="tm"],
.emoji[data-alias="heavy_multiplication_x"],
.emoji[data-alias="heavy_plus_sign"],
.emoji[data-alias="heavy_minus_sign"],
.emoji[data-alias="heavy_division_sign"],
.emoji[data-alias="curly_loop"],
.emoji[data-alias="loop"],
.emoji[data-alias="wavy_dash"],
.emoji[data-alias="feet"],
.emoji[data-alias="musical_note"],
.emoji[data-alias="notes"] {
filter: invert(100%) hue-rotate(180deg);
}