如何在 GitHub README、X 和终端里使用 ASCII 字符画
怎么在 README、X 和终端里用 ASCII 字符画?
ASCII 字符画要求每个字符宽度相同才能对齐。在 GitHub README 里,把它放进代码块;在终端里,只要窗口不比字符画窄,直接显示就行;在 X 上,帖子用的是比例字体,字符画基本都会错位,最好发成图片,或者控制得非常窄。
字符画为什么会变形?
字符画依赖等宽字体:每个字符(包括空格)占的宽度都一样。一幅 80 列的字符画,只有每一行的 80 列都和上一行对齐,看起来才是对的。
常见的破坏原因有三个:
- 比例字体。 普通正文字体里,
i比M窄,空格也很窄,行与行就对不齐了。 - 空格被合并。 HTML 和很多应用会把连续空格合成一个,有的还会删掉行首空格。
- 自动换行。 窗口比字符画窄时,长行会折到下一行,整幅图就散了。
下面的所有技巧,都是在避开这三点。
在 GitHub README 里放字符画
把字符画放进围栏代码块:前一行写三个反引号,后一行再写三个。
```text
/\_/\
( o.o )
> ^ <
```
GitHub 会用等宽字体渲染代码块,并保留所有空格和换行,所以显示效果和你粘贴的一模一样。开头反引号后面的 text 可写可不写,它的作用是告诉 GitHub 不做语法高亮,否则字符画的某些部分可能被上色。
几点实用提醒:
- 不要直接当普通 Markdown 粘贴。 在代码块外,Markdown 会合并空格,还可能把
*、_、#、-这类字符当成格式符号。 - 注意宽度。 GitHub 不会给代码块自动换行,太宽会出现横向滚动条。仓库页面的可读宽度有限,手机上更窄。做页头的话 60–80 列比较合适,想照顾手机就再窄一些。
- 留意反引号。 如果字符画里本身有连续三个反引号,外层改用四个反引号。
- 考虑背景色。 GitHub 有浅色和深色主题,为深色背景做的字符画,在部分访客那里看起来可能是反的。在意的话两种都测一下。
如果想让 logo 在任何地方都完全一致,也可以把字符画导出成图片提交到仓库,用普通图片语法引用,再在下面附一份代码块版本,方便别人复制。
在 X(Twitter)上发字符画
简单说:发图片。
X 用比例字体而不是等宽字体显示帖子,字符宽度不一,行就对不齐。在编辑器里好好的多行字符画,发出去通常是歪的。空格在发布过程中也可能被改动,App 和网页版的显示效果也可能不同。
可选做法,按可靠程度排序:
- 发截图或图片。 排版固定在像素上,所有人看到的都一样。记得加替代文字(alt text)描述画面内容,因为读屏软件读不出图片里的字符。
- 做得很小。 一两行、由宽度相近的字符组成的小图(比如
(o.o)或<(^_^)>)有机会保持原样,因为能错位的空间小。
另外别忘了字数限制:没有付费订阅时,单条帖子最多 280 个字符,一幅 80 列的字符画几行就用完了。这也是发图片更合适的原因之一。
在终端里显示字符画
终端默认就用等宽字体,所以字符画在这里几乎不用费心,主要看宽度。
很多终端默认打开时大约 80 列宽,这个尺寸沿袭自早期的字符终端。不超过 80 列的字符画不会被折行。可以用下面的命令查看当前尺寸:
tput cols # 宽度(列数)
tput lines # 高度(行数)
常见用法:
- 从文件输出。 把字符画存成
logo.txt,运行cat logo.txt。适合在脚本里显示项目横幅。 - 登录时显示(MOTD)。 在很多 Linux 系统上,通过 SSH 登录后会显示
/etc/motd的内容,把字符画放进去即可(需要sudo)。有些发行版还会用/etc/update-motd.d/里的脚本动态生成登录信息,具体看你的系统怎么配置。 - 打开 shell 时显示。 在
~/.bashrc或~/.zshrc里加一行cat ~/logo.txt。尽量短一点,免得每开一个标签页都又慢又乱。 - 在命令行工具里输出。 很多 CLI 工具启动时会打印一个小横幅。把它存成多行字符串,避免用制表符,因为制表符在不同环境下宽度不一样。
如果字符画在终端里显示错乱,通常是窗口比字符画窄,或者文件里有制表符、非 ASCII 字符,被字体渲染成了不同宽度。
图片字符画 vs. FIGlet 文字横幅
“ASCII 艺术”其实有两种,用的工具也不同。
| 文字横幅(FIGlet、toilet) | 图片转字符画 | |
|---|---|---|
| 输入 | 一个词或一句话 | 照片、logo 或插画 |
| 输出 | 用字符拼出的大号字母 | 越暗的区域用越密的字符表现的画面 |
| 常见用途 | 项目名称、CLI 页头 | 头像、logo、插图 |
FIGlet 是一个经典的命令行程序:figlet Hello 会用选定的字体把 “Hello” 拼成大字。做文字标题用它就对了,但它不能把照片变成字符组成的画面,那是图片转字符画工具的活。
怎么把图片转成字符画
Artgen 的 ASCII 字符画生成器 用固定算法而不是 AI,把图片转换成 ASCII 字符画。
- 打开 ASCII 字符画生成器 并登录。上传一张不超过 5 MB 的图片,或者先点「试用示例图片」加载预览。
- 设置列数,可选 24–85 列,默认 80 列,正好对应标准终端宽度。
- 点击「转换图片」。加载示例图片本身不会自动转换,必须点这个按钮。
- 转换完成后,可以复制文本、下载 TXT 或下载图片,再放进 README 代码块、终端文件或脚本里。
列数怎么选:
- README 页头: 60–80 列。
- 终端 / MOTD: 80 列以内,保证默认窗口放得下。
- 窄的地方(手机、聊天、小横幅): 从最小的 24 列左右开始,逐步加大,直到能认出主体。
主体清晰、对比强、背景简单的图片转换效果最好。上传前先把图片裁到主体。
这个转换登录后免费使用,无需积分。