summaryrefslogtreecommitdiff
path: root/cli
diff options
context:
space:
mode:
Diffstat (limited to 'cli')
-rw-r--r--cli/src/main.rs59
1 files changed, 31 insertions, 28 deletions
diff --git a/cli/src/main.rs b/cli/src/main.rs
index 0ae87db5..c62900e7 100644
--- a/cli/src/main.rs
+++ b/cli/src/main.rs
@@ -359,10 +359,8 @@ fn open_file(open: Option<&str>, path: &Path) -> StrResult<()> {
/// Execute a font listing command.
fn fonts(command: FontsSettings) -> StrResult<()> {
let mut searcher = FontSearcher::new();
- searcher.search_system();
- for path in &command.font_paths {
- searcher.search_dir(path)
- }
+ searcher.search(&command.font_paths);
+
for (name, infos) in searcher.book.families() {
println!("{name}");
if command.variants {
@@ -405,14 +403,7 @@ struct PathSlot {
impl SystemWorld {
fn new(root: PathBuf, font_paths: &[PathBuf]) -> Self {
let mut searcher = FontSearcher::new();
- searcher.search_system();
-
- #[cfg(feature = "embed-fonts")]
- searcher.add_embedded();
-
- for path in font_paths {
- searcher.search_dir(path)
- }
+ searcher.search(font_paths);
Self {
root,
@@ -624,10 +615,22 @@ impl FontSearcher {
Self { book: FontBook::new(), fonts: vec![] }
}
+ /// Search everything that is available.
+ fn search(&mut self, font_paths: &[PathBuf]) {
+ self.search_system();
+
+ #[cfg(feature = "embed-fonts")]
+ self.search_embedded();
+
+ for path in font_paths {
+ self.search_dir(path)
+ }
+ }
+
/// Add fonts that are embedded in the binary.
#[cfg(feature = "embed-fonts")]
- fn add_embedded(&mut self) {
- let mut add = |bytes: &'static [u8]| {
+ fn search_embedded(&mut self) {
+ let mut search = |bytes: &'static [u8]| {
let buffer = Buffer::from_static(bytes);
for (i, font) in Font::iter(buffer).enumerate() {
self.book.push(font.info().clone());
@@ -640,20 +643,20 @@ impl FontSearcher {
};
// Embed default fonts.
- add(include_bytes!("../../assets/fonts/LinLibertine_R.ttf"));
- add(include_bytes!("../../assets/fonts/LinLibertine_RB.ttf"));
- add(include_bytes!("../../assets/fonts/LinLibertine_RBI.ttf"));
- add(include_bytes!("../../assets/fonts/LinLibertine_RI.ttf"));
- add(include_bytes!("../../assets/fonts/NewCMMath-Book.otf"));
- add(include_bytes!("../../assets/fonts/NewCMMath-Regular.otf"));
- add(include_bytes!("../../assets/fonts/NewCM10-Regular.otf"));
- add(include_bytes!("../../assets/fonts/NewCM10-Bold.otf"));
- add(include_bytes!("../../assets/fonts/NewCM10-Italic.otf"));
- add(include_bytes!("../../assets/fonts/NewCM10-BoldItalic.otf"));
- add(include_bytes!("../../assets/fonts/DejaVuSansMono.ttf"));
- add(include_bytes!("../../assets/fonts/DejaVuSansMono-Bold.ttf"));
- add(include_bytes!("../../assets/fonts/DejaVuSansMono-Oblique.ttf"));
- add(include_bytes!("../../assets/fonts/DejaVuSansMono-BoldOblique.ttf"));
+ search(include_bytes!("../../assets/fonts/LinLibertine_R.ttf"));
+ search(include_bytes!("../../assets/fonts/LinLibertine_RB.ttf"));
+ search(include_bytes!("../../assets/fonts/LinLibertine_RBI.ttf"));
+ search(include_bytes!("../../assets/fonts/LinLibertine_RI.ttf"));
+ search(include_bytes!("../../assets/fonts/NewCMMath-Book.otf"));
+ search(include_bytes!("../../assets/fonts/NewCMMath-Regular.otf"));
+ search(include_bytes!("../../assets/fonts/NewCM10-Regular.otf"));
+ search(include_bytes!("../../assets/fonts/NewCM10-Bold.otf"));
+ search(include_bytes!("../../assets/fonts/NewCM10-Italic.otf"));
+ search(include_bytes!("../../assets/fonts/NewCM10-BoldItalic.otf"));
+ search(include_bytes!("../../assets/fonts/DejaVuSansMono.ttf"));
+ search(include_bytes!("../../assets/fonts/DejaVuSansMono-Bold.ttf"));
+ search(include_bytes!("../../assets/fonts/DejaVuSansMono-Oblique.ttf"));
+ search(include_bytes!("../../assets/fonts/DejaVuSansMono-BoldOblique.ttf"));
}
/// Search for fonts in the linux system font directories.