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

Representation of a RGB color

Representation of the size of png image

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

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

Enumeration of ways that the size of rendered text can be specified.

Error type returned on unsuccessful rendering calls