Irdin
基于 Irdin 语言创建完整的数字字体(EOT、TTF、WOFF2),将 Figma 设计转化为可复用的 Web 组件。
该项目的主要目标是解决技术可访问性问题:即一种被认为是原生原始书写系统(由 Dakila Pesquisas 发现的 Irdin 语言)向现代数字与排版格式的数字化、标准化文档记录与分发。
该平台不运行复杂的后端,也不处理并发事务;其核心业务逻辑在于多语言内容的静态注入以及通过快速的 Web 架构优化分发设计文件(OTF、TTF 和 WOFF2 格式的排版矢量)。
1. 业务功能与工作流
该项目充当分发和文档记录的中央节点。其主要实用价值在于为研究人员、学者和设计师提供对字体资源的无缝访问,避免他们依赖手稿或非标准化的线条绘制。
从资产构思到最终用户消费,业务工作流分为两个主要阶段:
- 矢量化阶段(设计到代码):
- 数据起点是代表该语言每个符号的独立图像。
- 使用 Figma 和专用插件 (Font Generator),我构建了一个工作流,其中每张图像都被矢量化并转换为字形节点。
- 这些矢量由插件处理——在 GitHub Gists 上托管的代码支持下——生成可下载的二进制文件(OTF、TTF、WOFF2,以及用于测试的 CSS 和 HTML 文件)。
- 分发阶段(使用):
- 用户通过静态路由器 (
ClientRouter) 访问 Web 平台。 - 进入后,互连的导航组件 (
Topbar.astro) 允许在语言的本地版本(pt-br, en, es, ja)之间立即切换。 - 静态架构将技术元数据(作者、版本、发布日期)注入 DOM,并向用户提供通过联系链接请求字体的选项。
- 用户通过静态路由器 (
2. 软件架构与建模
对于 Web 门户的开发,我选择了基于 静态站点生成 (SSG) 的架构模式,并使用 Astro 采用隔离组件模型 (Island Architecture)。选择这种模式的理由在于领域的本质:信息(关于字体、作者和历史渊源的数据)具有极低的突变性。传统的 SPA (Single Page Application) 系统(如 React 或 Angular)会在客户端引入不必要的 JavaScript 开销,从而损害 SEO 和性能 (Time to Interactive)。
结构模式:基于组件的 SSG
代码的结构遵循清晰的职责分离:
src/layouts:定义主骨架 (Layout.astro),注入全局样式表、Vercel 分析脚本和动态 SEO 元数据 (Astro.props)。src/pages:处理路由。国际化 (i18n) 采用物理页面方法,为每种语言设置特定目录(en/,es/,ja/,pt-br/)。src/components:包含没有突变状态的可重用实体(例如 SVG 国旗、背景噪声效果、导航组件)。
数据模型(状态注入)
主要领域状态不可变地存在于最顶层视图组件本身内部(例如 index.astro)。
classDiagram
class IndexPageData {
<<Struct>>
+Font font
+CallToAction cta
+Author author
+Links links
+Release release
}
class Font {
+String name
+String version
}
class CallToAction {
+String label
+String url
+String message (URI Encoded)
}
class Author {
+String fullName
+String email
+String websiteUrl
}
IndexPageData *-- Font
IndexPageData *-- CallToAction
IndexPageData *-- Author
不需要调用 API 或外部数据库,数据是在 AOT (Ahead of Time) 编译期编译的。这消除了网络延迟并确保了下载资源的最大可用性。
流程图:排版导入到 Web
下图详细说明了项目核心的生产链,从视觉符号开始直至最终用户交互。
flowchart TD
subgraph 字体创建环境 [Figma Environment]
A[Irdin 基础图像] -->|手动过程| B(单体矢量化)
B --> C[Font Generator 插件]
C -->|GitHub Gists 脚本| D{字体编译}
end
subgraph 二进制资产
D --> E[Irdin-1.0.otf]
D --> F[Irdin-1.0.ttf]
D --> G[Irdin-1.0.woff2]
end
subgraph Astro SSG 平台 [Web 分发]
H[src/pages/index.astro] -->|注入数据| I[Layout.astro 基础]
H -->|渲染| J[文档 UI]
I --> K[ClientRouter]
end
E -.->|引用自| J
F -.->|引用自| J
G -.->|引用自| J
Usuario((用户)) -->|访问| K
Usuario -->|请求下载| L[WhatsApp 参数化 URL]
3. 技术栈
开发环境的选择确保了静态分发层面的可维护性、可扩展性以及严格的代码控制。
| 层级 | 技术 | 理由 / 架构角色 |
|---|---|---|
| 主要框架 | Astro (v5) | 因其群岛架构和“零 JS”发送而被选中。处理静态路由 (ClientRouter) 和国际化视图的编译。 |
| 语言 / 类型 | TypeScript | 原生集成于 Astro 中,在元数据定义(例如 Layouts 中的 interface Props)中提供类型安全并在编译期进行验证。 |
| 样式 | Tailwind CSS (v4) | 原子级设计实用程序提供商,将响应式设计直接耦合到组件标记中,确保生产环境中极轻量的 CSS。 |
| 测试 (单元) | Vitest | Vitest 用于测试隔离逻辑,在每次构建前预防回归。 |
| Linting 与格式化 | Biome | 配置严格规则,以在项目层级的 .astro、.ts 文件和样式表中强制执行一致的代码规范。 |
| 网络分析 | Vercel Analytics | 在客户端注入监控,以在页面层级量化流量和用户流,而不会显著影响第三方资源的加载。 |
4. 技术总结
Irdin 字体网站采用务实的方法构建,优先考虑稳定性和内容交付速度。通过在 Astro 上利用纯静态站点生成架构,并将计算处理的复杂性转移到初始设计环境 (Figma),彻底消除了运营后端的开销。结果是一个高可用的数字产品,通过扎实的 TypeScript 基础和自动化测试防止回归,履行了以极低的服务器基础设施成本全球化记录人类学-语言学资源的结构性要求。
拖动可移动图示。按 + 和 − 缩放,方向键移动,0 重置视图。
一起合作
软件工程师、高级全栈开发工程师,常驻玻利维亚Santa Cruz,远程办公。欢迎新的工作机会。