按实体牌面画法:1 条是一整只幺鸡(唯一不按数量表达的条子); 5 条正中一根红、7 条最上一根红、9 条中间一行三根红 —— 这三张不看数字也能认; 8 条是唯一左右各一根竖杆、中间一个「山形」的(上组 ∧、下组 ∨,中间留空)。
tokens.js → glyphs.js → tiles-ui.js 后,
MJTiles.face(tileId) 返回牌面 SVG 字符串(tileId 0–26),
MJTiles.back() 返回牌背。width:100%;height:100% + viewBox 自适应),
推荐比例 60:84(约 0.714),最小可用 24×34。tokens.js,绘制代码不硬写色值。RED_STICKS:5 条正中 / 7 条最上 /
9 条中间一行)与绿节同结构、同受光,只换色系 —— 换色板的实现是
stick() 收一个色板参数,不是另写一套画法。TIAO8 /
tiao8Segments())—— 每组左右各一根完全竖直的杆,中间两根约 42° 的
短斜杆合成 ∧(上组)/ ∨(下组),上下镜像、中间留空。这组比例是从实体牌面的位图量出来的
(逐行扫墨迹段得到竖杆位置、倾角、斜杆/竖杆的长度比),不是照感觉调的;
斜杆比竖杆短约 24%,顶点距本组近端 36%。
1 条从「椭圆身体 + 圆脑袋」重绘成整幅彩绘幺鸡:冠(3 根红羽)· 上下两瓣金喙 · 眼+高光
· 颈胸身体(左上受光球面渐变)· 亮绿翅羽(3 道羽线)· 三根向左下散开的长尾羽 · 金双足
· 尾根红结(源自「一条=一串贯钱 + 一个红结」的来历)。glyphs.js,由
tools/extract-glyphs.py 从霞鹜文楷 TC Bold 抽取,SIL OFL 1.1,见
docs/OFL.txt)—— 不依赖系统字体,任何设备、任何尺寸下字形一致,
光栅化成图片纹理时也不会缺字。npm run smoke、
npm run visual 比对视觉指纹、npm run visual:compare 出前后对照图。