菜单

开发环境设置

相关源文件

本文档介绍了如何设置 Fira Code 字体项目的开发环境。它涵盖了修改字体、生成连字以及构建字体文件所需的工具、依赖项和配置。有关设置环境后实际构建过程的信息,请参阅 构建过程

开发环境概述

Fira Code 开发环境由多个组件组成,支持字体编辑、连字生成和字体构建。

来源:deps.edn .gitignore script/repl.sh

先决条件

在设置开发环境之前,请确保已安装以下软件

软件目的所需功能
Glyphs App字体编辑核心字体开发
Java JDK 8+Clojure 运行时连字生成、字体检查
Clojure CLIClojure 执行运行 Clojure 脚本
Docker容器环境可复现的构建
Git版本控制源代码管理

来源:deps.edn .gitignore

字体编辑环境

Fira Code 的核心是字体定义文件 FiraCode.glyphs,需要使用 Glyphs 应用程序进行编辑。

Glyphs App 安装

  1. 安装 Glyphs 应用程序(商业软件,macOS 可用)
  2. 确保您可以打开和编辑 .glyphs 文件
  3. 克隆 Fira Code 仓库
  4. 从仓库中打开 FiraCode.glyphs

请注意,除了 FiraCode.glyphs 之外,仓库还会忽略大多数 .glyphs 文件,如 .gitignore 文件所示

*.glyphs
!FiraCode.glyphs

来源:.gitignore13-15

Clojure 开发环境

Fira Code 使用 Clojure 进行连字生成和字体验证。设置 Clojure 环境对于开发至关重要。

来源:deps.edn clojure/user.clj script/repl.sh script/check_widths

Clojure 安装

  1. 请按照 https://clojure.org/guides/install_clojure 上的说明安装 Clojure CLI 工具
  2. 在终端中运行 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

REPL 设置

为了进行交互式开发,Fira Code 提供了一个 REPL(Read-Eval-Print Loop)设置

  1. 通过运行 shell 脚本来启动 REPL

  2. 这将在一个随机端口上启动一个 Socket REPL 服务器,该端口会写入一个 .repl-port 文件

  3. 您可以使用您的 Clojure 开发环境连接到此 REPL

REPL 设置由 user.clj 文件处理,该文件提供了

  • 通过 reload 函数实现的命名空间重新加载功能
  • 调试实用程序,如用于打印的 p
  • Socket REPL 配置

来源:clojure/user.clj1-72 script/repl.sh1-6

构建环境

构建环境包括 shell 脚本和 Docker 配置,以确保跨不同平台的构建可复现性。

构建目录结构

.gitignore 文件提供了关于各种开发工件的见解

*.zip
target
clojure/*.edn
.cpcache
master_ufo
instance_ufo
distr/*/

来源:.gitignore1-13

开发工作流

来源:script/check_widths clojure/user.clj

字体验证工具

为了在开发过程中确保字体质量,Fira Code 包含验证脚本

宽度检查

check_widths 脚本会验证字体字形的宽度

此脚本调用 Clojure 命名空间 fira-code.checks 来执行宽度验证。

来源:script/check_widths1-3

开发产物和排除项

.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 开发。

来源:.gitignore8-20

代码组织

来源:.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

开发技巧

  1. user.clj 文件包含了几个用于交互式开发的实用程序

    • 用于刷新命名空间的 reload 函数
    • 用于增强调试的 p 函数
    • 用于与开发工具连接的 Socket REPL 配置
  2. 字体相关的开发通常包括

    • 在 Glyphs 应用中编辑字形
    • 运行 Clojure 脚本来生成连字
    • 使用 shell 脚本构建字体文件
    • 测试生成的字体文件
  3. 对于协作开发

    • 遵循现有代码风格
    • 在提交更改前运行检查
    • 在多个环境中测试字体

来源: clojure/user.clj script/check_widths