fontsdf

Crates.iofontsdf
lib.rsfontsdf
version0.5.1
sourcesrc
created_at2022-05-08 19:16:22.292175
updated_at2023-04-21 15:56:26.6189
descriptionfontdue extension to generate sdf:s directly
homepage
repositoryhttps://github.com/Overpeek/fontsdf
max_upload_size
id582673
size281,125
Eemeli Lehtonen (xor-bits)

documentation

https://docs.rs/fontsdf

README

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
  • :white_check_mark: 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:

Commit count: 46

cargo fmt