7 个版本 (稳定)
1.3.0+15.1.0 | 2024 年 3 月 28 日 |
---|---|
1.2.1+15.0.3 | 2023 年 12 月 16 日 |
1.1.1+14.1.2 | 2023 年 6 月 25 日 |
1.0.0+14.0.2 | 2023 年 2 月 25 日 |
0.1.0+14.0.2 | 2023 年 2 月 25 日 |
#34 in 值格式化
每月 39 次下载
在 egui-twemoji 中使用
17MB
52K SLoC
twemoji-assets
一个提供 Twemoji 资源的复杂 crate。
使用方法
要使用此 crate,只需将其包含在您的 Cargo.toml 文件中并启用所需的 特性
[dependencies]
twemoji-assets = { version = "1.0", features = ["svg", "png", "names"] }
此 crate 提供了一种方便的方式来访问 Rust 程序中的 Twemoji 表情符号资源。您可以使用提供的 from_emoji
和 from_name
方法在运行时选择正确的资源,或者使用宏在编译时选择正确的表情符号资源。
以下是一个简单的示例,展示如何使用此 crate 获取 🦆 (鸭子) 表情符号的 SVG 和 PNG 资源
use twemoji_assets::svg::SvgTwemojiAsset;
fn main() {
let svg_asset: &SvgTwemojiAsset = SvgTwemojiAsset::from_emoji("🦆").unwrap();
let svg_data: &str = &svg_asset;
println!("SVG data for 🦆: {:?}", svg_data);
#[cfg(feature = "png")]
{
use twemoji_assets::png::PngTwemojiAsset;
let png_asset: &PngTwemojiAsset = PngTwemojiAsset::from_emoji("🦆").unwrap();
let png_data: &[u8] = &png_asset;
println!("PNG data for 🦆: {:?}", png_data);
}
}
注意:要使用 png
模块,您需要在您的 Cargo.toml
文件中启用 png
特性标志。
此 crate 不提供任何直接方法来利用 Twemoji 资源。以下额外的 crates 可能是充分利用这些表情图形所必需的
-
image - 一个允许对 PNG 进行图像操作的 crate,可以与 twemoji-assets 的
png
特性一起使用。 -
resvg - 一个提供 SVG 渲染的 crate,可以与 twemoji-assets 的
svg
特性一起使用。 -
unicode-segmentation - 一个提供将单词分割为其 Unicode 图形的方法的 crate,这对于确定何时渲染表情符号非常有用。
-
emoji - 一个提供在 Rust 中使用表情符号的 crate,包括 Twemoji 资源。它允许通过名称或代码点查找表情符号,并包含除 Twemoji 以外的广泛表情符号来源。它可以与 twemoji-assets 一起使用将表情符号转换为 Twemoji 资源。
特性标志
您在 Cargo.toml
中包含的特性将影响程序中可用的资源。以下特性可用
-
svg
(默认启用):包含svg
模块,该模块提供 SVG 格式的表情符号资源。 -
png
:包含png
模块,该模块提供PNG格式的emoji资源。 -
names
(默认启用):包含names
模块,该模块提供emoji的易读名称与其Unicode表示之间的映射。
由于本项目文档包含所有功能,建议您自行生成项目文档。要生成文档,请运行以下命令
cargo doc
这将只为您启用的功能生成文档,减少生成文档中的杂项。
版本方案
本项目遵循Rust文档要求的语义版本控制方案(Rust文档)。版本号表示为x.y.z+a.b.c
,其中x.y.z
是crate的版本,a.b.c
是集成Twemoji资源的版本。使用+
符号分隔两个版本号。crate的版本可能不随集成Twemoji资源的版本增加而增加,但是,每当Twemoji资源更新并添加新资源时,crate版本至少会增加次版本号(y
)。
额外资源
-
Twemoji主页 - Twemoji的官方网站,其中包含有关项目以及如何将Twemoji资源包含在您的项目中的详细说明。
-
Emojibase主页 - 一个包含emoji字符代码、名称和描述的综合emoji数据库。本项目包含Emojibase的一个子集作为
names
模块,但完整的数据库可能对高级emoji操作很有用。
项目状态和未来
本项目资产来源的Twemoji项目已迁移至GitHub上的新位置,由其原始创作者维护。原始版本的Twemoji由两位Twitter员工@sofodesign和@jdecked维护。随着Twitter最近的变化,包括被埃隆·马斯克收购,他们不再在那里工作,也没有对原始存储库的提交权限。Twitter没有表示他们是否打算继续维护原始Twemoji。鉴于原始维护是在创作者的空闲时间进行的,似乎不太可能成为当前Twitter任何人优先考虑的事情。
为了防止Twemoji被遗弃,原始开发人员已从原始存储库分支出来,并计划继续对其进行工作,发布新的Unicode批准的emoji,维护代码等,尽管他们不再为Twitter工作。他们已承诺保持这个重要项目活跃并可供开发社区使用(来源)。
到目前为止,本项目从Twemoji的此新分支获取资产,因为原始Twitter存储库的未来更新和维护尚不确定。
许可
本项目提供的代码库和Emojibase提供的名称在MIT许可证下许可,并包含由Twitter许可的图形(版权2020年Twitter,Inc和其他贡献者),根据Creative Commons Attribution 4.0国际(CC-BY 4.0)许可证。如果使用或修改这些图形,必须对Twitter和其他贡献者给予适当归因。
与twemoji-rs的比较
与本项目有相似目标的另一个crate是twemoji-rs。与twemoji-assets类似,它提供Twemoji的资源,并使它们在Rust中易于访问。但是,twemoji-rs不是直接包含资产,而是在代码编译的机器上找到特定图形的路径。
twemoji-rs 的优点包括:
- 资源可以懒加载。
- 它的API比twemoji-assets简单。
twemoji-rs 的缺点包括:
- 由于路径是从构建应用所在的目录绝对指定的,因此在没有构建应用设备的部署是不可能的。
- 资源不是构建的二进制文件的一部分,这使得部署更具挑战性。
- emoji-rs 仅支持PNG。
- emoji-rs 没有所有可用的 Twemojis 的概览。
总的来说,是否选择使用 twemoji-assets 或 twemoji-rs 将取决于您的具体用例和需求。