前言:Windows Terminal 默认字体是 Cascadia Code 而不是 Cascadia Code PL,所以不支持PowerLine(PL),原本打算使用微软官方推荐的Cascadia Code PL,测试后发现部分主题样式还是缺少图标,所以就打算使用开源项目“Nerd Fonts”对字体库进行扩充修补,使字体库支持丰富的图标。
Nerd Fonts
Nerd Fonts 是一个使用大量字体图标来解决程序员在开发过程中缺少合适字体的问题的项目。它可以从流行的字体图标库中将大量外部字体引入待开发的项目中,它支持的字体图标库包括 Font Awesome ➶, Devicons ➶, Octicons ➶, and others.
Ps:Nerd Font包含Powerline ,可谓是集大成者于一身。
Nerd Fonts Downloads 在官方的下载页面中也提供了热门常见的字体库,不喜欢折腾的可以直接选择一个喜欢的字体库下载安装即可,喜欢折腾的请往下看。
1、首先使用Git命令下载Nerd Fonts项目到电脑中
git clone --depth 1 https://github.com/ryanoasis/nerd-fonts.git
--depth 1 这个参数是代表获取默认分支最近一次Commit,可以避免项目过大导致超时问题(截至目前这个项目大小已经有5GB+)。
Ps:Github在大陆很慢,请使用魔法网络或加速镜像地址,对自己网络情况非常自信的请无视这句废话。
Nerd Font Patcher
Patching the font of your own choosing for use with the VimDevIcons ➶:
- requires: Python 2 (or Python 3),
python-fontforge
package (version20141231
or later, see the install instructions)
这里只说Windows中合并图标字体的方法,Nerd Fonts Readme 中有介绍其它系统的使用方法,Nerd Fonts官方对Windows中制作方法说的很含糊,甚至没有说明制作方法,所以有了本文。
Nerd Fonts 使用的是 FontForge 工具进行字体合并的,FontForge 本是一个字体设计修改工具,本质是Python FontForge模块,所以依赖Python环境,Windows安装包已内置Python3运行环境,无需配置。
Windows for FontForge | Github
下载FontForge Windows二进制安装包,然后进行安装,安装路径不要有中文和空格。
JetBrains Mono
JetBrains Mono 是JetBrains推出的一款编程字体,也是JetBrains系列产品默认的字体(2020.3.x 版本默认自带)
JetBrains Mono介绍,增加字母高度,调整斜体最佳角度(9 Angle),像素网格更严格,等宽字体,支持连字等等。个人觉得不输于Fira Code、Cascadia Code等字体。
Ps:以上准备工作所需资源均可以通过文中的超链接跳到其官方页面中获取。*
Windows 合并图标字体库的方法
1、打开 FontForge 安装目录,找到 “fontforge-console.bat” 脚本文件,双击运行。
Python Fontforge
2、在打开的Cmd控制台中切换到“Nerd Fonts”项目的存放目录
cd E:\Font\nerd-fonts
Ps:E:\Font\nerd-fonts 替换为自己的Nerd Fonts项目路径
3、FontForge
usage: font-patcher [-h] [-v] [-s] [-l] [-q] [-w] [-c] [--fontawesome]
[--fontawesomeextension] [--fontlinux] [--octicons]
[--powersymbols] [--pomicons] [--powerline]
[--powerlineextra] [--custom [CUSTOM]]
[--postprocess [POSTPROCESS]]
[--progressbars | --no-progressbars] [--careful]
[-ext [EXTENSION]] [-out [OUTPUTDIR]]
font
Nerd Fonts Font Patcher: patches a given font with programming and development related glyphs
* Website: https://www.nerdfonts.com
* Version: 1.2.0
* Development Website: https://github.com/ryanoasis/nerd-fonts
* Changelog: https://github.com/ryanoasis/nerd-fonts/blob/master/changelog.md
positional arguments:
font The path to the font to patch (e.g., Inconsolata.otf)
optional arguments:
-h, --help 显示帮助信息和退出
-v, --version 显示程序版本号和退出
-s, --mono, --use-single-width-glyphs
设置生成的字体是single-width还是double-width (默认是 double-width)
-l, --adjust-line-height
设置是否调整 line heights (一般应该尝试 center powerline separators)
-q, --quiet, --shutup
不生成 verbose output
-w, --windows 将内部字体名称限制在31个字符内 (为了 Windows 兼容性)
-c, --complete 加入所有可用的字体
--fontawesome 加入 Font Awesome Glyphs字体 (http://fontawesome.io/)
--fontawesomeextension
加入 Font Awesome 补充字体 (https://andrelzgava.github.io/font-awesome-extension/)
--fontlinux 加入 Font Linux 字体 (https://github.com/Lukas-W/font-linux)
--octicons 加入 Octicons 字体 (https://octicons.github.com)
--powersymbols 加入 IEC Power Symbols (https://unicodepowersymbol.com/)
--pomicons 加入 Pomicon 字体 (https://github.com/gabrielelana/pomicons)
--powerline 加入 Powerline 字体
--powerlineextra 加入 Powerline 字体 (https://github.com/ryanoasis/powerline-extra-symbols)
--custom [CUSTOM] 指定一个自定义图标字体,所有新字形都会在不缩放的情况下被拷贝。
--postprocess [POSTPROCESS]
指定一个针对后续进程的脚本
--progressbars 显示每个Glyph Set的完成度进度条
--no-progressbars 不显示每个Glyph Set的完成度进度条
--careful 如果发现了已经存在的字形,不要对它进行复写
-ext [EXTENSION], --extension [EXTENSION]
更改字体文件的文件格式去创建新文件 (e.g., ttf, otf)
-out [OUTPUTDIR], --outputdir [OUTPUTDIR]
将修补后的字体文件输出到特定目录
继续在已打开的Cmd控制台中输入如下命令
fontforge font-patcher E:\Font\JetBrainsMono[wght].ttf -w -c -s -out E:\Font
-w 将内部字体名称限制在31个字符内 (为了 Windows 兼容性)
-s 设置生成的字体是single-width还是double-width (默认是 double-width)
-c 加入所有可用的字体
-out 将修补后的字体文件输出到特定目录
Windows中使用,要带入-w和-s参数,不然会出现字体名称超长或安装失败,Terminal中图标宽度重叠等问题。
Ps:
1、E:\Font\JetBrainsMono[wght].ttf 替换自己的为预要修补扩展的字体库文件路径
2、E:\Font 替换为合并后字体库释放路径
如下图表示成功
Python Fontforge 合并后的字体库大小对比 合并后的字体库名称Terminal 效果图
默认字体 JetBrainsMono NFTerminal 配色网站推荐
写在最后
为什么会出现这篇文章呢,因为本机装的有Python3的环境,参考Nerd Font官方说明安装python-fontforge扩展包即可,然后pip install python-fontforge,python3-fontforge,fontforge各种尝试都不存在,然后又慢慢的细品了许久悟了。通过这个方法可以制作修补各种字体库的图标,并且很多字体都是一直在更新,而且Nerd Font也是一直在更新的,所以使用本方法可以持续更新字体库。
网友评论