ASCII 艺术字完全指南:figlet 字体 + 创意应用
从电传打字机的经典 ASCII art 到现代 Discord 聊天彩蛋,这篇指南讲清楚 figlet 的 100+ 字体库、ANSI 颜色加持、以及如何用 Unicode 块字符做图像转换。
ASCII 艺术字(ASCII art)起源于 1960 年代电传打字机时代。当计算机还没有图形界面时,程序员和艺术家用 ASCII 字符组合成各种图形和文字,演变出今天的 figlet 库和 100+ 风格字体。无论是 CLI 工具的启动 banner、命令行应用的 logo、还是 Discord 上的聊天彩蛋,掌握 ASCII 艺术字都能让内容更有趣。本指南从 figlet 原理讲到彩色实现、图像转换的高级应用,以及如何在 Vim、GitHub、终端脚本中应用。
ASCII 艺术起源与 figlet 库
历史背景:1960-1980 年代,电脑没有图形界面,所有交互都在文本终端进行。程序员和艺术家开始用 ASCII 字符(0-127)拼接成壮观的图形,用在 BBS 系统、邮件签名、系统公告栏。
figlet 诞生:1991 年,Glenn Chappell 开发了 figlet 工具,用 .flf 字体文件定义字符的 ASCII 形状。现已演进到 v2.2.5,内置 100+ 经典字体。
输入:任意 ASCII 字符串 → 输出:艺术字
例如 figlet -f slant "Hello" 输出:
``
_ _ _ _
| || |___| | |
| __ / _ \ | |
|_||_\___/_|_|
``
本工具集成了 figlet 的核心字体,无需命令行,浏览器中一键生成。→ 访问 /ascii-art/ 工具
figlet 字体库速览(20+ 常用)
- Standard(默认):经典无衬线,最平衡
- Big:超大粗体,仅需 5-10 个字符就很壮观
- Block:方形块状,ASCII 硬朗感
- Bubble:圆润泡泡风格
- Slant:斜体,优雅紧凑
- Shadow:带阴影效果,立体感
- 3-D:三维效果,适合标题
- ANSI Shadow:结合 ANSI 颜色的带阴影版
- Script:手写风格
- Cyberlarge:未来科幻风
- Digital:电子表风格
- Doh:粗线体
- Mini:超小尺寸,节省空间
- Term:终端仿古风
本工具提供 30+ 常用字体下拉选择。更多字体可在 figlet 官方 GitHub 下载 .flf 文件(共 400+ 字体)。
终端 CLI 工具的启动 banner
许多知名 CLI 工具都用 ASCII 艺术字作为启动 logo:
Vim / Neovim:打开编辑器首屏就是 Vim 的经典 logo(用 ASCII 拼的)。
Node.js:全局安装 npm install -g figlet 后,许多脚手架工具(如 create-react-app)启动时会 console.log(figlet.textSync(...)) 输出彩色 banner。
Rails:rails new myapp 时终端会输出 ASCII 艺术的 Rails logo。
实现方式(Node.js 示例):
``
const figlet = require('figlet');
figlet.text('My CLI Tool', { font: 'Slant' }, (err, result) => {
console.log(result);
});
``
用 ANSI 颜色加持,console.log 就能输出彩色 banner。本工具的「下载」功能可直接导出文本,粘进代码逻辑中。
ANSI 颜色 + Unicode 块字符进阶
ANSI 颜色:在 ASCII 艺术字两端加 ANSI 转义码即可着色。
格式:\x1b[31m红字\x1b[0m 或 \033[32m绿字\033[0m
常用颜色: - 30-37:前景色(黑、红、绿、黄、蓝、品红、青、白) - 40-47:背景色 - 90-97:高亮前景
本工具的「颜色」功能会自动插入 ANSI 码,复制后在终端立即显示彩色。
- 读取图片像素
- 计算每块的平均亮度(0-255)
- 映射到四个灰度字符(█ 最亮、░ 最暗)
- 按图片宽高比输出文本
效果:在纯文本中近似重现图像。
Discord / IRC 聊天彩蛋
Discord Rich Presence:有些 Discord Bot 会用 ASCII 艺术字显示游戏状态、Bot 启动信息、服务器通知等。Webhook 消息中嵌入 ASCII art 能让通知更富视觉冲击力。
IRC 传统:IRC 时代流行在聊天频道发大型 ASCII art 作为彩蛋。例如 motd(Message of the Day)命令输出的就是 ASCII 艺术欢迎词。某些 IRC 客户端甚至有专门的 ASCII art 格式,支持色彩和动画。
现代应用:
- GitHub README 顶部用大号 ASCII 艺术字展示项目名(如 Kubernetes、TensorFlow 的官方仓库)
- 技术博客文章头部装饰或分隔符
- 代码注释中标记重要区域(如 # ██████████ BEGIN CONFIG)
- 开源项目的 CHANGELOG / 发布公告
- Slack / Telegram 机器人的消息格式化
本工具的「复制」按钮可直接把生成的 ASCII 艺术字粘进 Markdown、代码、聊天框,无需额外处理即可跨平台兼容。
如何用本工具生成自定义 ASCII 艺术
3 步快速入门:
- 输入文本:在「输入框」粘贴你要转换的字符串(英文、数字、符号;中文支持有限)
- 选择字体:从 30+ 下拉中选择风格(推荐入门选
Big或Slant) - 可选加颜色:勾选「彩色」后选择方案,输出立即变彩色
导出选项: - 复制:一键粘到任何地方 - 下载 TXT:保存为文本文件 - 下载 SVG:矢量格式,可在 Figma 继续编辑
高级用法:
- 输入特殊字符(!@#$%^&*())可生成有趣边框
- 多行输入每行单独处理,适合创建多行标题或装饰
- 调整字体预览后再导出,确保最终效果满意
- 结合 Markdown 代码块突出显示彩色 ASCII 艺术
- 导出 SVG 格式用于印刷或高分辨率展示
常见问题
ASCII 艺术字在所有终端都显示正常吗?
取决于字体。简单的 ASCII 字符(A-Z、0-9、+-*/)在任何终端都显示正常。Unicode 块字符(█ ▓ ░)在现代终端支持,但老终端可能显示为方框或问号。
中文能转 ASCII 艺术字吗?
本工具仅支持 ASCII 范围。figlet 官方库也不支持中文字符(中文笔画太复杂)。如需中文艺术字,考虑用图像转 ASCII 或美术软件渲染。
figlet 还在维护吗?
是的,GitHub 上 cmatsuoka/figlet 仍活跃维护。最新版本 2.2.5(2022)。
彩色 ASCII 艺术字如何在网页显示?
HTML 中用 `<pre>` 标签包裹,样式用 CSS 指定颜色。本工具导出的纯文本可直接粘进 HTML。或者导出为 SVG 获得最佳排版。
为什么某些字体输出很宽很高?
字体设计差异。"Big" 占用更多行宽,"Mini" 最紧凑。根据显示空间选择合适字体。
能在终端脚本中用 ASCII 艺术字吗?
完全可以。本工具下载的 TXT 可粘进 Bash、Python 脚本的 print 语句,或 Node.js 的 console.log。