Fontsource 字体档案:Federant —— 从 1911 年 Feder Antiqua 到现代 Web 展示衬线体
前端CLI开发工具【免费下载链接】fontsourceSelf-host Open Source fonts in neatly bundled NPM packages.项目地址https://gitcode.com/gh_mirrors/fo/fontsource点击查看免费下载Federant 是 Cyreal 设计工作室于 2011 年发布的一款展示型衬线字体其设计目标是复兴德国字体设计师 Otto Ludwig Nägele 1911 年创作的广告字体 Feder Antiqua。本文以该字体在 Fontsource 注册表中的官方描述文档 description.en-US.md 为核心骨架系统梳理其设计理念、2016 年的 GPOS 修正历史并结合 family.json 与 distribution.json 中的元数据以及 registry 工具链源码给出在 Web 项目中完整接入 Federant 的实战方案。读完本文你将掌握Federant 的字体档案全貌、其忠于原稿与视觉修正之间的设计取舍逻辑、Fontsource 如何生成并校验该字体的描述文档以及通过fontsource/federant静态包引入并声明字体的标准流程。Federant 字体档案速览Federant 在 Fontsource 注册表中的记录位于 registry/data/families/google/federant/核心元数据由 family.json 提供关键字段如下字段值说明familyFederant字体家族名designerCyreal设计工作室Olexa M. Volochay 与 Alexei Vanyashin 具体执笔classificationsdisplay、serif分类展示字体、衬线体statusactive当前处于活跃发布状态dateAdded2011-10-05加入上游目录的日期sourceModified2026-03-27上游源文件最近一次变更license.idOFL-1.1SIL 开放字体许可证 1.1并保留字体名Reserved Font NameFederanttagsexpressive/rugged、expressive/vintage发现标签对应 taxonomy.json 中的 Rugged粗犷与 Vintage复古provenanceofl/federant google/fonts来源为 google/fonts 仓库的 OFL 目录值得留意的是dateAdded2011 年与sourceModified2026 年之间的跨度接近 15 年说明该家族在 google/fonts 中经历了长期的维护而 2016 年的 GPOS 修正只是其中的一次重要里程碑。此外Federant 的 ID 也出现在 api/shared/legacy-fonts.json 中表明它自 Fontsource 更早的legacy catalog体系起就已被收录属于随注册表体系迁移延续下来的家族。设计溯源从 Feder Antiqua 到现代复兴1911 年的原作背景描述文档明确指出Federant 复兴的是德国广告字体ReklameschriftFeder Antiqua原作由 Otto Ludwig Nägele 于 1911 年设计。所谓 Reklameschrift即 20 世纪初专为商业广告与海报场景设计的展示字体其字形往往带有手工绘制的痕迹与强烈的时代气息——这正是 Federant 复古气质expressive/vintage的来源。视觉校正与一致的排版颜色现代复兴设计最大的挑战在于平衡两点整体一致性overall consistency需要应用视觉校正visual corrections让散落各处的字形在风格上统一忠于原稿staying close to the original source尽可能保留 1911 年原版的笔画特征与时代质感。描述文档特别强调在某些情况下设计团队会牺牲历史保真度historical authenticy以换取均匀的排版颜色even typographic color——即让文字块在灰度观感上更均匀避免个别字形过重或过轻破坏行文的视觉节奏。这也是判定 Federant 属于复兴/再诠释而非忠实复刻的关键设计立场。缺失字形的研究与 Yen 符号由于原作年代久远、字符集不全项目需要**研究历史字样historic type specimens**来寻找缺失的字形missing letterforms。描述文档举了一个具体例子该字体的日元货币符号Yen¥采用了那个年代字体中常见的非常规诠释——这一细节说明设计师并非简单照搬现代字形而是回到同时期的字体样本中寻找依据以维持整体的时代一致性。设计师与版权归属描述文档标注了两位执笔设计师Olexa M. Volochay与Alexei Vanyashin出品方为Cyreal。注册表 license.txt 中的版权声明与之对应Copyright (c) 2011, Cyreal (www.cyreal.org), with Reserved Font Name Federant.该字体以 SIL Open Font License 1.1 授权任何衍生作品不得使用保留字体名 Federant 作为主名称详见 license.txt 中 OFL 条款第 3 条。若需参与贡献可前往 Cyreal 维护的 Federant 上游项目仓库——该仓库地址与其修订号记录在 family.json 的project.repository/project.revision字段中当前修订为c5c5f602213ac00b181d95e2078fff665dd31809。版本史2016 年 2 月的 GPOS 修正更新描述文档末尾记录了一次重要的版本维护Updated: February 2016 to Version 1.011其核心内容为修正 GPOS 表启用字距调整kerning。这一事实可以从注册表数据中得到交叉印证在 family.json 的sources[0].inspection中fontVersion字段明确写着Version 1.011; ttfautohint (v1.4.1)且features.gpos记录为[kern]——即当前打包的源文件确实已包含 GPOS 字距特性与描述文档中的更新说明完全吻合。修正带来的排版影响文档特别提醒由于启用了 kerning水平度量horizontal metrics可能发生变化而在Firefox 中默认对 Web 字体启用字距调整因此页面上使用该字体的文本可能出现一定的回流reflow。这属于字体厂商对集成者的行为提示与 Fontsource 的打包发布无关——引用方只需了解升级到 1.011 后度量差异是预期行为即可。源码佐证Fontsource 如何检测 GPOS 特性Fontsource 注册表管线会对每个源文件执行 SFNT 解析与特性探测实现在 packages/core/src/inspection.ts读取 SFNT 表目录table directory后通过readLayoutFeatures分别解析 GSUB 与 GPOS 表得到features.gsub与features.gpos两组特性标签。Federant 的family.json中gpos: [kern]正是该探测过程的产物。这意味着描述文档中修正 GPOS 表enabling kerning的陈述不仅存在于文字描述中也被注册表以机器可读的结构化数据固化了下来可供 API 与网站展示层直接消费。Federant 在 Fontsource 注册表中的记录描述文档的生成管线你正在阅读的 description.en-US.md 并非手写维护而是由注册表生成脚本从 google/fonts 上游自动转换而来。在 registry/scripts/google.ts 中DOCUMENTS常量定义了映射关系const DOCUMENTS [ [DESCRIPTION.en_us.html, description.en-US.md], [article/ARTICLE.en_us.html, article.en-US.md], ] as const;上游 HTML 会经过 TurndownService 转换为 Markdowngoogle.ts转换过程会剥离script、style、iframe、img等节点并只保留协议为http:/https:的安全链接。Federant 描述文档中保留的贡献渠道链接正是经由该安全链接规则放行的。写入动作发生在writeFamily中google.ts若上游目录存在对应文档则写入否则删除旧文件确保描述与上游保持同步。文件清单与校验规则registry/scripts/validator.ts 定义了每个家族目录允许存在的文件白名单description.en-US.md与article.en-US.md均在列。也就是说描述文档是注册表结构化校验的一部分——任何不在白名单内的文件都会被判定为未登记或不受支持并校验失败。整个注册表目录结构、生成与校验命令的说明见 registry/README.md。源文件与字符覆盖Federant 只有一个源文件Federant-Regular.ttf45,588 字节SHA-256 为d40cb09c...其检查inspection数据提供了精确的技术画像字形与码点229 个字形、213 个码点轮廓格式为glyfTrueTypeUnicode 范围U0020-007E基础拉丁、U00A0-00FF拉丁补充 1其中包含文档所提到的日元符号 U00A5、U0131、U0152-0153、若干组合变音符U02C6-02C7、U02DA、U02DC、常用标点U2013-2014、U2018-201A、U201C-201E、U2022、U2039-203A、U2044、上标 4U2074、欧元符号U20AC与减号U2212轴与变体axes为空数组无可变字体轴仅有一个静态变体weight: 400 / style: normal语言覆盖languages字段列出 328 个语言标签绝大多数以_Latn结尾如en_Latn、de_Latn、fr-gallo_Latn与上述拉丁字符集覆盖一致。distribution.json 则记录了 Fontsource 实际发布的形态字符分发为latin子集默认子集同为latin静态发布仅normal400 一种变体。由于没有可变轴Federant 不存在fontsource-variable/federant变量包只能以静态包形式接入。在 Web 项目中接入 Federant1. 安装静态包Federant 无变量轴、仅有字重 400因此选择静态包fontsource/federant安装说明参见 website/docs/getting-started/install.mdxnpm install fontsource/federant # 或 pnpm add fontsource/federant前提是你的项目使用 Vite、Webpack 等具备 CSS 导入能力的打包器。2. 导入字体在应用的入口文件或页面组件中导入。默认导入即覆盖字重 400import fontsource/federant; // 默认字重 400normal也可以显式指定字重文件import fontsource/federant/400.css;生成的 CSS 使用unicode-range浏览器只会下载页面实际使用到的字符集因此通常无需手动挑选latin子集——这正对应 distribution.json 中defaultSubset: latin的默认行为。3. 在 CSS 中声明字体body { font-family: Federant, serif; }4. 可选TypeScript 声明如果项目启用了 TypeScript 的noUncheckedSideEffects导入 CSS 可能报错可添加全局声明文件如src/globals.d.tsdeclare module *.css; declare module fontsource/* {}注意事项Federant 仅提供400 normal一种静态变体无需也无法导入斜体或其他字重1.011 版本启用了 GPOS 字距调整在 Firefox 等默认启用 kerning 的浏览器中水平度量可能与旧版本存在差异升级时留意文字回流现象如需了解 CDN 直接引用、Sass 混入或框架级集成可继续阅读 cdn.mdx 与 website/docs/guides 目录下的框架指南。深入阅读仓库内相关资源官方描述原文description.en-US.md家族元数据与源文件检查数据family.json发布形态定义子集与静态变体distribution.json完整 OFL-1.1 许可证文本license.txt描述文档生成管线google.ts注册表文件白名单校验validator.tsGPOS/GSUB 特性探测实现inspection.ts注册表整体说明与命令registry/README.md标签体系定义Rugged / Vintagetaxonomy.json综上所述Federant 是一个信息密度很高的案例它的描述文档浓缩了复兴类字体如何取舍历史与一致性的设计方法论而 Fontsource 注册表则用结构化元数据版本、GPOS 特性、字符覆盖、语言清单将这段历史完整地固化了下来并以fontsource/federant的形式让开发者可以一行导入、按需加载。理解这份档案既有助于字体排版选型也能帮你快速上手 Fontsource 注册表的数据组织方式。赞分享前端CLI开发工具【免费下载链接】fontsourceSelf-host Open Source fonts in neatly bundled NPM packages.项目地址https://gitcode.com/gh_mirrors/fo/fontsource点击查看免费下载相关推荐Fontsource 字体档案Alike Angular——为展示场景而生的直线衬线标题字体Fontsource 字体档案Alike Angular——为展示场景而生的直线衬线标题字体 Alike Angular 是 Fontsource 发行体系中前端CLI开发工具Fontsource 字体档案解读Abhaya Libre——面向现代屏幕的 Sinhala 衬线字体Fontsource 字体档案解读Abhaya Libre——面向现代屏幕的 Sinhala 衬线字体 本文以 Fontsource 仓库中 Abhaya L前端CLI开发工具Fontsource 字体档案解读Castoro 衬线字体的设计背景与分发特性Fontsource 字体档案解读Castoro 衬线字体的设计背景与分发特性 Castoro 是收录于 Fontsource 开源字体注册表registr前端CLI开发工具上一篇clawdbot-feishu开发者指南项目结构、测试契约与代码贡献完整流程下一篇Plasmic 画布内嵌 react-slick 0.31.0补丁、定制化与 canvas-packages 构建机制全解析创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

