#tui #ratatui #terminal #console #customization

tui-big-text

A Ratatui widget for displaying big text in the terminal

25 releases (4 breaking)

new 0.5.2 Jul 25, 2024
0.4.7 Jul 24, 2024
0.4.2 Feb 26, 2024
0.3.1 Dec 23, 2023
0.2.1 Oct 27, 2023

#67 in Command-line interface

Download history 71/week @ 2024-04-03 520/week @ 2024-04-10 546/week @ 2024-04-17 132/week @ 2024-04-24 233/week @ 2024-05-01 95/week @ 2024-05-08 114/week @ 2024-05-15 319/week @ 2024-05-22 559/week @ 2024-05-29 253/week @ 2024-06-05 178/week @ 2024-06-12 264/week @ 2024-06-19 842/week @ 2024-06-26 628/week @ 2024-07-03 580/week @ 2024-07-10 328/week @ 2024-07-17

2,482 downloads per month
Used in 14 crates

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

~7MB
~113K SLoC