Fira Code 是一款专为编程设计的免费等宽字体,它为代码中常用的多字符组合提供了连字(ligatures)。本文档概述了 Fira Code、其目的、主要功能以及为其提供支持的技术架构。有关详细的安装说明,请参阅安装和使用,有关特定功能的信息,请参阅字体功能。
在编写代码时,程序员经常使用多字符符号,例如 ->、<= 或 :=。虽然这些符号被表示为单独的字符,但在大多数编程语言中,它们在逻辑上作为一个单一的标记。人脑会花费心力将这些单独的字符在视觉上连接成有意义的操作符。
Fira Code 通过使用字体连字解决了这个问题——这是一种将字符序列替换为单个自定义字形的排版功能。这使得代码更具可读性,而不会改变底层文本内容。
Fira Code 提供了几项增强编程体验的关键功能
=>、!= 和 >= 这样的组合被显示为单个、特别设计的字形。Fira Code 将许多常见的多字符组合转换为单个连字
| 类别 | 输入文本 | 渲染为 |
|---|---|---|
| 箭头 | ->, =>, <-, <= | 箭头连字 |
| 等号 | ==, ===, !=, !== | 相等/不等式连字 |
| 运算符 | ++, **, //, :: | 运算符连字 |
| 括号 | <!--, <!--> | 注释括号连字 |
Fira Code 的架构由多个相互关联的系统组成,它们协同工作以创建用户安装的字体文件。
图示:高层系统架构
字体定义系统是 Fira Code 的核心,它在一个源文件中包含所有字形设计、OpenType 功能规范和元数据。
图示:字体定义系统组件
FiraCode.glyphs 文件是定义字体所有方面的母源文件,包括
来源:FiraCode.glyphs1-10 README.md244-253
连字生成系统负责定义字符序列如何通过 OpenType 功能转换为连字。
图示:连字生成过程
Fira Code 中的连字主要通过 OpenType 的 calt(上下文替换)功能实现,而不是更传统的 liga(标准连字)功能。这允许
来源:FiraCode.glyphs594-620 CHANGELOG.md294-297
构建系统将字体定义转换为多种输出格式,以满足不同的使用场景。
图示:构建和分发过程
构建过程从 FiraCode.glyphs 源文件开始,并生成多种字体格式
Fira Code 提供多种字重,以适应不同的显示环境和偏好
| 字重 | 描述 |
|---|---|
| 细体 | 最细的版本,适合高分辨率显示器 |
| 常规 | 标准字重,适用于大多数用途 |
| 中等 | 比 Regular 稍重 |
| 半粗体 | 介于 Medium 和 Bold 之间 |
| 粗体 | 最重的字重,用于强调 |
| 可变 | 具有可调字重的单个文件 |
此外,Fira Code 通过 OpenType 功能提供广泛的自定义选项
来源:FiraCode.glyphs7-12 README.md43-49 CHANGELOG.md61-68
Fira Code 自首次发布以来已显著发展。每个版本都引入了新的连字、修复了问题并增加了功能
图示:Fira Code 版本演变
开发方法已从添加单个连字发展为实现一种更系统、更具组合性的方法,该方法允许某些序列(如任意长度的箭头)进行无限组合。
Fira Code 使用高级 OpenType 功能来实现其功能。主要机制是上下文替换(calt)功能,它允许基于周围上下文的字符替换。
连字系统分阶段工作
例如,箭头组合系统允许通过顺序替换来实现任意长度的箭头,而不是拥有一组预定义的固定箭头连字。
来源:FiraCode.glyphs650-1650 CHANGELOG.md93-103
Fira Code 可在各种编辑器和环境中运行,但支持情况各异
| 环境类型 | 支持良好的示例 | 支持有限 |
|---|---|---|
| 文本编辑器 | VS Code、Sublime Text、Atom | 记事本(Windows) |
| 集成开发环境 (IDE) | IntelliJ IDEA、WebStorm、PyCharm | Adobe Dreamweaver |
| 终端 | iTerm2、Windows Terminal、Kitty | GNOME Terminal、PuTTY |
| 浏览器 | 支持 WOFF2 的现代浏览器 | IE 10-11(有限支持) |
有关不同环境下的具体设置说明,请参阅编辑器和终端兼容性。
要开始使用 Fira Code,您需要