洛雪音乐 lx-music-desktop:免费聚合多音乐源、离线下载与歌单同步的桌面音乐软件

洛雪音乐 lx-music-desktop:免费聚合多音乐源、离线下载与歌单同步的桌面音乐软件

洛雪音乐 lx-music-desktop:免费聚合多音乐源、离线下载与歌单同步的桌面音乐软件 【免费下载链接】lx-music-desktop 一个基于 Electron 的音乐软件 项目地址: https://gitcode.com/GitHub_Trending/lx/lx-music-desktop lx-music-desktop(洛雪音…

2026/10/16 2:58:58 阅读更多 →
CKEditor 4 dialogadvtab 插件回归测试:连续创建多个链接时 Advanced 标签 id 属性丢失(1046)的复现与修复解析

CKEditor 4 dialogadvtab 插件回归测试:连续创建多个链接时 Advanced 标签 id 属性丢失(1046)的复现与修复解析

前端UI组件 【免费下载链接】ckeditor4 The best enterprise-grade WYSIWYG editor. Fully customizable with countless features and plugins. 项目地址: https://gitcode.com/gh_mirrors/ck/ckeditor4 点击查看 免费下载 本文以 tests/plugins/dialogadvtab/man…

2026/10/16 2:58:58 阅读更多 →
ohos.app.ability.dialog_request 模态弹框请求模块指南:RequestResult 与 ResultCode 解析

