首页/新闻资讯/正文详情

如何把 7 个字重装进 1 个文件:思源黑体可变字体完整实践指南

发布时间:2026/11/4 16:18:02 来源:云帆数科 栏目:资讯中心
如何把 7 个字重装进 1 个文件:思源黑体可变字体完整实践指南
如何把 7 个字重装进 1 个文件思源黑体可变字体完整实践指南【免费下载链接】source-han-sansSource Han Sans | 思源黑体 | 思源黑體 | 思源黑體 香港 | 源ノ角ゴシック | 본고딕项目地址: https://gitcode.com/gh_mirrors/so/source-han-sans一个文件覆盖 ExtraLight250到 Heavy900共 7 个字重——这就是思源黑体可变字体给泛 CJK 排版提供的能力。它是 Adobe 与 Google 共同维护的开源字体项目仓库里保留了重建静态字体与可变字体的全部源材料。本文基于仓库内真实文件讲清楚可变字体如何写 CSS、如何从源码构建以及它的取舍在哪。 一条 wght 轴单文件如何覆盖 250 到 900两个极端母版加一张插值表可变字体Variable Font不存 7 套轮廓只存 ExtraLight 与 Heavy 两个端点中间字重由渲染端实时插值。设计空间文件 Masters/designspaces/SourceHanSans-VF.designspace 里source只指向两份文件SourceHanSansVF-ExtraLight.otf与SourceHanSansVF-Heavy.otf。轴的定义如下axis default250 maximum900 minimum250 nameweight tagwght map input400 output390 / !-- Regular -- map input900 output1000 / !-- Heavy -- /axismap标签负责外部字重值到内部插值坐标的换算Regular400对应内部坐标 390Heavy900被拉伸到 1000为插值留足空间。7 个具名实例instances里列出 7 个标准点位ExtraLight250、Light300、Normal350、Regular400、Medium500、Bold700、Heavy900。Masters/STAT.fea 再把这些点位注册进 STAT 表操作系统字体菜单因此能正常显示每个实例的名称思源黑体可变字体在旧版软件里也会退化成这 7 个具名版本而不是乱序。按投放范围分组的 3 套设计空间通用版Masters/designspaces/下 5 个文件SourceHanSans-VF.designspace及 SC简体、TC繁体、K韩文、HC繁体·港各一子集版Masters/designspaces/Subset/ 下按 CN、HK、JP、KR、TW 地区拆分的 5 个文件半角版Masters/designspaces/HW/ 下 5 个文件适配日文中混排半角拉丁字符的场景。仓库根目录的FontMenuNameDB.VF、FontMenuNameDB.VF.SUBSET、FontMenuNameDB.VF.HW三份菜单名文件与上述三组一一对应。 文件布局可变字体源文件都在哪里VF 源文件只出现在 4 个字重目录Masters/ExtraLight/VF/与Masters/Heavy/VF/插值两端各含cidfont.VF.地区.unhinted与features.VF.地区成对文件Masters/Regular/OTC/VF/与Masters/Bold/OTC/VF/半角可变字体的两端文件名为cidfont.VF.HW.地区.unhinted。.unhinted后缀表示尚未加 hintinghinting 是一套改善小字号屏幕渲染的指令表构建后可在后处理步骤补上。每个字重目录都是完整一套源码ExtraLight 到 Heavy 的 7 个字重目录里各有三类文件cidfont.ps.*CFF 轮廓数据、features.*OpenType 特性、cidfontinfo.*字体元信息。仓库根目录还有 10 个UniSourceHanSans*-UTF32-H文件是 Unicode 到 CID 的映射表COMMANDS.txt 中的构建命令通过-ch参数引用它们。构建文档入口COMMANDS.txt 记录了全部静态字体的makeotf命令行文件末尾注明可变 OTF 应改用 build/ 目录下的两个脚本构建。️ 两种接入方式Web 端写 CSS或从源码构建方式 A用 font-face 声明可变字体拿到构建好的字体文件后声明如下font-weight区间要与设计空间的 wght 范围 250 900 一致否则浏览器会吸附到最近的具名实例平滑过渡失效font-face { font-family: Source Han Sans VF; src: url(./SourceHanSansSC-VF.otf) format(opentype); font-weight: 250 900; font-display: swap; } h1 { font-family: Source Han Sans VF, sans-serif; font-weight: 620; /* 250–900 间任意值不限 7 个预设点 */ }方式 B从源码构建可变字体先安装 AFDKOAdobe Font Development Kit for OpenType字体构建工具链再获取源码git clone https://gitcode.com/gh_mirrors/so/source-han-sans cd source-han-sans接着按顺序执行 build/ 下两个脚本build-source-otfs.py先生成 ExtraLight 与 Heavy 两个母版 OTFbuild/buildVFs.py 再生成全部可变字体python build/build-source-otfs.py python build/buildVFs.pybuildVFs.py内部调用 AFDKO 的buildcff2vf依次处理 15 个设计空间通用 5 子集 5 半角 5输出默认写入 designspaces 目录可用-o改到别处。常见问题只想构建简体中文一份怎么办不必跑满 15 个直接对单个设计空间执行buildcff2vf --omit-mac-names -d Masters/designspaces/SourceHanSansSC-VF.designspace这与buildVFs.py中 SC 分支单次循环执行的命令一致-d即指定设计空间文件路径。⚠️ 边界与代价哪些情况别用可变字体单文件体积并非零成本思源黑体可变字体要完整保存 ExtraLight 与 Heavy 两端轮廓数据。泛 CJK 字体字形量大单个可变 OTF 往往比一个字重的静态子集 OTF 更大。若产品只用 2~3 个字重多个静态字体文件的总体积反而可能更小。兼容与渲染可变字体依赖渲染端支持 OpenType 1.8 的可变表较老的浏览器与部分办公套件只能使用具名实例。源文件均为.unhinted版本若要在小尺寸屏幕上保证渲染质量构建后需补充 hinting 工序。组合建议Web 端需要全部字重用 1 个可变字体文件1 次请求、1 份缓存桌面单字重或嵌入设备用对应字重目录的静态子集 OTF构建命令都在 COMMANDS.txt。下一步建议先执行buildcff2vf -d Masters/designspaces/SourceHanSansSC-VF.designspace拿到简体中文一份加载到浏览器字体测试页里把 font-weight 从 250 拖到 900确认思源黑体可变字体在任意中间值下笔画都能平滑插值之后再按Masters/designspaces/下Subset与HW两个子目录里的文件逐个构建地区子集或半角版本。【免费下载链接】source-han-sansSource Han Sans | 思源黑体 | 思源黑體 | 思源黑體 香港 | 源ノ角ゴシック | 본고딕项目地址: https://gitcode.com/gh_mirrors/so/source-han-sans创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

