```rust use msdfgen_lib as _; // forces linking with msdfgen library
use std::fs::File; use notosans::REGULARTTF as FONT; use ttfparser::Font;
use msdfgen::{FontExt, Bitmap, Range, EDGETHRESHOLD, OVERLAPSUPPORT};
fn main() { let font = Font::fromdata(&FONT, 0).unwrap(); let glyph = font.glyphindex('A').unwrap(); let mut shape = font.glyph_shape(glyph).unwrap();
if !shape.validate() {
panic!("Invalid shape");
}
shape.normalize();
let bounds = shape.get_bounds();
let width = 32;
let height = 32;
let mut bitmap = Bitmap::new(width, height);
println!("bounds: {:?}", bounds);
shape.edge_coloring_simple(3.0, 0);
let framing = bounds.autoframe(width, height, Range::Px(4.0), None).unwrap();
println!("framing: {:?}", framing);
shape.generate_msdf(&mut bitmap, &framing, EDGE_THRESHOLD, OVERLAP_SUPPORT);
let mut output = File::create("A-msdf.png").unwrap();
bitmap.write_png(&mut output).unwrap();
} ```