Rust ASCII艺术生成库figlet-rs的使用,figlet-rs可将文本转换为炫酷的ASCII艺术字体

Rust ASCII艺术生成库figlet-rs的使用

figlet-rs是一个用于生成ASCII艺术的Rust库,它基于FIGlet实现。

示例代码

use figlet_rs::FIGfont;

fn main() {
    // 加载标准字体
    let standard_font = FIGfont::standard().unwrap();
    // 将文本转换为ASCII艺术
    let figure = standard_font.convert("Hello Rust");
    assert!(figure.is_some());
    // 打印结果
    println!("{}", figure.unwrap());
}

完整示例代码

use figlet_rs::FIGfont;

fn main() {
    // 1. 使用标准字体生成ASCII艺术
    let standard_font = FIGfont::standard().unwrap();
    let figure = standard_font.convert("Hello Rust").unwrap();
    println!("标准字体:");
    println!("{}", figure);

    // 2. 从文件加载自定义字体
    if let Ok(custom_font) = FIGfont::from_file("path/to/your/flf/file.flf") {
        let custom_figure = custom_font.convert("Custom Font").unwrap();
        println!("\n自定义字体:");
        println!("{}", custom_figure);
    } else {
        println!("加载自定义字体文件失败");
    }

    // 3. 处理多行文本
    let multi_line = standard_font.convert("Rust\nProgramming").unwrap();
    println!("\n多行文本:");
    println!("{}", multi_line);
}

安装方法

在项目的Cargo.toml中添加依赖:

[dependencies]
figlet-rs = "0.1.5"

或者直接在项目目录中运行:

cargo add figlet-rs

许可证

figlet-rs采用Apache License 2.0许可证分发。


1 回复

figlet-rs: Rust ASCII艺术生成库使用指南

figlet-rs是一个Rust实现的ASCII艺术字体生成库,它可以将普通文本转换为各种风格的ASCII艺术字。这个库基于经典的FIGlet工具,提供了简单易用的API来创建炫酷的文本效果。

安装方法

在Cargo.toml中添加依赖:

[dependencies]
figlet-rs = "0.5"

基本使用方法

1. 简单文本转换

use figlet_rs::FIGfont;

fn main() {
    // 加载标准字体
    let standard_font = FIGfont::standand().unwrap();
    
    // 转换文本
    let figure = standard_font.convert("Hello");
    
    // 打印结果
    if let Some(figure) = figure {
        println!("{}", figure);
    }
}

2. 使用自定义字体

use figlet_rs::FIGfont;

fn main() {
    // 从文件加载字体
    let font = FIGfont::from_file("path/to/font.flf").unwrap();
    
    let figure = font.convert("Rust").unwrap();
    println!("{}", figure);
}

高级功能

1. 使用不同的预置字体

use figlet_rs::FIGfont;

fn main() {
    let fonts = vec!["standard", "banner", "big", "block"];
    
    for font_name in fonts {
        let font = FIGfont::from_name(font_name).unwrap();
        let figure = font.convert(font_name).unwrap();
        println!("{} font:\n{}", font_name, figure);
    }
}

2. 控制输出宽度

use figlet_rs::{FIGfont, SmusherOptions};

fn main() {
    let font = FIGfont::standand().unwrap();
    let options = SmusherOptions::new().max_width(50); // 限制最大宽度为50字符
    
    let figure = font.convert_with_smusher("Long text that needs wrapping", &options).unwrap();
    println!("{}", figure);
}

3. 水平连接多个ASCII艺术

use figlet_rs::FIGfont;

fn main() {
    let font = FIGfont::standand().unwrap();
    let left = font.convert("LEFT").unwrap();
    let right = font.convert("RIGHT").unwrap();
    
    let combined = left.horizontal_smushe(&right);
    println!("{}", combined);
}

完整示例demo

下面是一个综合使用figlet-rs各种功能的完整示例:

use figlet_rs::{FIGfont, SmusherOptions};

fn main() {
    // 1. 使用标准字体生成ASCII艺术
    let standard_font = FIGfont::standand().unwrap();
    let hello_figure = standard_font.convert("Hello").unwrap();
    println!("标准字体:\n{}", hello_figure);

    // 2. 使用不同预置字体
    let font_names = ["banner", "block", "slant"];
    for name in font_names {
        let font = FIGfont::from_name(name).unwrap();
        let figure = font.convert(name).unwrap();
        println!("\n{}字体:\n{}", name, figure);
    }

    // 3. 控制输出宽度
    let long_text = "This is a very long text that needs to be wrapped";
    let options = SmusherOptions::new().max_width(30);
    let wrapped_figure = standard_font
        .convert_with_smusher(long_text, &options)
        .unwrap();
    println!("\n宽度限制为30的效果:\n{}", wrapped_figure);

    // 4. 水平连接多个ASCII艺术
    let left = standard_font.convert("WELCOME").unwrap();
    let right = standard_font.convert("RUST").unwrap();
    let combined = left.horizontal_smushe(&right);
    println!("\n水平连接效果:\n{}", combined);
}

示例输出

使用"block"字体生成"RUST"的效果:

 ____  _   _  ____ _____ 
|  _ \| | | |/ ___|_   _|
| |_) | | | | (___  | |  
|  _ <| |_| |\___ \ | |  
|_| \_\\___/ |____/ |_|  

可用字体

figlet-rs支持多种内置字体,包括:

  • standard (默认)
  • banner
  • big
  • block
  • bubble
  • digital
  • lean
  • mini
  • script
  • shadow
  • slant
  • small

你也可以使用自定义的FIGlet字体文件(.flf)。

注意事项

  1. 某些复杂字体可能需要较大的终端宽度才能正确显示
  2. 非ASCII字符(如中文)可能无法正确转换
  3. 性能考虑:频繁创建字体实例会影响性能,建议复用FIGfont实例

这个库非常适合用于命令行工具的标题显示、日志美化或任何需要ASCII艺术字的场景。

回到顶部