Powerline fonts & Nerd fonts 简介

作为程序员,和命令行打交道很频繁,设置一个赏心悦目的命行行 prompt 或者 Vim 的 status line 主题就很有必要了,不过一般这些漂亮的主题都会用到一些 icon 字符,这些 icon 字符一般的字体里是没有的,今天我们就来聊聊一些带有 icon 字符的字体。

为了有个直观的认识,我们来看一下设置命令行 prompt 特殊主题前后的对比: prompt_theme

设置 Vim statusline 主题前后对比: vim-statusline_theme

Powerline fonts

Powerline 是一款 Vim statusline 的插件,它用到了很多特殊的 icon 字符。Powerline fonts 是一个字体集,本质是对一些现有的字体打 patch,把 powerline icon 字符添加到这些现有的字体里去,目前对 30 款编程字体打了 patch.

Oh My Zsh! 是一个很受欢迎的 zsh 配置管理工具,它的一些主题需要用到一些特殊的的字体,比如 agnoster,需要用到 Powerline fonts

下图是 agnoster 主题的预览效果,使用的是 Source Code Pro for Powerline 字体。 -w462

如果使用的是没有打 Powerline-patch 的字体,可以看到很多特殊字符都会显示不正确,这也是很多爱好者安装一些主题后,显示效果不理想的原因。

-w576

Powerline fonts 默认对很多编程字体打了 patch(默认支持的所有字体参考 这里 ,比如我个人比较喜欢的 Source Code Pro 字体,Powerline fonts 对打过 patch 的字体做了重命名,后面都加上了 for Powerline 的后缀,比如 Source Code Pro 打完 patch 后名字改为了 Source Code Pro for Powerline

到这里,我们可以这么理解 Powerline font,以 Source Code Pro for Powerline 为例:

1
Source Code Pro for Powerline 字符集 = `Source Code Pro` 基础字符 + Powerline Icons 字符集

ps: Font Book 貌似看不到 Icon 字符,可以使用 在线工具 查看甚至编辑字体里所有的字符。

Powerline fonts 下载和安装

下载和安装很简单,

1
2
3
4
5
# clone
git clone https://github.com/powerline/fonts.git --depth=1
# install
cd fonts
./install.sh

下载完之后,如果用的是 macOS, 就可以在 Font Book 里来查看已安装的字体了。

如果你在使用 iTerm2 等,安装完之后,需要在 "iTerm > Preferences > Profiles > Text" 里设置字体为你喜欢的 Powerline fonts,才能看到效果,macOS 自带的 Terminal.app 也同理。

Nerd font

Nerd font 的原理和 Powerline fonts 是一样的,也是针对已有的字体打 patch,把一些 icon 字符插入进去。不过 Nerd font 就比较厉害了,是一个“集大成者”,他几乎把目前市面上主流的 icon 字符全打进去了,包括上面刚刚提到的 powerline icon 字符以及 Font Awesome 等几千个 icon 字符。

我比较喜欢的一款 Oh My Zsh! 主题 powerlevel10k/powerlevel10k,就推荐使用 Nerd font(虽然也支持 powerline font),显示效果如下:

-w892

Nerd font 的安装

Nerd font 对 50 多款编程字体打了 patch(具体请参考 这里,和 Powerline fonts 类似,也会在 patch 后,对名字做一下修改,比如 Source Code Font 会修改为 Sauce Code Nerd Font (Sauce Code 并非 typo,故意为之)

安装方式很多,我推荐通过 brew 来安装,比如我要安装 Sauce Code Nerd Font 的话,可以下方的命令。

1
2
brew tap homebrew/cask-fonts
brew cask install font-sourcecodepro-nerd-font-mono -v

安装完之后,也需要修改对应客户端的字体(比如 iTerm/Terminal.app)后,各种主题的效果才会生效。

总结

  1. Powerline fonts 或者 Nerd fonts 这些字体集,他们对已有的一些 (编程) 字体打了 patch,新增一些 icon 字符。
  2. Nerd fonts 是 Powerline fonts 的超集,建议直接使用 Nerd font 就好了

Have fun!