diff --git a/src/renderer/html_handlebars/hbs_renderer.rs b/src/renderer/html_handlebars/hbs_renderer.rs
index 986b81c2..a7c99225 100644
--- a/src/renderer/html_handlebars/hbs_renderer.rs
+++ b/src/renderer/html_handlebars/hbs_renderer.rs
@@ -275,7 +275,8 @@ impl HtmlHandlebars {
"FontAwesome/fonts/FontAwesome.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)?;
for (file_name, contents) in theme::fonts::LICENSES.iter() {
write_file(destination, file_name, contents)?;
diff --git a/tests/rendered_output.rs b/tests/rendered_output.rs
index a279c4f8..12999b44 100644
--- a/tests/rendered_output.rs
+++ b/tests/rendered_output.rs
@@ -891,8 +891,8 @@ fn custom_fonts() {
assert_eq!(actual_files(&p.join("book/fonts")), &builtin_fonts);
assert!(has_fonts_css(p));
- // Mixed with copy_fonts=true
- // This should generate a deprecation warning.
+ // Mixed with copy-fonts=true
+ // Should ignore the copy-fonts setting since the user has provided their own fonts.css.
let temp = TempFileBuilder::new().prefix("mdbook").tempdir().unwrap();
let p = temp.path();
MDBook::init(p).build().unwrap();
@@ -900,10 +900,10 @@ fn custom_fonts() {
write_file(&p.join("theme/fonts"), "myfont.woff", b"").unwrap();
MDBook::load(p).unwrap().build().unwrap();
assert!(has_fonts_css(p));
- let mut expected = Vec::from(builtin_fonts);
- expected.push("myfont.woff");
- expected.sort();
- assert_eq!(actual_files(&p.join("book/fonts")), expected.as_slice());
+ assert_eq!(
+ actual_files(&p.join("book/fonts")),
+ ["fonts.css", "myfont.woff"]
+ );
// copy-fonts=false, no theme
// This should generate a deprecation warning.