Merge pull request #2080 from t2y/fix-copy-fonts-message

Fix handling of copy-fonts=true when fonts.css is overridden
This commit is contained in:
Eric Huss 2023-05-13 09:19:06 -07:00 committed by GitHub
commit f4507aeb9b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 10 additions and 16 deletions

View File

@ -275,7 +275,8 @@ impl HtmlHandlebars {
"FontAwesome/fonts/FontAwesome.ttf", "FontAwesome/fonts/FontAwesome.ttf",
theme::FONT_AWESOME_TTF, theme::FONT_AWESOME_TTF,
)?; )?;
if html_config.copy_fonts { // Don't copy the stock fonts if the user has specified their own fonts to use.
if html_config.copy_fonts && theme.fonts_css.is_none() {
write_file(destination, "fonts/fonts.css", theme::fonts::CSS)?; write_file(destination, "fonts/fonts.css", theme::fonts::CSS)?;
for (file_name, contents) in theme::fonts::LICENSES.iter() { for (file_name, contents) in theme::fonts::LICENSES.iter() {
write_file(destination, file_name, contents)?; write_file(destination, file_name, contents)?;
@ -291,20 +292,13 @@ impl HtmlHandlebars {
} }
if let Some(fonts_css) = &theme.fonts_css { if let Some(fonts_css) = &theme.fonts_css {
if !fonts_css.is_empty() { if !fonts_css.is_empty() {
if html_config.copy_fonts {
warn!(
"output.html.copy_fonts is deprecated.\n\
Set copy_fonts=false and ensure the fonts you want are in \
the `theme/fonts/` directory."
);
}
write_file(destination, "fonts/fonts.css", &fonts_css)?; write_file(destination, "fonts/fonts.css", &fonts_css)?;
} }
} }
if !html_config.copy_fonts && theme.fonts_css.is_none() { if !html_config.copy_fonts && theme.fonts_css.is_none() {
warn!( warn!(
"output.html.copy_fonts is deprecated.\n\ "output.html.copy-fonts is deprecated.\n\
This book appears to have copy_fonts=false without a fonts.css file.\n\ This book appears to have copy-fonts=false in book.toml without a fonts.css file.\n\
Add an empty `theme/fonts/fonts.css` file to squelch this warning." Add an empty `theme/fonts/fonts.css` file to squelch this warning."
); );
} }

View File

@ -891,8 +891,8 @@ fn custom_fonts() {
assert_eq!(actual_files(&p.join("book/fonts")), &builtin_fonts); assert_eq!(actual_files(&p.join("book/fonts")), &builtin_fonts);
assert!(has_fonts_css(p)); assert!(has_fonts_css(p));
// Mixed with copy_fonts=true // Mixed with copy-fonts=true
// This should generate a deprecation warning. // Should ignore the copy-fonts setting since the user has provided their own fonts.css.
let temp = TempFileBuilder::new().prefix("mdbook").tempdir().unwrap(); let temp = TempFileBuilder::new().prefix("mdbook").tempdir().unwrap();
let p = temp.path(); let p = temp.path();
MDBook::init(p).build().unwrap(); MDBook::init(p).build().unwrap();
@ -900,10 +900,10 @@ fn custom_fonts() {
write_file(&p.join("theme/fonts"), "myfont.woff", b"").unwrap(); write_file(&p.join("theme/fonts"), "myfont.woff", b"").unwrap();
MDBook::load(p).unwrap().build().unwrap(); MDBook::load(p).unwrap().build().unwrap();
assert!(has_fonts_css(p)); assert!(has_fonts_css(p));
let mut expected = Vec::from(builtin_fonts); assert_eq!(
expected.push("myfont.woff"); actual_files(&p.join("book/fonts")),
expected.sort(); ["fonts.css", "myfont.woff"]
assert_eq!(actual_files(&p.join("book/fonts")), expected.as_slice()); );
// copy-fonts=false, no theme // copy-fonts=false, no theme
// This should generate a deprecation warning. // This should generate a deprecation warning.