29 releases (6 breaking)

0.7.0 Oct 25, 2024
0.6.0 Aug 12, 2024
0.5.2 Jul 25, 2024
0.4.2 Feb 26, 2024
0.2.1 Oct 27, 2023

#59 in Command-line interface

Download history 434/week @ 2024-08-21 486/week @ 2024-08-28 469/week @ 2024-09-04 1686/week @ 2024-09-11 558/week @ 2024-09-18 1028/week @ 2024-09-25 1027/week @ 2024-10-02 894/week @ 2024-10-09 1545/week @ 2024-10-16 1409/week @ 2024-10-23 935/week @ 2024-10-30 602/week @ 2024-11-06 608/week @ 2024-11-13 695/week @ 2024-11-20 789/week @ 2024-11-27 1001/week @ 2024-12-04

3,182 downloads per month
Used in 22 crates (21 directly)

MIT/Apache

74KB
1K SLoC

tui-big-text

tui-big-text is a rust crate that renders large pixel text as a Ratatui widget using the glyphs from the font8x8 crate.

Demo

Crate badge Docs.rs Badge Deps.rs Badge
License Badge Codecov.io Badge Discord Badge

GitHub Repository · API Docs · Examples · Changelog · Contributing

Installation

cargo add ratatui tui-big-text

Usage

Create a BigText widget using BigText::builder and pass it to render_widget to render be rendered. The builder allows you to customize the Style of the widget and the PixelSize of the glyphs.

Examples

use ratatui::prelude::{Frame, Style, Stylize};
use tui_big_text::{BigText, PixelSize};

fn render(frame: &mut Frame) {
    let big_text = BigText::builder()
        .pixel_size(PixelSize::Full)
        .style(Style::new().blue())
        .lines(vec![
            "Hello".red().into(),
            "World".white().into(),
            "~~~~~".into(),
        ])
        .build();
    frame.render_widget(big_text, frame.size());
}

The PixelSize can be used to control how many character cells are used to represent a single pixel of the 8x8 font. It has six variants:

  • Full (default) - Each pixel is represented by a single character cell.
  • HalfHeight - Each pixel is represented by half the height of a character cell.
  • HalfWidth - Each pixel is represented by half the width of a character cell.
  • Quadrant - Each pixel is represented by a quarter of a character cell.
  • ThirdHeight - Each pixel is represented by a third of the height of a character cell.
  • Sextant - Each pixel is represented by a sixth of a character cell.
BigText::builder().pixel_size(PixelSize::Full);
BigText::builder().pixel_size(PixelSize::HalfHeight);
BigText::builder().pixel_size(PixelSize::Quadrant);

Pixel Size

Text can be aligned to the Left / Right / Center using the alignment methods.

BigText::builder().left_aligned();
BigText::builder().centered();
BigText::builder().right_aligned();

Alignment Example

License

Copyright (c) Josh McKinney

This project is licensed under either of:

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

See CONTRIBUTING.md.

Dependencies

~5.5MB
~89K SLoC