Skip to content

Files

Latest commit

 

History

History
93 lines (65 loc) · 2.61 KB

README.md

File metadata and controls

93 lines (65 loc) · 2.61 KB

fontsdf

dependency status build status crates.io docs.rs

Signed Distance Field (SDF) textures can be used to render text or other vector art more flexibly[1], with higher quality while using less video memory (for the texture).

This no_std library renders SDF:s directly and not by downscaling a higher resolution rasters.

[1] For example:

  • It is possible to use single a 64px glyph to render both 14px and 200px glyphs.
  • It is easy to add glow, outlines and such.

Comparisons:

NOTE: Use fontdue for simple glyphs instead. It is a lot faster.

Task SDF regular
High resolution glyphs
Medium resolution glyphs
Low resolution glyphs
Stretched or squished glyphs
Shadows borders and effects
GUI:s
3D game worlds
  • ✅ means it is good at

Example usage with image:

let font = fontsdf::Font::from_bytes(..).unwrap();

let (metrics, sdf) = font.rasterize('x', 64.0, true);
image::GrayImage::from_raw(metrics.width as _, metrics.height as _, sdf)
	.unwrap()
	.save("sdf_x.png")
	.unwrap();

Example output:

Normal

SDF

Example results:

Normal

  • 128x156
  • 80px font size

SDF

  • 128x128
  • 48px (+radius) font size (32px input size should be enough for any output size)
  • 'free' shadow

TODO: