Crate text_to_png

Source
Expand description

§Text To Png

This crate provides a really simple interface for rendering basic text to a png image.

§Features

  • 100% Rust! We use usvg for path vectoring, resvg for rasterizing, and tiny-skia for png conversion
  • Built-in, monospace font courtesy of Ryoichi Tsunekawa
  • Flexible color specification, "Aquamarine", "#4506AE", "EEE", 0
  • Text baseline height is provided for alignment consistency
  • Accepts true-type font files or true-type font collection files

§Example

§Default Font

use text_to_png::TextRenderer;

let renderer = TextRenderer::default();

let text_png = renderer.render_text_to_png_data(
    "Rénder this, brö",
    64,
    "Dark Turquoise");

Writing the &[u8] data returned in text_png.data to a text.png yields:

Rendered Text Image

§Custom Font

use text_to_png::TextRenderer;

let renderer = TextRenderer::try_new_with_ttf_font_data(include_bytes!("../tests/resources/Because I am Happy Regular.ttf"))
    .expect("Example font is definitely loadable");

let text_png = renderer.render_text_to_png_data(
    "Custom Fonts are Cool!",
    52,
    0x439EC2);

Writing the &[u8] data returned in text_png.data to a text.png yields:

Rendered Text Image

§CLI

See the CLI Readme

Structs§

Color
Representation of a RGB color
Size
Representation of the size of png image
TextPng
Result of rendering text to a png image. This contains the png byte as well as the the image metadata for pixel size and baseline location
TextRenderer
This is the mechanism used to perform the actual rendering. This struct contains the options that describe how text will be converted into vector paths. Currently we only support the default, embedded font, and we optimize for legibility

Enums§

FontSize
Enumeration of ways that the size of rendered text can be specified.
TextToPngError
Error type returned on unsuccessful rendering calls