Skip to content
/ sdfer Public

SDF ("Signed Distance Field") generation algorithms

License

Notifications You must be signed in to change notification settings

LykenSol/sdfer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SDF ("Signed Distance Field") generation algorithms

Crates.io Docs

Algorithms

Currently, this library contains these SDF generation algorithms:

  • sdfer::bruteforce_bitmap: bitmap-based "closest opposite-color pixel" bruteforce search
  • sdfer::esdt: "Euclidean Subpixel Distance Transform"
    • this is a Rust port of the original JS implementation, from the @use-gpu/glyph npm package
    • the https://acko.net/blog/subpixel-distance-transform/ blog post explains how the older EDT ("Euclidean Distance Transform") algorithm was modified to better use the information present in e.g. grayscale AA rasterization of glyphs (where "grayscale AA" is really an alpha channel encoding of per-pixel coverage)
    • scales (roughly) linearly with the number of output pixels (which are 1:1 with input pixels, so no oversized rasterization required either), making it far more viable than most other algorithms, for on-demand runtime glyph->SDF conversion
      (e.g. to avoid pixel-snapping text during scrolling/panning, to allow some amount of smooth pinch-zooming before needing larger rasterizations, etc.)

License

Licensed under the MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT).

Note: this is MIT-only, instead of the common dual-licensing, mainly due to the ESDT algorithm implementation being a port of the JS code from the @use-gpu/glyph npm package, which itself is MIT-licensed.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this crate by you, shall be licensed as MIT, without any additional terms or conditions.

About

SDF ("Signed Distance Field") generation algorithms

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages