为什么 ASCII 圣诞树都是用斜线搭出来的
纯文本里没有斜线条,只有排在网格里的字符,所以只能借用本身就倾斜的字符。/ 和 \ 组成树的两侧,而 ^ 把两道斜坡挤进一个格子里,所以远看时脱字符拼成的树就像一棵松树。每往下一行,左右各多出一列,因此五层树枝的树在底部有九个字符宽。奇数宽度很关键:它留出一条真正的中线,星星 * 和树干 [_] 可以放在上面,不会偏左或偏右。
星号、下划线和脱字符会被聊天格式吞掉
Markdown 会把这些图案依赖的几个字符当成格式符号。在 Discord 和 Slack 里,同一行出现一对 *,中间的文字就会变成斜体,星星随之消失;雪人的 _===_ 帽子也可能这样丢掉下划线。Reddit 把 ^ 当作上标的开头,脱字符圣诞树就被毁了。第二个问题是比例字体,空格和斜杠不再占同样的宽度。在 Discord 用三个反引号把作品包起来,或者在 Reddit 每行前面缩进四个空格,两个应用都会切换到等宽代码块,每个字符都原样保留。
会变成彩色表情的雪人和雪花
☃ 是 U+2603 SNOWMAN,❄ 是 U+2744 SNOWFLAKE,两者早在 Unicode 1.1(1993 年)就已收录,比表情符号的出现早得多。后来它们各自又有了表情形式,所以有些手机和应用会把它们重画成彩色图片,一个字符可能比周围文字宽一倍。在字符后面加上变体选择符 U+FE0E 可以请求纯文本样式,不过并不是每个应用都会照做。❅ U+2745 和 ❆ U+2746 从来没有表情形式,始终保持单色,放在需要对齐的图案里更稳妥。
