Thanks to visit codestin.com
Credit goes to lib.rs

#font #wrapper #search

fontconfig

Safe, higher-level wrapper around the Fontconfig library

14 releases (breaking)

0.11.0-rc.1 May 19, 2026
0.10.1 Apr 29, 2026
0.10.0 May 20, 2025
0.9.0 Jul 3, 2024
0.0.1 Dec 11, 2014

#77 in Text processing

Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App

29,524 downloads per month
Used in 21 crates (17 directly)

MIT license

70KB
1.5K SLoC

fontconfig


A wrapper around freedesktop.org's Fontconfig library, for locating fonts on UNIX-like systems such as Linux and FreeBSD. Requires Fontconfig to be installed. Alternatively, set the environment variable RUST_FONTCONFIG_DLOPEN=on or enable the dlopen Cargo feature to load the library at runtime rather than link at build time (useful for cross compiling).

See the Fontconfig developer reference for more information.

Dependencies

To use this crate, you need to have Fontconfig installed on your system. For example, install the package:

  • Arch Linux: fontconfig
  • Debian-based systems: libfontconfig1-dev
  • FreeBSD: fontconfig
  • Void Linux: fontconfig-devel

Usage

Example

use fontconfig::{Fontconfig, FontconfigError};

fn main() -> Result<(), FontconfigError> {
    let fc = Fontconfig::new().expect("unable to init Fontconfig");
    // `Fontconfig::find()` returns `Result` (will rarely be `Err` but still could be)
    let font = fc.find("freeserif", None)?;
    // `name` is a `String`, `path` is a `Path`
    println!("Name: {}\nPath: {}", font.name, font.path.display());
    Ok(())
}

For more advanced usage, see [list_fonts] and the [Pattern] type.

See the examples directory in the repository for more examples.

Cargo Features

Feature Description Default Enabled Extra Dependencies
dlopen dlopen libfontconfig at runtime

The dlopen feature enables building this crate without dynamically linking to the Fontconfig C library at link time. Instead, Fontconfig will be dynamically loaded at runtime with the dlopen function. This can be useful in cross-compiling situations as you don't need to have a version of Fontconfig available for the target platform available at compile time. This can also be enabled by setting the RUST_FONTCONFIG_DLOPEN environment variable.

Other Fontconfig Crates

  • servo-fontconfig — This crate provides a low-level interface only. It depends on servo-fontconfig-sys, which will fall back to building a vendored version of Fontconfig if a compatible version can't be found. It in-turn depends on expat-sys, which does the same thing regarding a vendored version of Expat. This makes it easier if you are distributing a code base that needs Fontconfig, but provides less control over the libraries that will be used.
  • fontconfig-sys — superseded by yeslogic-fontconfig-sys.
  • yeslogic-fontconfig — This crate was previously published under this name before we were given access to publish it as fontconfig.

For our needs in Prince we wanted higher-level bindings that did not fall back on vendored versions of libraries, which is what the crates in this repo provide.

Credits

Thanks to Austin Bonander for originally creating the fontconfig crate and allowing us to publish ours under that name.

Dependencies

~180KB