skill-from-scars:从反复踩过的坑,到可复用的 Agent Skill
skill-from-scars:从反复踩过的坑,到可复用的 Agent Skill

使用 AI Coding 工具开发项目时,经常会遇到一种情况:某个错误花了很长时间才解决,相关经验整理到笔记之后,过了一段时间又在另一个项目中遇到类似问题。虽然 AI 能够帮助我们快速修复 Bug,但很多有价值的排查方法并没有… · 2026/11/4 16:17:01

Tiled 地形刷实战:30 分钟让 40×30 地图的过渡瓦片自动铺满
Tiled 地形刷实战:30 分钟让 40×30 地图的过渡瓦片自动铺满

Tiled 地形刷实战:30 分钟让 4030 地图的过渡瓦片自动铺满 【免费下载链接】tiled Flexible level editor 项目地址: https://gitcode.com/gh_mirrors/ti/tiled 做 2D 关卡的开发者,Tiled 替你把"手挑过渡砖"这活接走了。4030 的地图有… · 2026/11/4 16:17:01

5分钟装好 GitHub 汉化插件:从安装到自定义词库的完整指南
5分钟装好 GitHub 汉化插件:从安装到自定义词库的完整指南

5分钟装好 GitHub 汉化插件:从安装到自定义词库的完整指南 【免费下载链接】github-chinese GitHub 汉化插件,GitHub 中文化界面。 (GitHub Translation To Chinese) 项目地址: https://gitcode.com/gh_mirrors/gi/github-chinese 早上打开 GitHu… · 2026/11/4 16:17:01

