@@ -36,6 +36,7 @@ import Data.List ( isPrefixOf, isInfixOf, intercalate )
3636import System.Environment ( getEnv )
3737import Text.Printf (printf)
3838import System.FilePath ( takeExtension, takeFileName )
39+import System.FilePath.Glob ( namesMatching )
3940import qualified Data.ByteString.Lazy as B
4041import qualified Data.ByteString.Lazy.Char8 as B8
4142import qualified Text.Pandoc.UTF8 as UTF8
@@ -57,7 +58,7 @@ import Text.Pandoc.Options ( WriterOptions(..)
5758import Text.Pandoc.Definition
5859import Text.Pandoc.Walk (walk, walkM)
5960import Control.Monad.State (modify, get, execState, State, put, evalState)
60−import Control.Monad (foldM, mplus, liftM)
61+import Control.Monad (foldM, mplus, liftM, when)
6162import Text.XML.Light ( unode, Element(..), unqual, Attr(..), add_attrs
6263 , strContent, lookupAttr, Node(..), QName(..), parseXML
6364 , onlyElems, node, ppElement)
@@ -387,8 +388,14 @@ writeEPUB opts doc@(Pandoc meta _) = do
387388 picEntries <- foldM readPicEntry [] pics
388389
389390 -- handle fonts
391+ let matchingGlob f = do
392+ xs <- namesMatching f
393+ when (null xs) $
394+ warn $ f ++ " did not match any font files."
395+ return xs
390396 let mkFontEntry f = mkEntry (takeFileName f) `fmap` B.readFile f
391− fontEntries <- mapM mkFontEntry $ writerEpubFonts opts'
397+ fontFiles <- concat <$> mapM matchingGlob (writerEpubFonts opts')
398+ fontEntries <- mapM mkFontEntry fontFiles
392399
393400 -- set page progression direction attribution
394401 let progressionDirection = case epubPageDirection metadata of