#emoji #assets #twemoji #twitter #graphics

twemoji-assets

一个提供 Twemoji 资源的复杂 crate。

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 中使用

MIT 许可证

17MB
52K SLoC

twemoji-assets

一个提供 Twemoji 资源的复杂 crate。


Version License Docs

使用方法

要使用此 crate,只需将其包含在您的 Cargo.toml 文件中并启用所需的 特性

[dependencies]
twemoji-assets = { version = "1.0", features = ["svg", "png", "names"] }

此 crate 提供了一种方便的方式来访问 Rust 程序中的 Twemoji 表情符号资源。您可以使用提供的 from_emojifrom_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 将取决于您的具体用例和需求。

无运行时依赖