ohos.app.ability.dialog_request 模态弹框请求模块指南:RequestResult 与 ResultCode 解析

文档知识库教程OpenHarmony 【免费下载链接】CangjieCorpus 本仓库为仓颉编程语言语料库,聚焦 仓颉编程语言 核心知识体系,整合官方开发指南、API 文档、典型代码示例及语法规范等多维度资源,经结构化处理与专业标注,构建为支持 R…

2026/10/16 2:58:58 阅读更多 →

最新新闻

移动端H5开发与PC端Web的核心差异及实战指南

移动端H5开发与PC端Web的核心差异及实战指南

移动端 H5 开发这个话题,我最早接触是在功能机向智能手机过渡那段时间。当时大家还在争论“移动端是不是要单独做一套网站”,后来从自适应到响应式再到各种混合开发方案,折腾了这么多年,我发现很多同学其实对“移动端 H5 开发和 P…

2026/10/16 3:53:10 阅读更多 →
C# Winform连接SQL Server:从环境配置到增删改查完整指南

C# Winform连接SQL Server:从环境配置到增删改查完整指南

简介:这是一套面向C#初学者的WinformSQL Server数据库增删改查入门资源,适合刚接触桌面数据库开发、希望掌握本地与网络连接方式的读者。资源以完整VS工程形式提供,包含CrudTest项目源码、SQLQuery1.sql数据库查询脚本、说明文档及编译生成的…

