Crate msdfgen

source ·
Expand description

Safe bindings to msdfgen library

github crate docs MIT CI


  • msdfgen-sys Low-level unsafe bindings generated using bindgen.
  • msdfgen High-level safe bindings which should be used by applications.


  • ttf-parse Enables ttf-parser crate integration which allows create shapes for glyphs of specific font.
  • font Enables font crate integration which allows create shapes for glyphs of specific font.
  • freetype-rs Enables freetype-rs crate integration which allows create shapes for glyphs of specific font.
  • png Enables png crate integration which allows load and save bitmaps from/as PNG images.
  • all Meta-feature which enables all supported features.


use std::fs::File;
use notosans::REGULAR_TTF as FONT;
use ttf_parser::Face;
use msdfgen::{FontExt, Bitmap, Gray, Range, MsdfGeneratorConfig, FillRule, MID_VALUE};

let font = Face::from_slice(&FONT, 0).unwrap();

let glyph = font.glyph_index('A').unwrap();

let mut shape = font.glyph_shape(glyph).unwrap();

let width = 32;
let height = 32;

let bound = shape.get_bound();
let framing = bound.autoframe(width, height, Range::Px(4.0), None).unwrap();
let fill_rule = FillRule::default();

let mut bitmap = Bitmap::new(width, height);

shape.edge_coloring_simple(3.0, 0);

let config = MsdfGeneratorConfig::default();

shape.generate_msdf(&mut bitmap, &framing, &config);

// optionally
shape.correct_sign(&mut bitmap, &framing, fill_rule);
shape.correct_msdf_error(&mut bitmap, &framing, &config);

let error = shape.estimate_error(&mut bitmap, &framing, 5, Default::default());

println!("Estimated error: {}", error);


let mut output = File::create("A-letter-msdf.png").unwrap();
bitmap.write_png(&mut output).unwrap();

let mut preview = Bitmap::<Gray<f32>>::new(width * 10, height * 10);
bitmap.render(&mut preview, Default::default(), MID_VALUE);

let mut output = File::create("A-letter-preview.png").unwrap();
preview.write_png(&mut output).unwrap();


Bitmap object
Bounding box of shape or contour
Contour object
Quadratic segment object
Edge holder object
Error correction config
Framing options
Base generator config
Gray color
Linear segment object
MSDF generator config
Quadratic segment object
Rgb color
RGB color
Scanline object
Shape object
Generic 2D vector


Configuration of whether to use an algorithm that computes the exact shape distance at the positions of suspected artifacts. This algorithm can be much slower
Edge color enumeration
Error correction mode
Fill rule dictates how intersection total is interpreted during rasterization
Polarity values
Range specifier
Segment kind



Generic edge segment
Error estimation helper trait
Extensions for font objects
Error correction helper trait
Bitmap pixel
Rendering target helper trait
Sign correction helper trait

Type Definitions

Generic 2D point