本文档介绍了如何设置 Fira Code 字体项目的开发环境。它涵盖了修改字体、生成连字以及构建字体文件所需的工具、依赖项和配置。有关设置环境后实际构建过程的信息,请参阅 构建过程。
Fira Code 开发环境由多个组件组成,支持字体编辑、连字生成和字体构建。
来源:deps.edn .gitignore script/repl.sh
在设置开发环境之前,请确保已安装以下软件
| 软件 | 目的 | 所需功能 |
|---|---|---|
| Glyphs App | 字体编辑 | 核心字体开发 |
| Java JDK 8+ | Clojure 运行时 | 连字生成、字体检查 |
| Clojure CLI | Clojure 执行 | 运行 Clojure 脚本 |
| Docker | 容器环境 | 可复现的构建 |
| Git | 版本控制 | 源代码管理 |
Fira Code 的核心是字体定义文件 FiraCode.glyphs,需要使用 Glyphs 应用程序进行编辑。
.glyphs 文件FiraCode.glyphs请注意,除了 FiraCode.glyphs 之外,仓库还会忽略大多数 .glyphs 文件,如 .gitignore 文件所示
*.glyphs
!FiraCode.glyphs
Fira Code 使用 Clojure 进行连字生成和字体验证。设置 Clojure 环境对于开发至关重要。
来源:deps.edn clojure/user.clj script/repl.sh script/check_widths
clojure -version 来验证您的安装Fira Code 项目在 deps.edn 中定义了以下 Clojure 依赖项
org.clojure/clojure v1.11.1
org.flatland/ordered v1.5.7
fipp/fipp v0.6.18
org.clojure/tools.namespace v1.3.0
来源:deps.edn1-5
为了进行交互式开发,Fira Code 提供了一个 REPL(Read-Eval-Print Loop)设置
通过运行 shell 脚本来启动 REPL
这将在一个随机端口上启动一个 Socket REPL 服务器,该端口会写入一个 .repl-port 文件
您可以使用您的 Clojure 开发环境连接到此 REPL
REPL 设置由 user.clj 文件处理,该文件提供了
reload 函数实现的命名空间重新加载功能p来源:clojure/user.clj1-72 script/repl.sh1-6
构建环境包括 shell 脚本和 Docker 配置,以确保跨不同平台的构建可复现性。
.gitignore 文件提供了关于各种开发工件的见解
*.zip
target
clojure/*.edn
.cpcache
master_ufo
instance_ufo
distr/*/
来源:script/check_widths clojure/user.clj
为了在开发过程中确保字体质量,Fira Code 包含验证脚本
check_widths 脚本会验证字体字形的宽度
此脚本调用 Clojure 命名空间 fira-code.checks 来执行宽度验证。
.gitignore 文件提供了对各种开发产物的见解
.DS_Store # macOS system files
*.numbers # Numbers spreadsheet files
.idea # IntelliJ IDEA files
.fleet # JetBrains Fleet files
*.iml # IntelliJ module files
*.glyphspackage # Glyphs package files
这些条目表明开发者可能使用 IntelliJ IDEA 或 JetBrains Fleet 等 IDE 进行 Clojure 开发。
来源:.gitignore deps.edn clojure/user.clj
| 任务 | 命令 | 目的 |
|---|---|---|
| 启动 REPL | ./script/repl.sh | 交互式开发 |
| 检查字体宽度 | ./script/check_widths | 字体验证 |
| 重新加载代码 | 在 REPL 中调用 (reload) | 在开发过程中刷新 Clojure 代码 |
| 打印调试信息 | 使用 #p 或 (p ...) | 调试 Clojure 代码 |
来源:script/repl.sh script/check_widths clojure/user.clj24-56
user.clj 文件包含了几个用于交互式开发的实用程序
reload 函数p 函数字体相关的开发通常包括
对于协作开发