Rust library for downloading and caching Google Fonts
- Provides access to
11,689fonts and1,708font families - Supports both variable and static font technologies
- Offers flexible API for font retrieval with caching options
- Includes configurable features for optimizing build time and crate size
- Similar functionality to Android Studio's Downloadable Fonts and Google's Web Fonts API
- Published crate available on crates.io: https://crates.io/crates/google-fonts
Download font data with a few approaches.
use google_fonts::lemonada_variable;
use google_fonts::Font::NotoSansRegular;
use google_fonts::Font::RobotoRegular;
use ttf_parser::Face;
fn main() {
// Get and cache font data with a named function.
let font_data = lemonada_variable().unwrap();
let face = Face::parse(&font_data, 0).unwrap();
eprintln!("Font data: {:?}", face);
// Get and cache font data with an enum variant function.
let font_data = NotoSansRegular.get_with_cache().unwrap();
let face = Face::parse(&font_data, 0).unwrap();
eprintln!("Font data: {:?}", face);
// Get font data without caching by using an enum variant function.
let font_data = RobotoRegular.get().unwrap();
let face = Face::parse(&font_data, 0).unwrap();
eprintln!("Font data: {:?}", face);
}full, variable, and static crate features are available.
variableenables only fonts with variable font technology.staticenables only fonts with static font technology.fullenables bothvariableandstaticfeatures.
variable is the default feature.
Variable font technology is newer, more flexible, and provides style variations in one or two files. Static font technology uses more font files to accomplish the same thing. A majority of the fonts are in the static feature.
Prefer the variable feature when possible.
Enable variable to significantly improve build time, crate size, and rust-analyzer performance.
View font images from docs.
