使用方法
- 输入框内容与结果区字符画都是服务端直出的示例
LIUQUAN:即使脚本没跑起来或被浏览器拦下,页面也已把 5 行字符画放在这里,输入框不会是空白。 - 「输出风格」下拉选 block、shade、star 或 dot。四种风格共用同一张 5 行 × 3 列字形表,切换只在渲染最后一步换掉描边字符:block 井号、shade 艾特符、star 星号、dot 实心圆点与中间点。
- 「宽文本处理」默认横向滚动,结果区保留原始列宽并给出滚动条。改成自动折行后按容器宽度换行,适合窄屏截图,但挤到下一行的尾部会让肉眼误判成字形错位。
- 在输入框里直接按回车即触发渲染,不必点按钮;改动风格或宽文本处理方式也会立刻重画,输入过程中不需要等待。
- 结果区上方四个卡片给出输出行数、最长行字符数、总字符数与未收录字符个数。遇到字形表之外的字符时,下方会列出未收录清单。
- 「复制字符画」把 5 行文本原样放进剪贴板(含行尾空格),「复制对照表」复制逐字符列宽表,制表符分隔,可直接粘进表格软件。
这个ASCII艺术字生成器能解决什么问题
本页解决的是「把一小段短英文变成能直接贴进纯文本环境、比原字号大好几倍的字」。这类环境只能显示字符、不能插图:README 顶部标题、程序启动横幅、代码注释里的分段标题、论坛签名档、社交平台简介,都只能拿字符当像素用。本页在站内的旧称呼是 ASCIIArt文本生成器,页面统一改用 ASCII 艺术字生成器这一术语。
它与站内几个名字相近的页面做的是不同的事。「文本转 ASCII」做字符编码换算,关心字符码值;「ASCII 表格生成器」做边框与对齐,关心行列线怎么画;「花体文本生成器」「粗体文本生成器」则用 Unicode 里已有的数学字母符号模拟字形,产出仍是普通文本行。本页走点阵渲染,产出必然是多行块状文本,每行都要靠等宽字体撑住对齐。
正因为是多行块状文本,本页最常解决的其实是排版麻烦:宋体或黑体这类比例字体里,井号、艾特符、空格的宽度互不相等,直接粘到聊天窗口会让整幅字符画扭成锯齿。页面因此把结果固定在等宽容器里,并把宽度、行数、总字符数一并报出,方便贴出去前先判断目标环境容不容得下。
计算原理与变量说明
字形表是整套机制的起点。每个字符被写成高 5 行、宽 3 列的一小块点阵,第 r 行第 c 列要么是描边位(井号),要么是空白位(空格)。渲染时把输入转成大写,逐字符取出点阵,取同一行拼起来,字符之间再塞 2 列纯空白。
为什么总宽不是宽度乘以字数列。点阵本身 3 列宽,但相邻两个字之间还要留 2 列空白,最后一个字后面不留,于是 n 个字符的图幅宽度是 5n − 2 列,而不是直觉里的 3n 列。示例 LIUQUAN 有 7 个字符,宽度落在 33 列、每行严格 33 字符、五行合计 165 字符——这 165 是包含行尾空格的:字母 N 第一行点阵末列是空白,这一格不能裁掉,否则各行长度不一致,粘到表格类环境会变成阶梯状。
为什么结果必须放进等宽字体容器。点阵渲染把「一个字占 3 列」写进了算法,但这只在每个字符等宽时才成立。比例字体下井号通常比空格宽、实心圆点又更宽,同一行前 3 列算出的水平位移到第 30 列已放大成肉眼可见的错位。pre 或 font-family:monospace 的作用就是把每个字符的宽度重新钉成同一份度量。
为什么未收录字符要用问号占位而不是跳过。字模只收录有限的一组形状:26 个拉丁字母加空格、感叹号、问号、连字符与句点,中文、数字、绝大多数符号都不在表里。遇到它们时若直接丢弃,后面的字符会整体左移,行宽与上面算出的 5n − 2 不再吻合,读者也失去了「这里原本有个认不出来的字」的线索。用问号顶上去既保住 3 列宽度,又留下可读的提示,页面还会在结果下方单列未收录清单。
为什么 dot 风格最容易歪。前三种风格的替身字符都是西文 ASCII 符号,宽度与空格的关系在常见等宽字体里固定。dot 风格把描边位换成实心圆点、空白位换成中间点,这两个字符在很多字体里属于中日韩标点类,实际宽度可能与西文空格不同——同一行里各处各差半格,到第 33 列就累计成差一整格还多的偏移。这也是它不如井号稳定的根因,只推荐用在社媒简介这类对列对齐容忍度高的地方。
完整示例(数值仅作演示)
输入 LIUQUAN、风格 block,页面给出的五行如下,由上面的字形表渲染得到,行宽 33 字符、合计 165 字符:
# ### # # ### # # # ## # # # # # # # # # # # # # # # # # # # # ### # # # # # # ## # # # # # # ### ### ### # ### # # # #
把风格切到 shade、star、dot,行数、每行字符数、行长完全不动,只是描边字符整体替换:shade 的第一行是 @ @@@ @ @ @@@ @ @ @ @@,star 的第一行是 * *** * * *** * * * **,dot 的第一行是 ●·· ●●● ●·● ●●● ●·● ·●· ●●·。三者的第五行分别是 @@@ @@@ @@@ @ @@@ @ @ @ @、*** *** *** * *** * * * *、●●● ●●● ●●● ·●· ●●● ●·● ●·●。
对照这组结果可以看出两件事:一是字母 Q 的第五行点阵是空格井号空格,那一列只有一个点,右下角的小撇就是它的尾巴;二是相邻字符之间恒定夹着两列空白,因此 LIUQUAN 里的 U 与 Q 不会粘成一团。若输入含中文或数字,那些字符会以问号字形出现,宽度照旧按 3 列加 2 列间隔计算。
字符画宽度与风格对照表
下表是输入长度与输出尺寸的关系,宽度按 5n − 2 计,总字符数为宽度乘行数。后几行默认折叠,点「加载更多」展开;「导出 CSV」带 UTF-8 BOM。
| 输入字符数 | 输出宽度(列) | 行数 | 总字符数 |
|---|---|---|---|
| 1 | 3 | 5 | 15 |
| 3 | 13 | 5 | 65 |
| 5 | 23 | 5 | 115 |
| 8 | 38 | 5 | 190 |
| 10 | 48 | 5 | 240 |
| 12 | 58 | 5 | 290 |
| 16 | 78 | 5 | 390 |
| 20 | 98 | 5 | 490 |
| 24 | 118 | 5 | 590 |
| 32 | 158 | 5 | 790 |
| 40 | 198 | 5 | 990 |
| 64 | 318 | 5 | 1590 |
下表是四种风格各自的描边字符与适用场合。
| 风格 | 描边字符 | 适用场合 | 说明 |
|---|---|---|---|
| block | # | 终端、README 标题 | 等宽字体下最稳 |
| shade | @ | 评论区、聊天 | 比井号更醒目 |
| star | * | 签名档 | 不易被当作代码块 |
| dot | ● / · | 社媒简介 | 视觉更柔和,但依赖字体支持 |
下表按投放场景给出选风格的经验判断。
| 投放场景 | 推荐风格 | 理由 |
|---|---|---|
| README 顶部标题 | block | 阅读环境本身就是等宽或代码块 |
| 程序启动横幅 | block | 终端输出为等宽,列对齐可预期 |
| 评论区、聊天窗口 | shade | 艾特符比井号更醒目,也不易被当成话题标签 |
| 论坛签名档 | star | 星号不会被解析器当成代码块定界符 |
| 社媒个人简介 | dot | 视觉更柔和,但错位风险最高 |
| 代码注释里的分段标题 | block | 注释区域与代码同用一套等宽度量 |
| 窄屏截图 | 任意 + 开自动折行 | 横向滚动条不会进截图,但会牺牲列对齐 |
| 含中文或数字的内容 | 不适用 | 未收录字符一律以问号字形占位 |
结果边界、舍入与适用说明
- 输入统一转成大写再查字形表。大小写共用同一副点阵,因此小写输入的图形与大写完全一致。
- 输入框限长 64 字符。更长的句子会被控件截断,需要长标题时请拆成几段分别生成。
- 输入为空或只有空白时给出明确提示,不会用上一次的结果冒充本次输出。
- 未收录字符按问号字形参与渲染并单列清单;清单按字符去重,同一个字重复出现只报一次。
- 所有行长度恒等于 5n − 2,含尾部空白列。复制时不要删掉行尾空格,否则各行长度不再相等。
- 宽文本处理只改显示方式,不改文本内容:自动折行同样在等宽容器里换行,只把超宽部分挪到下一行。
- dot 风格依赖字体对圆点与中间点的度量,出现轻微错位时优先换回 block。
- 本页在点阵层面渲染,不认 emoji、不认组合字符,也不做字距微调。
常见问题
复制出去粘贴到聊天窗口,字形歪了怎么办?
目标环境没有使用等宽字体。点阵渲染的前提是每个字符占同样宽度,比例字体下井号与空格宽度不等,偏差会在同一行里逐列放大。请把目标换成代码块、等宽输入框或支持等宽的编辑器,或直接截图发出去。
为什么中文和数字会变成问号?
字形表只收录 26 个拉丁字母加空格、感叹号、问号、连字符与句点,其余字符一律按问号字形渲染,宽度仍是 3 列,后面的字符不会整体左移。想完整还原中文需要另一套更密集的点阵,不属于本页机制。
输入 7 个字符,为什么宽度是 33 列而不是 21 列?
每个字 3 列,相邻两个字之间还要夹 2 列空白,只有最后一个字后面不再补空白,所以总宽是 5n − 2。7 个字符对应 33 列,每行都是 33 字符,五行合计 165 字符。
dot 风格为什么比其他三种更容易错位?
它把描边位换成实心圆点、空白位换成中间点,这两个字符在很多字体里与西文空格的度量不同。同一行里多处各差一点,到第 33 列就积累成可见偏移。社媒简介这类对列对齐不敏感的场合可以用,终端与代码块里不建议。
能不能把两种风格混在同一幅图里?
页面不提供这个开关。混用后同一份点阵里会同时出现一两列宽的替身字符,一行里各处宽度不再一致,总宽也就不再等于 5n − 2,对齐算法随之失效。要两幅不同风格的图,请分两次生成。
为什么删掉行尾空格后看起来歪了?
渲染结果保证五行等长,每行都补齐到同一宽度。删掉行尾空白后各行长度不再相同,粘到按行定宽的环境会被二次折断,请整行复制。
这个工具免费吗?
免费,无需注册即可使用。
输入的数据安全吗?
安全。计算在当前浏览器本地完成,不会上传输入内容。