跳到主要内容

用 ASCII 横幅给项目名一眼定调:figlet 艺术字横幅怎么做

把一个短词变成由小字符拼成的大号 ASCII 艺术字横幅,放进 README 标题、终端启动画面或代码注释。讲清三套字体怎么选、为什么只在等宽字体里对齐,以及怎么直接复制进代码。

发布于 作者 李雷
#ascii #命令行 #readme #开发工具 #文字艺术

用 ASCII 横幅给项目名一眼定调

你大概见过这种画面:打开一个开源仓库,README 最顶上是项目名用大号字符拼出来的一行横幅;或者跑一个命令行工具,启动那一瞬间终端先打印一段大字。那不是图片,而是一堆 # 或者别的小字符,按网格摆成大字母的样子。这套老办法有个名字,叫 figlet。

我自己写小工具时,习惯在启动时先回显一张写着工具名的横幅。一来确认进程真的跑起来了,二来在一长串日志里往回滚,大字比纯文本好认太多。下面把这件事拆开讲清楚:横幅是怎么拼出来的,三套字体各自适合什么,以及为什么有时候它会歪。

大字母其实是小字符摆出来的

先把原理说透,后面的取舍才好理解。每个大字母都建在一个固定网格上,每一列正好占一个字符的宽度,每个字母高好几行。工具做的事,就是把你输入的词里每个字母对应的那一小块字形,横向拼接起来,再逐行输出。

举个具体的。输入 HI,选 block 字体,出来大概是这个样子:

██   ██  ██
██   ██  ██
███████  ██
██   ██  ██
██   ██  ██

H 占左边五行,I 占右边五行,两块在水平方向并排,于是整个词读起来就是一张横幅。字母之间还能用滑块加间距,想松一点就把那道空白列拉宽。换成 banner 字体,同样的词会变成用 # 号拼的六行经典样子,更接近大家印象里 figlet 默认的那种观感。

三套字体分别什么时候用

Figlet ASCII 横幅生成器 内置三套字体,差别主要在高度和密度:

  • block:用实心方块字符拼的五行实心字。最厚重,适合要抢眼的场合,比如 README 顶部的项目名。
  • banner:用井号拼的六行字,最高,最有老派 figlet 味道。适合启动画面或正式一点的标题。
  • small:三行紧凑字。窄终端、签名、行宽受限的代码注释里更合适,不会一下占掉半屏。

三套都覆盖 A 到 Z、数字 0 到 9、空格,以及感叹号、问号、句点、逗号、冒号、连字符和加号这几个标点。小写会自动转成大写,遇到没有字形的字符,比如 at 符号或表情,会渲染成与空格等宽的空白列占位,而不是直接断行,这样剩下的部分仍然对齐。

为什么只在等宽字体里才对齐

这是最常被踩的坑,值得单独说。既然每一列都是按一个字符宽来排的,那就只有当每个字符占的横向空间都相同时,字母才会正确堆叠。这个条件只在等宽字体里成立,比如 Consolas、Menlo,或者终端和多数代码编辑器的默认字体。

要是把横幅粘进 Arial 这类比例字体,各列会一点点错位,整张图看着歪斜。所以横幅的归宿是代码围栏、终端、代码编辑器,不是文字处理软件,也不是用变宽字体的聊天框。粘进 README 时记得包在三个反引号的代码块里,这样无论在哪个代码托管平台上看都不会乱。

把它复制进代码注释和启动语

横幅最实在的用法,就是直接进代码。生成一个短标签,比如 CONFIGROUTES,粘进块注释里当标题卡,别人滚动长模块时这一段会自然跳出来。命令行工具则可以把横幅作为多行字符串嵌进程序,在第一条日志之前打印,一行大字写着 READY 的开机画面在滚动终端里一眼就能认出。CI 日志也一样,在 BUILD 和 DEPLOY 之间插一张横幅,一墙文字立刻有了可以跳着看的分段。

有个提醒:横幅每个字母都要好几列宽,block 字体下一个十字母的词很容易超过 60 列而换行。词尽量短,或者把一句话拆成上下两张横幅竖着叠。

如果你要的不是大字母横幅,而是更花的单行装饰字,可以看 Fancy 文字生成器;想画的是图案而非文字,ASCII 艺术字生成器 更对路。

横幅全程在浏览器本地完成,不引入 figlet 库、不下载字体文件,分享链接还能原样还原同一张横幅。输入一个词、选字体、调间距、复制,整个过程几秒钟。


Made by Toolora · Updated 2026-06-13