ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

3招玩转source-han-sans-ttf定制:修改字体家族名、增删字重、调优hinting参数完整指南

3招玩转source-han-sans-ttf定制:修改字体家族名、增删字重、调优hinting参数完整指南 3招玩转source-han-sans-ttf定制修改字体家族名、增删字重、调优hinting参数完整指南【免费下载链接】source-han-sans-ttfA (hinted!) version of Source Han Sans项目地址: https://gitcode.com/gh_mirrors/so/source-han-sans-ttfsource-han-sans-ttf 是一个为思源黑体Source Han Sans构建带 hinting 的 TTF 版本的开源项目。掌握本文的 3 招——修改字体家族名、增删字重、调优 hinting 参数你就能把默认输出的 SHSTTF 字体改造成完全贴合自己需求的定制字体。 项目简介为什么要做思源黑体 TTF 版思源黑体官方发行的是 OTFCFF 轮廓格式的 .ttc 集合文件。而 TTFTrueType 二次曲线轮廓在部分旧系统、移动端和一些设计/浏览器环境中的兼容性更好嵌入也更方便。本项目的最大卖点在描述里一句话就写明了A (hinted!) version of Source Han Sans——它不仅转成 TTF还为每个字形生成了专业的 hinting 指令让字体在 Windows 等小字号场景下依然清晰锐利。项目一次构建可产出7 个字重ExtraLight、Light、Normal、Regular、Medium、Bold、Heavy× 多个地区版本简中、繁中、日、韩、港澳构建流程分 4 个阶段拆分 ttc 并重命名 → 转 TTF 并做基础 hinting → 用 Chlorophytum 生成精细 hint → 打包 ttc/压缩包全部由 verdafile.js 调度关键阶段定义见 verdafile.js#L10-L24。️ 快速开始一键安装与构建步骤准备工作很简单只需两样最新版本的AFDKO提供 otf2otc、otc2otf、otf2ttf、ttfautohint 等工具Node.js拿到代码后执行git clone https://gitcode.com/gh_mirrors/so/source-han-sans-ttf cd source-han-sans-ttf npm install npm run build all⏰ 注意README 特别提醒全量构建可能耗时数小时请耐心等待。构建系统带有构建日志与自跟踪机制verdafile.js#L22-L24未变化的阶段不会重复执行。产物输出在out/ttf/单字体和out/ttc/集合文件版本来自 package.json 的version字段。️ 第一招修改字体家族名默认构建出的字体在菜单里显示的名字叫SHSTTF。想改成自己的名字只需要改一个文件config.json。它里面有两处和名字直接相关见 config.json#L2-L19配置项作用naming.familyName各语言环境下字体菜单显示名en_US、zh_CN、ja_JP 等 6 种语言prefix影响输出文件名如 ShsTtf-SC-Bold.ttc和PostScript 名naming.version/naming.copyright写入字体的版本号与版权信息README 给出的官方做法是修改config.json的naming.FamilyName各条目影响菜单名和prefix属性影响文件名与 PostScript 名然后重新构建。真正执行写名的逻辑在 renaming/index.js 中构建时会为 6 种语言分别写入偏好家族名Preferred Family、子族样式名、完整字体名、Unique ID 以及 PostScript 名核心函数见 renaming/index.js#L56-L73。它还内置了兼容老系统的处理逻辑——非标准四样式Regular/Bold/Italic/Bold Italic的字重会自动并入家族名比如ExtraLight会被缩写成XLight以防名称溢出。 小贴士字体家族名决定你在 Word、Figma 等软件菜单里看到什么PostScript 名则影响 PDF 嵌入时的字体引用两者分开设置互不干扰。⚖️ 第二招增删字重想只构建 Regular 和 Bold 两个常用字重来节省时间或者想加入新的字重答案仍然在 config.json 的weights数组config.json#L6weights: [ExtraLight, Light, Normal, Regular, Medium, Bold, Heavy]增删规则只需记住三件事改数组weights决定构建哪些字重verdafile.js#L148-L153 中的hint-all任务就是遍历它逐字重执行的。源文件要对应每个字重都需要 src/ 目录下同名的源文件如SourceHanSans-Bold.ttc文件名由sourcePrefix拼接字重得到。hinting 配置要对应每个字重必须有一个同名的 hint-config/ 配置文件如hint-config/Bold.json否则该字重的精细 hinting 阶段会因缺少依赖而失败。所以最简单的删字重玩法就是把weights改成[Regular, Bold]后重新构建其余文件原封不动。⚙️ 第三招调优 hinting 参数这是进阶玩家的主场。每个字重一份独立的 hinting 配置共 7 份位于 hint-config/ 目录结构分为三段通道passCJK 汉字/韩文通道用chlorophytum/hm-ideograph插件处理康熙部首、CJK 统一表意文字含 A–F 区扩展、韩文音节并跟踪日文常用字表jp78/jp83/jp90/jp04/hojo等 OpenType 特性平假名通道与片假名通道分别对假名施加不同的斜线容差参数。最值得动手的参数是 hint-config/Normal.json 中的这几项各字重的标准值见下表字重CANONICAL_STEM_WIDTH标准字宽/emExtraLight0.029Light0.04Normal0.06Regular0.067Medium0.072Bold0.097Heavy0.105另有密集字形专用值 0.072见 hint-config/Heavy.json#L45-L48核心思路CANONICAL_STEM_WIDTHhint 引擎认定的标准笔画宽度。字重越粗值越大。若你自定义字重后发现小字号下笔画偏细或发虚就按字重粗细微调这个值。DoOutlineDicing OutlineDicingStepLength轮廓切割开关与步长影响字形被吸附到像素网格时允许的变形粒度一般保持 0.06 即可。SLOPE_FUZZ 系列假名斜笔画的吸附容差平假名用 0.175、片假名用 0.03对比 hint-config/Normal.json#L73-L79 与 hint-config/Normal.json#L106-L112可针对渲染效果单独调整。构建时verdafile.js#L127-L147 的group-hint任务会读取对应字重的 JSON并以全部 CPU 核心数为并行作业数verdafile.js#L258hint 结果会缓存到hint-cache-{weight}.gz同参数重复构建不会重算。❓ 常见问题改个名字要等几个小时吗不会。构建系统会按依赖跟踪缓存各阶段产物只改naming时只有重命名及后续轻量阶段会重跑最慢的 hinting 指令生成阶段不会因改名而重来。改了 hinting 配置没生效确认改的是对应字重的 JSON 文件文件名与字重一一对应并重新执行npm run build all。构建依赖报错找不到 otf2ttf / ttfautohint说明 AFDKO 未安装或版本过旧请升级到最新版 AFDKO 后重试。 总结source-han-sans-ttf 的定制玩法其实就围绕三份文件展开config.json 管名字和字重清单hint-config/ 管渲染精细度verdafile.js 管构建流水线。改配置 → 重新构建 → 拿到专属的思源黑体 TTF就是这么简单。动手试试吧【免费下载链接】source-han-sans-ttfA (hinted!) version of Source Han Sans项目地址: https://gitcode.com/gh_mirrors/so/source-han-sans-ttf创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表