Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/yeslogic/fontconfig-rs
Safe wrapper around freedesktop.org's fontconfig library, for locating fonts on UNIX like systems.
https://github.com/yeslogic/fontconfig-rs
fontconfig rust
Last synced: 6 days ago
JSON representation
Safe wrapper around freedesktop.org's fontconfig library, for locating fonts on UNIX like systems.
- Host: GitHub
- URL: https://github.com/yeslogic/fontconfig-rs
- Owner: yeslogic
- License: mit
- Created: 2019-11-14T03:37:25.000Z (about 5 years ago)
- Default Branch: master
- Last Pushed: 2024-07-03T05:14:23.000Z (6 months ago)
- Last Synced: 2024-12-21T06:08:12.033Z (13 days ago)
- Topics: fontconfig, rust
- Language: Rust
- Homepage:
- Size: 135 KB
- Stars: 18
- Watchers: 5
- Forks: 10
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
fontconfig
==========
A wrapper around [freedesktop.org's Fontconfig library][homepage], for locating fonts on UNIX-like systems such as Linux and BSD. Requires Fontconfig to be installed.
Dependencies
------------* Alpine Linux: `fontconfig-dev`
* Arch Linux: `fontconfig`
* Debian-based systems: `libfontconfig1-dev`
* FreeBSD: `fontconfig`
* Void Linux: `fontconfig-devel`Usage
-----`main.rs`:
```rust
use fontconfig::Fontconfig;fn main() {
let fc = Fontconfig::new().unwrap();
// `Fontconfig::find()` returns `Option` (will rarely be `None` but still could be)
let font = fc.find("freeserif", None).unwrap();
// `name` is a `String`, `path` is a `Path`
println!("Name: {}\nPath: {}", font.name, font.path.display());
}
```You could then, for example, use `font.path` to create a `GlyphCache` from [`opengl_graphics`][gl] and pass it to [`conrod`][conrod].
### 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 Fontcofig available for the target platform available at compile time.
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][abonander] for originally creating the
`fontconfig` crate and [allowing us to publish ours under that
name](https://github.com/abonander/fontconfig-rs/issues/9).[conrod]: https://github.com/PistonDevelopers/conrod
[expat-sys]: https://crates.io/crates/expat-sys
[fontconfig-sys]: https://crates.io/crates/fontconfig-sys
[fontconfig]: https://crates.io/crates/fontconfig
[gl]: https://github.com/PistonDevelopers/opengl_graphics
[homepage]: https://www.freedesktop.org/wiki/Software/fontconfig/
[Prince]: https://www.princexml.com/
[servo-fontconfig-sys]: https://crates.io/crates/servo-fontconfig-sys
[servo-fontconfig]: https://crates.io/crates/servo-fontconfig
[yeslogic-fontconfig]: https://crates.io/crates/yeslogic-fontconfig
[yeslogic-fontconfig-sys]: https://crates.io/crates/yeslogic-fontconfig-sys
[abonander]: https://github.com/abonander
[dlopen]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/dlopen.html
[dlib]: https://crates.io/crates/dlib