Home

Awesome

font-kit

Build Status Crates.io Documentation

font-kit provides a common interface to the various system font libraries and provides services such as finding fonts on the system, performing nearest-font matching, and rasterizing glyphs.

Synopsis

let font = SystemSource::new()
    .select_by_postscript_name("ArialMT")
    .unwrap()
    .load()
    .unwrap();

let glyph_id = font.glyph_for_char('A').unwrap();
let mut canvas = Canvas::new(&Size2D::new(32, 32), Format::A8);

font.rasterize_glyph(
    &mut canvas,
    glyph_id,
    32.0,
    &Point2D::new(0.0, 32.0),
    HintingOptions::None,
    RasterizationOptions::GrayscaleAa,
)
.unwrap();

Backends

font-kit delegates to system libraries to perform tasks. It has two types of backends: a source and a loader. Sources are platform font databases; they allow lookup of installed fonts by name or attributes. Loaders are font loading libraries; they allow font files (TTF, OTF, etc.) to be loaded from a file on disk or from bytes in memory. Sources and loaders can be freely intermixed at runtime; fonts can be looked up via DirectWrite and rendered via FreeType, for example.

Available loaders:

Available sources:

On Windows and macOS, the FreeType loader and the Fontconfig source are not built by default. To build them, use the loader-freetype and source-fontconfig Cargo features respectively. If you want them to be the default, instead use the loader-freetype-default and source-fontconfig-default Cargo features respectively. Beware that source-fontconfig-default is rarely what you want on those two platforms!

Features

font-kit is capable of doing the following:

Dependencies

Ubuntu Linux

sudo apt install pkg-config libfreetype6-dev libfontconfig1-dev

License

font-kit is licensed under the same terms as Rust itself.