2026/10/16 3:53:10 阅读更多 →
Unity WebGL构建报错unityLinker与IL2CPP排查指南

Unity WebGL构建报错unityLinker与IL2CPP排查指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 3:53:10 阅读更多 →
Wireshark实战入门:从抓不到包到定位TCP窗口缩放故障

Wireshark实战入门:从抓不到包到定位TCP窗口缩放故障

1. 为什么今天还要学Wireshark?——从“看不见的网络”到“可触摸的数据流”很多人第一次听说Wireshark,是在某次服务突然卡顿、接口返回超时、或者App连不上服务器的时候。运维同事皱着眉头说:“得抓个包看看”,然后打开一个蓝白…

2026/10/16 3:53:10 阅读更多 →
SpringBoot家具销售管理系统实战:从CRUD到库存并发设计

SpringBoot家具销售管理系统实战:从CRUD到库存并发设计

花了整整两天时间把这类基于SpringBoot的家具销售管理系统从头到尾梳理了一遍。单看标题,很多人会觉得这又是一个普通的CRUD练习项目,但真正把业务模块拆开之后你会发现,家具销售里那些大件、低频、高客单价带来的逻辑细节,它其实…

2026/10/16 3:53:10 阅读更多 →
CTF音频隐写解题指南:从‘啊哒~’看振幅、频谱与相位三重分析

CTF音频隐写解题指南:从‘啊哒~’看振幅、频谱与相位三重分析

1. 从一道CTF杂项题名看起:为什么“啊哒~”不是卖萌,而是信号“BugkuCTF-Misc:啊哒~”——第一次在某高校CTF训练平台看到这个标题时,我下意识点开想看看是不是新出的搞笑彩蛋题。结果发现它被归在Misc(杂项&#xff0…

2026/10/16 3:52:10 阅读更多 →

日新闻

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 0:00:05 阅读更多 →
信号与系统频域分析作业解题指南

信号与系统频域分析作业解题指南

1. 作业背景与核心要求解析信号与系统作为电子信息类专业的核心基础课,其作业设计往往直接关联课程的核心知识框架。2026年春季第六次作业的布置,通常对应着课程进展到频域分析的关键阶段。根据常规教学进度推测,本次作业可能涉及以下核心内容…

2026/10/16 0:00:05 阅读更多 →
Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

1. 从一个"四不像"的练手项目说起如果你已经看完了Django的官方教程前几章,跟着敲完了投票应用,大概会有一种"我好像会了,又好像什么都不会"的割裂感。教程里每个知识点都是拆开的——这一章讲模型,下一章讲视…

2026/10/16 0:00:05 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/15 16:18:54 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/15 19:41:51 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/15 13:48:15 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 9:49:14 阅读更多 →