前言
一、为什么要“把图变成字”
二、整体流程
PNG 文件夹 → 映射表 → nanoemoji → TTF → CDN → @font-face → 里打字出 Emoji
三、本地打包:png → ttf(30 秒)
1. 安装依赖(一次性)
# mac / Linux / WSL 均可 # 创建并进入 Python 隔离环境,避免包污染系统 python -m venv venv && source venv/bin/activate # 升级安装 nanoemoji 工具:把 PNG/SVG 打包成彩色字体 pip install -U nanoemoji
2. 准备素材
emojis/ ├─ grin.png ├─ cool.png └─ …
3. 生成映射表(自动)
cd emojis/
# 把当前目录下所有 png 文件列出来,自动生成“文件名→Unicode私有码位”映射表,保存为 config.csv
ls *.png | awk '{printf "%s,U+C%04X\n",$0,NR+0xC000}' > config.csv
示例输出
grin.png,U+C001 cool.png,U+C002
4. 一键打包
nanoemoji \ --config config.csv \ --output_file emojifont.ttf \ --color_format sbix # 彩色位图,兼容主流浏览器
5. 上传 CDN
# 上传至阿里云 OSS(提前安装并配置 ossutil) ossutil cp emojifont.ttf oss://yourbucket/font/
外链示例
https://cdn.yourdomain.com/font/emojifont.ttf
四、前端:只在 里渲染 Emoji
1. 引入字体
@font-face {
font-family: "iconfont";
src: url("https://cdn.yourdomain.com/font/emojifont.ttf") format("truetype");
}
2. 输入框样式
.emoji-input {
font-family: iconfont, system-ui, sans-serif;
font-size: 24px;
line-height: 1.2;
width: 100%;
padding: 8px;}
3. HTML 结构
4. 插入逻辑
{{ icon }} 发送


