Skip to content
江夏尧 edited this page Dec 31, 2024 · 3 revisions

中文 Web Font 切割工具 🦀

| 中文网字计划 | Github | 在线使用 |


updateTime author npmVersion

NPM License NPM Download

简介

cn-font-split中文网字计划 所使用的字体分包工具,通过高性能的各种技术将庞大的字体包拆分为适合网络分发的版本。经过七个大版本的字体研究与代码迭代,这项技术在我们的网站中得到了充分的应用,实现了中文字体在 Web 领域的加载速度与效率的双飞跃。

cn-font-split 不仅支持中文,针对于中韩日文字、少数民族文字、阿拉伯文等皆有优化,可以根据实际字体包内字符进行智能地分包。

  • 🚀 WebAssembly 或者 Rust FFI 实现, 原生运行分包,进入秒级构建;
  • 💻 坚持 Web 平台为基底,兼容性极强。浏览器、Node、Deno、CICD 环境,统统可以运行。Rust、JS、Python 多语言使用。
  • 🔧 功能齐全完备,支持生成文字图片预览,支持完整全字符,支持复杂字形,支持可变字体!
  • ⛰️ 自研 Rust 工具,构建文本 SVG 引擎,独立渲染文本图像。
  • 🚄 我们有前端编译器插件啦! —— vite-plugin-font, 支持 Vite、Nuxt、Next、Webpack、Rspack,快速嵌入你的前端工具链。

Opentype Feature 支持情况 支持 95 | 部分支持 9 | 等待测试 20

新版本功能

  1. ✅ 🚀 原生构建支持,速度进入秒级时代(2MB 字体只需要 50ms)!
  2. ✅ 📦 更加拟人的源代码与代码架构,维护难度直线下降!
  3. ✅ 🔒 完备的自动化跨平台与视觉测试、版本发布流程!
  4. ✅ 🔒 依赖检查与重构,Rust 构建安全版本。
  5. ✅ 📦 更加可控的分包方式,支持细颗粒度的字符拆分。
  6. ✅ 🔔 支持 OTF 格式字体打包,支持复杂字形渲染。
  7. ✅ ⌨️ 支持 Nodejs、Deno、Bun、Browser,跨平台随处可使用、构建产物一致!
  8. ✅ 🏞️ 支持自动识别可变字体字重,支持字体预览图生成

使用文档指引

如果您想要支持某些语言,可以提交 Issues 或者 PR。

开发者指引

感谢

  1. 项目核心插件为 Harfbuzz,为我们提供了专业级的字体子集化和字体绘制功能。我们采用了 Rust 版本的 harfbuzz_rs_now 来嵌入 Rust 代码生态,实现了非常理想的字体子集化效果。
  2. Rust opentype 项目提供了无与伦比的字体信息抽取能力,为字体特性和分包算法提供了强健的基础。
  3. Rust Cross 项目提供了强大的 Rust 跨平台产物构建能力。
  4. 特别感谢 —— 通义千问 和 GPT-4o 为 Rust 重构过程提供的诸多信息提示和代码帮助, 主项目能够在 20 天内完成 Rust 化,离不开大模型的辅助。

开源许可证

Apache-2.0