Crates.io | cn-font-split |
lib.rs | cn-font-split |
version | |
source | src |
created_at | 2024-12-07 01:23:15.422227 |
updated_at | 2024-12-07 01:23:15.422227 |
description | 划时代的字体切割工具,CJK与任何字符!支持 otf、ttf、woff2 字体多线程切割,完美地细颗粒度地进行包大小控制。A revolutionary font subetter that supports CJK and any characters! It enables multi-threaded subset of otf, ttf, and woff2 fonts, allowing for precise control over package size. |
homepage | https://chinese-font.netlify.app/ |
repository | https://github.com/konghaYao/cn-font-split |
max_upload_size | |
id | 1474951 |
Cargo.toml error: | TOML parse error at line 18, column 1 | 18 | autolib = false | ^^^^^^^ unknown field `autolib`, expected one of `name`, `version`, `edition`, `authors`, `description`, `readme`, `license`, `repository`, `homepage`, `documentation`, `build`, `resolver`, `links`, `default-run`, `default_dash_run`, `rust-version`, `rust_dash_version`, `rust_version`, `license-file`, `license_dash_file`, `license_file`, `licenseFile`, `license_capital_file`, `forced-target`, `forced_dash_target`, `autobins`, `autotests`, `autoexamples`, `autobenches`, `publish`, `metadata`, `keywords`, `categories`, `exclude`, `include` |
size | 0 |
cn-font-split 是一个复杂的字体分包系统,整体架构分为三个主要部分:core、message_channel 和 wrapper。
core 是 cn-font-split 的核心部分,负责实际的字体分包操作。它通过接收回调函数作为参数,实现异步数据返回。core 内部主要包含以下三个核心逻辑模块:
这些操作基于 harfbuzz 和 opentype 库实现,确保了对字体操作的高效和准确。
message_channel 是 cn-font-split 与外部系统交互的桥梁,基于 protobuf(Protocol Buffers)实现。所有的交互接口通过 cn-font-proto 库进行定义和创建。protobuf 提供了二进制数据传输和自动代码生成功能,保障了接口的稳定性和可扩展性。
需要注意的是,在 Rust 项目之间,message_channel 仅借用了 protobuf 生成的结构定义,并不需要构建为二进制格式。只有在 Rust 与其他语言交互时,才会使用到二进制序列化。
wrapper 是 cn-font-split 对外提供的功能接口,支持多种语言调用和不同的部署方案。wrapper 主要包括以下几种实现:
Rust 项目统一采用 snake_case, 会有 IDE 相应提示。
包名统一用 -
链接,而不是 _
。
为统一不同开发环境,采用 VSCode Dev Container 方法
开发使用设备最好 MacOS 8GB、Windows 16GB 以上, 具备 Docker 环境,一键进入开发状态!
如果遇到某些依赖没安装,可以参考 Developer.md