Skip to content

xor-bits/fontsdf

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

46 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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:

About

Fonts => Signed Distance Fields

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages