菜单

Fira Code 简介

相关源文件

Fira Code 是一款专为编程设计的免费等宽字体,它为代码中常用的多字符组合提供了连字(ligatures)。本文档概述了 Fira Code、其目的、主要功能以及为其提供支持的技术架构。有关详细的安装说明,请参阅安装和使用,有关特定功能的信息,请参阅字体功能

目的与问题陈述

在编写代码时,程序员经常使用多字符符号,例如 -><=:=。虽然这些符号被表示为单独的字符,但在大多数编程语言中,它们在逻辑上作为一个单一的标记。人脑会花费心力将这些单独的字符在视觉上连接成有意义的操作符。

Fira Code 通过使用字体连字解决了这个问题——这是一种将字符序列替换为单个自定义字形的排版功能。这使得代码更具可读性,而不会改变底层文本内容。

来源:README.md7-13

核心功能

Fira Code 提供了几项增强编程体验的关键功能

  1. 编程连字:像 =>!=>= 这样的组合被显示为单个、特别设计的字形。
  2. 箭头组合:使用字符组合的可扩展箭头表示法。
  3. 优化排版:针对编程环境微调的间距和字符设计。
  4. 字符变体:通过 OpenType 功能为特定字符提供替代设计。
  5. 广泛的 Unicode 覆盖:支持数学符号、框线绘制和其他特殊字符。

连字示例

Fira Code 将许多常见的多字符组合转换为单个连字

类别输入文本渲染为
箭头->, =>, <-, <=箭头连字
等号==, ===, !=, !==相等/不等式连字
运算符++, **, //, ::运算符连字
括号<!--, <!-->注释括号连字

来源:README.md29-45

系统架构概览

Fira Code 的架构由多个相互关联的系统组成,它们协同工作以创建用户安装的字体文件。

图示:高层系统架构

来源:README.md229-243

字体定义系统

字体定义系统是 Fira Code 的核心,它在一个源文件中包含所有字形设计、OpenType 功能规范和元数据。

图示:字体定义系统组件

FiraCode.glyphs 文件是定义字体所有方面的母源文件,包括

  • 字符形状和度量
  • 连字转换规则
  • OpenType 功能规范
  • 字符变体和样式集
  • 技术字体元数据

来源:FiraCode.glyphs1-10 README.md244-253

连字生成系统

连字生成系统负责定义字符序列如何通过 OpenType 功能转换为连字。

图示:连字生成过程

Fira Code 中的连字主要通过 OpenType 的 calt(上下文替换)功能实现,而不是更传统的 liga(标准连字)功能。这允许

  1. 更精确地控制连字的何时应用
  2. 在文本编辑器中“进入”连字的能力
  3. 上下文相关的连字应用

来源:FiraCode.glyphs594-620 CHANGELOG.md294-297

构建与分发系统

构建系统将字体定义转换为多种输出格式,以满足不同的使用场景。

图示:构建和分发过程

构建过程从 FiraCode.glyphs 源文件开始,并生成多种字体格式

  • 带有字重轴的可变字体
  • 多种格式的静态字体文件(OTF、TTF)
  • Web 优化格式(WOFF、WOFF2)
  • 支持的每种字重的字体文件

来源:README.md230-263

字重与变体

Fira Code 提供多种字重,以适应不同的显示环境和偏好

字重描述
细体最细的版本,适合高分辨率显示器
常规标准字重,适用于大多数用途
中等比 Regular 稍重
半粗体介于 Medium 和 Bold 之间
粗体最重的字重,用于强调
可变具有可调字重的单个文件

此外,Fira Code 通过 OpenType 功能提供广泛的自定义选项

  1. 字符变体(cv01-cv32):特定字符的替代设计
  2. 样式集(ss01-ss10):分组的样式修改
  3. 特殊功能(zero、onum):特殊的数字处理

来源:FiraCode.glyphs7-12 README.md43-49 CHANGELOG.md61-68

发展与演进

Fira Code 自首次发布以来已显著发展。每个版本都引入了新的连字、修复了问题并增加了功能

图示:Fira Code 版本演变

开发方法已从添加单个连字发展为实现一种更系统、更具组合性的方法,该方法允许某些序列(如任意长度的箭头)进行无限组合。

来源:CHANGELOG.md5-356

技术实现

Fira Code 使用高级 OpenType 功能来实现其功能。主要机制是上下文替换(calt)功能,它允许基于周围上下文的字符替换。

连字系统分阶段工作

  1. 检测:识别应形成连字的字符序列
  2. 替换:用特别设计的字形替换这些序列
  3. 上下文处理:应用关于何时应/不应形成连字的规则

例如,箭头组合系统允许通过顺序替换来实现任意长度的箭头,而不是拥有一组预定义的固定箭头连字。

来源:FiraCode.glyphs650-1650 CHANGELOG.md93-103

兼容性

Fira Code 可在各种编辑器和环境中运行,但支持情况各异

环境类型支持良好的示例支持有限
文本编辑器VS Code、Sublime Text、Atom记事本(Windows)
集成开发环境 (IDE)IntelliJ IDEA、WebStorm、PyCharmAdobe Dreamweaver
终端iTerm2、Windows Terminal、KittyGNOME Terminal、PuTTY
浏览器支持 WOFF2 的现代浏览器IE 10-11(有限支持)

有关不同环境下的具体设置说明,请参阅编辑器和终端兼容性

来源:README.md74-172

快速入门

要开始使用 Fira Code,您需要

  1. 从项目的发布页面下载字体文件
  2. 在您的系统上安装字体(因操作系统而异)
  3. 配置您的文本编辑器或 IDE 使用 Fira Code
  4. 在您的编辑器设置中启用连字(如果需要)

有关详细的安装和配置说明,请参阅桌面安装Web 字体使用

来源:README.md15-24