开发
如何在 GitHub README 中加入 ASCII 字符画横幅
放进 Markdown 代码块,并控制在 80 列以内。
把项目名做成 ASCII 横幅,README 的开头会格外醒目。和图片不同,它只是纯文本,不会给仓库增加文件,在浅色和深色主题下都好看。
加到 README 中
在 Markdown 中,横幅必须放在代码块里。放在外面的话,连续的空格会被合并成一个,_ 和 * 也会变成斜体和粗体标记,字符画就毁了。
```text
_ _
_ __ ___ _ _ _ __ _ __ ___ (_) ___ ___| |_
| '_ ` _ \| | | |_____| '_ \| '__/ _ \| |/ _ \/ __| __|
| | | | | | |_| |_____| |_) | | | (_) | | __/ (__| |_
|_| |_| |_|\__, | | .__/|_| \___// |\___|\___|\__|
|___/ |_| |__/
```
# my-project
一个可以直接在终端运行的小 CLI 工具。
- 在开头的反引号后写上
text,可以关闭语法高亮,让字符保持单一颜色。 - 在横幅下方加上真正的文字标题(
# my-project)。搜索引擎和读屏软件无法把横幅识别为项目名。 - 如果字符画中连续出现三个反引号,请改用四个反引号包起来。
控制在 80 列以内
GitHub 的代码块在行太长时会横向滚动。被截断的横幅就失去了意义,所以请控制在 80 列以内;如果也想在手机上完整显示,就控制在 50 列左右。
| 阅读的地方 | 建议宽度 |
|---|---|
| 电脑上的 GitHub README | 最多 80 列 |
| GitHub 移动应用、窄屏 | 约 50 列 |
| 终端输出 | 最多 80 列 |
项目名较长时,请选择 Small、Mini 等较小的字体代替 Standard 或 Big,或者把名字分成两行。lab.ascii 每张字体卡片的右上角都会显示结果的宽度。
加到代码注释中
在文件开头或大段代码的开头放一个横幅,长文件里也更容易找到位置。
/*
* ___ ___ _ _ ___ ___ ___
* | _ \ __| \| | \| __| _ \
* | / _|| .` | |) | _|| /
* |_|_\___|_|\_|___/|___|_|_\
*/
export function render() {}
- 每一行都以注释符号(
*、//或#)开头。 - 如果字符画中有
*/,块注释会在那里结束。这样的字符画请使用//行注释。 - 如果团队规定了每行的长度(例如 100 个字符),请让横幅控制在范围内。
在程序启动时打印
想在 CLI 工具启动时打印横幅,就需要把字符画存为字符串。问题在于反斜杠(\)。在大多数语言中,反斜杠是转义序列的开头,直接粘贴字符画会丢字符或报错。
在 JavaScript 中,String.raw 可以原样保留反斜杠。
const banner = String.raw`
_ _ ___ _ _ ___
| || | __| | | | / _ \
| __ | _|| |__| |_| (_) |
|_||_|___|____|____\___/
`;
console.log(banner);
字符画中如果有反引号或 ${,模板字符串会在那里结束。这种字符画通常换一种字体更省事。
在 Python 中,在字符串前加 r,使用原始字符串。
BANNER = r"""
_ _ ___ _ _ ___
| || | __| | | | / _ \
| __ | _|| |__| |_| (_) |
|_||_|___|____|____\___/
"""
print(BANNER)
启动横幅只要遵守两条规则,就不会碍事。
- 输出交给其他程序时(例如管道或日志文件),不要打印。
- 提供
--quiet之类的选项来关闭它。
用哪种字体好?
| 字体 | 特点 |
|---|---|
| Standard | 稳妥的默认选择,适合任何名字 |
| Slant | 带速度感的斜体字母 |
| Small | 缩小版的 Standard,适合较长的名字 |
| Banner | 用 # 填满的粗大字母,最醒目 |
| Digital | 每个字母装在方框里的 3 行小横幅,适合代码注释 |
lab.ascii 的 12 种字体都只使用 ASCII 字符,在 GitHub、终端和旧环境中都不会乱。其他生成器用方块字符(█ ╗ ═)做的横幅,在非常旧的环境中可能会乱,所以如果横幅必须到处可用,请选择 ASCII 字体。
在 lab.ascii 输入项目名,就能比较 12 种字体的横幅,点击卡片即可复制。