鸿蒙OS金融App全栈优化:安全与性能实战
鸿蒙OS金融App全栈优化:安全与性能实战

1. 项目背景与核心价值 金融理财类App作为直接涉及用户资金安全的高敏感度应用,对系统稳定性、响应速度和数据安全有着近乎苛刻的要求。这个鸿蒙全栈项目正是针对金融行业特殊需求打造的解决方案,覆盖了从底层系统适配到上层业务逻辑的全链路优化。 在传… · 2026/11/4 17:04:57

Linux大文件解压避坑:7z替代unzip与ZIP炸弹体检
Linux大文件解压避坑:7z替代unzip与ZIP炸弹体检

解压一个几十 GB 的归档包,看起来是最没有技术含量的活,直到 unzip 在终端里甩出一行红字,或者跑了四十分钟后卡在 99% 不动,你才会意识到这件事没那么简单。我近几年处理过不少大体量数据交付包,压缩格式五花八门&… · 2026/11/4 17:04:57

从告警到攻击链路:关联分析与链路展示工程实践
从告警到攻击链路:关联分析与链路展示工程实践

值班室里最难受的时刻,不是告警太少,而是屏幕上一天刷过去几千条告警,每一条单看都像那么回事,凑在一起却完全读不出发生了什么。IDS说某台机器有异常外连,终端侧说某个账号在批量试密码,日志平台说某台服务… · 2026/11/4 17:04:57

ToDesk 2025远程控制技术:8K/360帧与ZeroSync引擎解析
ToDesk 2025远程控制技术:8K/360帧与ZeroSync引擎解析

1. 远程控制技术的2025年进化:ToDesk年度报告深度解析 远程控制技术正在经历一场前所未有的变革。作为一名长期关注远程协作工具的技术从业者,我亲眼见证了ToDesk从最初的简单远程桌面工具,发展到如今支持8K/360帧超高清传输的全能平台。2025… · 2026/11/4 17:04:57

LLM赋能Text-to-SQL技术解析与应用实践
LLM赋能Text-to-SQL技术解析与应用实践

1. 项目概述:LLM赋能的下一代数据库交互范式 三年前当我第一次在团队内部演示用自然语言直接生成SQL查询时,多数同事还认为这只是个有趣的玩具。如今,基于大语言模型(LLM)的Text-to-SQL技术正在彻底重构人机交互数据库… · 2026/11/4 17:04:57

论文AI率检测与优化工具全解析
论文AI率检测与优化工具全解析

1. 论文AI率问题的现状与挑战 最近两年,学术圈出现了一个新名词叫"AI率",指的是论文中被检测工具判定为AI生成内容的比例。这个问题已经让不少研究生和科研工作者头疼不已——我指导的几位硕士生就遇到过投稿被编辑部直接退回的情况&#xff0… · 2026/11/4 17:03:56

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

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

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

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

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

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

AI辅助技术栈评估:提升研发决策效率60%
AI辅助技术栈评估:提升研发决策效率60%

1. 项目背景与核心价值技术决策一直是研发团队面临的重大挑战。随着技术生态的快速演进,技术栈的选择、维护和迭代变得愈发复杂。我们团队在过去两年里,先后经历了三次重大技术栈迁移,每次都需要投入大量人力进行技术评估和风险分析。直到去年… · 2026/11/4 0:00:17

从生成Token到直接决策:Jev如何重塑AI Agent工程实践
从生成Token到直接决策:Jev如何重塑AI Agent工程实践

1. 从"生成文字"到"拍板决策":Jev 到底在解决什么问题大多数人第一次接触大模型,脑子里建立的模型是"输入问题、输出文字"。你问它今天天气怎么样,它给你一段描述;你让它写个周报,它给你… · 2026/11/4 0:00:17

32G统一内存跑大模型:内存账、TPS实测与端云分流
32G统一内存跑大模型:内存账、TPS实测与端云分流

想在一台 32G 统一内存的小主机上把大模型跑成"日常可用",这件事我前后折腾了小半年。标题里说的这台 Mac mini M6,是我们这次讨论的目标平台,具体到手规格以实物为准;但下面这套推算方法和实测思路,对任何统… · 2026/11/4 0:00:17

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

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

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

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

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

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

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码