mirror of
https://github.com/typst/typst
synced 2025-05-14 04:56:26 +08:00
Include embedded fonts in listing
This commit is contained in:
parent
ff16f3fb37
commit
f2732bb7b2
@ -359,10 +359,8 @@ fn open_file(open: Option<&str>, path: &Path) -> StrResult<()> {
|
|||||||
/// Execute a font listing command.
|
/// Execute a font listing command.
|
||||||
fn fonts(command: FontsSettings) -> StrResult<()> {
|
fn fonts(command: FontsSettings) -> StrResult<()> {
|
||||||
let mut searcher = FontSearcher::new();
|
let mut searcher = FontSearcher::new();
|
||||||
searcher.search_system();
|
searcher.search(&command.font_paths);
|
||||||
for path in &command.font_paths {
|
|
||||||
searcher.search_dir(path)
|
|
||||||
}
|
|
||||||
for (name, infos) in searcher.book.families() {
|
for (name, infos) in searcher.book.families() {
|
||||||
println!("{name}");
|
println!("{name}");
|
||||||
if command.variants {
|
if command.variants {
|
||||||
@ -405,14 +403,7 @@ struct PathSlot {
|
|||||||
impl SystemWorld {
|
impl SystemWorld {
|
||||||
fn new(root: PathBuf, font_paths: &[PathBuf]) -> Self {
|
fn new(root: PathBuf, font_paths: &[PathBuf]) -> Self {
|
||||||
let mut searcher = FontSearcher::new();
|
let mut searcher = FontSearcher::new();
|
||||||
searcher.search_system();
|
searcher.search(font_paths);
|
||||||
|
|
||||||
#[cfg(feature = "embed-fonts")]
|
|
||||||
searcher.add_embedded();
|
|
||||||
|
|
||||||
for path in font_paths {
|
|
||||||
searcher.search_dir(path)
|
|
||||||
}
|
|
||||||
|
|
||||||
Self {
|
Self {
|
||||||
root,
|
root,
|
||||||
@ -624,10 +615,22 @@ impl FontSearcher {
|
|||||||
Self { book: FontBook::new(), fonts: vec![] }
|
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.
|
/// Add fonts that are embedded in the binary.
|
||||||
#[cfg(feature = "embed-fonts")]
|
#[cfg(feature = "embed-fonts")]
|
||||||
fn add_embedded(&mut self) {
|
fn search_embedded(&mut self) {
|
||||||
let mut add = |bytes: &'static [u8]| {
|
let mut search = |bytes: &'static [u8]| {
|
||||||
let buffer = Buffer::from_static(bytes);
|
let buffer = Buffer::from_static(bytes);
|
||||||
for (i, font) in Font::iter(buffer).enumerate() {
|
for (i, font) in Font::iter(buffer).enumerate() {
|
||||||
self.book.push(font.info().clone());
|
self.book.push(font.info().clone());
|
||||||
@ -640,20 +643,20 @@ impl FontSearcher {
|
|||||||
};
|
};
|
||||||
|
|
||||||
// Embed default fonts.
|
// Embed default fonts.
|
||||||
add(include_bytes!("../../assets/fonts/LinLibertine_R.ttf"));
|
search(include_bytes!("../../assets/fonts/LinLibertine_R.ttf"));
|
||||||
add(include_bytes!("../../assets/fonts/LinLibertine_RB.ttf"));
|
search(include_bytes!("../../assets/fonts/LinLibertine_RB.ttf"));
|
||||||
add(include_bytes!("../../assets/fonts/LinLibertine_RBI.ttf"));
|
search(include_bytes!("../../assets/fonts/LinLibertine_RBI.ttf"));
|
||||||
add(include_bytes!("../../assets/fonts/LinLibertine_RI.ttf"));
|
search(include_bytes!("../../assets/fonts/LinLibertine_RI.ttf"));
|
||||||
add(include_bytes!("../../assets/fonts/NewCMMath-Book.otf"));
|
search(include_bytes!("../../assets/fonts/NewCMMath-Book.otf"));
|
||||||
add(include_bytes!("../../assets/fonts/NewCMMath-Regular.otf"));
|
search(include_bytes!("../../assets/fonts/NewCMMath-Regular.otf"));
|
||||||
add(include_bytes!("../../assets/fonts/NewCM10-Regular.otf"));
|
search(include_bytes!("../../assets/fonts/NewCM10-Regular.otf"));
|
||||||
add(include_bytes!("../../assets/fonts/NewCM10-Bold.otf"));
|
search(include_bytes!("../../assets/fonts/NewCM10-Bold.otf"));
|
||||||
add(include_bytes!("../../assets/fonts/NewCM10-Italic.otf"));
|
search(include_bytes!("../../assets/fonts/NewCM10-Italic.otf"));
|
||||||
add(include_bytes!("../../assets/fonts/NewCM10-BoldItalic.otf"));
|
search(include_bytes!("../../assets/fonts/NewCM10-BoldItalic.otf"));
|
||||||
add(include_bytes!("../../assets/fonts/DejaVuSansMono.ttf"));
|
search(include_bytes!("../../assets/fonts/DejaVuSansMono.ttf"));
|
||||||
add(include_bytes!("../../assets/fonts/DejaVuSansMono-Bold.ttf"));
|
search(include_bytes!("../../assets/fonts/DejaVuSansMono-Bold.ttf"));
|
||||||
add(include_bytes!("../../assets/fonts/DejaVuSansMono-Oblique.ttf"));
|
search(include_bytes!("../../assets/fonts/DejaVuSansMono-Oblique.ttf"));
|
||||||
add(include_bytes!("../../assets/fonts/DejaVuSansMono-BoldOblique.ttf"));
|
search(include_bytes!("../../assets/fonts/DejaVuSansMono-BoldOblique.ttf"));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Search for fonts in the linux system font directories.
|
/// Search for fonts in the linux system font directories.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user