diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,18 +1,27 @@
 Changelog for pdfname
 =====================
 
-0.1.2 (released 2017-07-09)
----------------------------
+0.1.3
+-----
 
-[#1](https://github.com/asr/pdfname/issues/1), improved error message.
+* [#5](https://github.com/asr/pdfname/issues/5) and
+  [#6](https://github.com/asr/pdfname/issues/5): added Unicode
+  substitutions.
+* [#3](https://github.com/asr/pdfname/issues/3): an empty PDF file
+  does not generate an exception.
+* Added and fixed substitutions.
 
+0.1.2
+-----
 
-0.1.1 (released 2017-07-07)
----------------------------
+[#1](https://github.com/asr/pdfname/issues/1): improved error message.
 
+0.1.1
+-----
+
 Fixed installation instructions (by Juan Pedro Villa-Isaza).
 
-0.1 (released 2017-07-07)
--------------------------
+0.1
+---
 
 First release.
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -4,9 +4,9 @@
 Description
 -----------
 
-Name a PDF file using information (author, year of creation and title)
-from the `pdfinfo` program.
-
+The `pdfname` command-line program names a PDF file using the author,
+year of creation and title information extracted from the `pdfinfo`
+program.
 
 Prerequisites
 --------------
@@ -18,7 +18,6 @@
 * [pdfinfo](http://linuxcommand.org/man_pages/pdfinfo1.html) Unix
   program
 
-
 Installation
 ------------
 
@@ -77,3 +76,23 @@
 attach the file. All that it is necessary is the *minimal* PDF
 metadata required for triggering the bug. There are various GUI,
 online and command-line tools for modifying the PDF metadata.
+
+Known Errors
+------------
+
+If a PDF file or its metadata information is damaged `pdfname` (via
+the [`pdfinfo`](http://hackage.haskell.org/package/pdfinfo) library)
+generates an error. Known errors are the followings:
+
+```
+fd:5: hGetContents: invalid argument (invalid byte sequence)
+```
+
+```
+Error: May not be a PDF file (continuing anyway)
+Error: PDF file is damaged - attempting to reconstruct xref table...
+Error: Couldn't find trailer dictionary
+Error: Couldn't read xref table
+```
+
+If you get a different error message, please report it.
diff --git a/pdfname.cabal b/pdfname.cabal
--- a/pdfname.cabal
+++ b/pdfname.cabal
@@ -1,5 +1,5 @@
 name:          pdfname
-version:       0.1.2
+version:       0.1.3
 license:       MIT
 license-file:  LICENSE
 author:        Andrés Sicard-Ramírez with contributions by Juan Pedro Villa-Isaza.
@@ -48,6 +48,9 @@
 
   if impl(ghc >= 8.0)
     ghc-options:  -Wall
+                  -- TODO (2017-07-14): I cannot use `cabal repl` if
+                  -- this flag is on.
+                  -- -Werror
                   -Widentities
                   -Wincomplete-record-updates
                   -Wincomplete-uni-patterns
diff --git a/src/CreateFile.hs b/src/CreateFile.hs
--- a/src/CreateFile.hs
+++ b/src/CreateFile.hs
@@ -5,7 +5,7 @@
   , generateFileName
   ) where
 
-import Data.Char  ( isAscii )
+import Data.Char  ( isAsciiLower, isDigit )
 import Data.Maybe ( fromMaybe )
 
 import Data.Text ( Text )
@@ -29,6 +29,7 @@
 import Substituions
   ( authorSubst
   , chSubst
+  , commonSubst
   , titleSubst
   )
 
@@ -39,43 +40,48 @@
   )
 
 ------------------------------------------------------------------------------
-defaultValue ∷ Text
-defaultValue = "xx"
+defaultAuthor, defaultTitle, defaultYear ∷ Text
+defaultAuthor = "no-author"
+defaultTitle  = "no-title"
+defaultYear   = "no-year"
 
 getAuthor ∷ Text → Text
 getAuthor xs =
   if T.null xs
-  then defaultValue
+  then defaultYear
   else
     -- NB that the substituions are not commutative.
-    ( replace chSubst
+    ( T.toLower
+      . replace chSubst
       . T.intercalate (T.singleton '-')
-      . map (T.toLower . T.reverse . T.takeWhile (' ' /=) . T.reverse)
+      . map (T.reverse . T.takeWhile (' ' /=) . T.reverse)
       . T.split (',' ==)
       . replace authorSubst
+      . replace commonSubst
     ) xs
 
 getYear ∷ Text → Text
-getYear xs = if T.null xs then defaultValue else T.take 4 xs
+getYear xs = if T.null xs then defaultYear else T.take 4 xs
 
 getTitle ∷ Text → Text
 getTitle xs =
   if T.null xs
-  then defaultValue
+  then defaultTitle
   else
     -- NB that the substituions are not commutative.
     ( T.toLower
       . replace chSubst
       . replace titleSubst
+      . replace commonSubst
     ) xs
 
 generateFileName ∷ PDFInfo → IO FilePath
 generateFileName info = do
 
   let authorHelper ∷ Text
-      authorHelper = maybe defaultValue getAuthor $ pdfInfoAuthor info
+      authorHelper = maybe defaultAuthor getAuthor $ pdfInfoAuthor info
 
-  author ← if validateName authorHelper
+  author ← if isValidName authorHelper
            then return authorHelper
            else die $ "could not generate the author from "
                        +++ "`"
@@ -83,12 +89,12 @@
                        +++ "`"
 
   let year ∷ Text
-      year = maybe defaultValue (getYear . T.pack . show ) $ pdfInfoCreationDate info
+      year = maybe defaultYear (getYear . T.pack . show ) $ pdfInfoCreationDate info
 
   let titleHelper ∷ Text
-      titleHelper = maybe defaultValue getTitle $ pdfInfoTitle info
+      titleHelper = maybe defaultTitle getTitle $ pdfInfoTitle info
 
-  title ← if validateName titleHelper
+  title ← if isValidName titleHelper
             then return titleHelper
             else die $ "could not generate the title from "
                        +++ "`"
@@ -107,10 +113,13 @@
 
   return fileName
 
--- TODO (2017-07-04): Is there Data.Text functions instead of
--- Data.Char functions for implementing this function?
-validateName ∷ Text → Bool
-validateName t = all (== True) $ map isAscii $ T.unpack t
+-- TODO (2017-07-11): Is there @Data.Text@ functions instead of
+-- @Data.Char@ functions for implementing this function?
+isValidChar ∷ Char → Bool
+isValidChar c = isAsciiLower c || isDigit c || (c == '-')
+
+isValidName ∷ Text → Bool
+isValidName t = all (== True) $ map isValidChar $ T.unpack t
 
 createFile ∷ FilePath → FilePath → IO ()
 createFile f newF =
diff --git a/src/Main.hs b/src/Main.hs
--- a/src/Main.hs
+++ b/src/Main.hs
@@ -3,7 +3,7 @@
 
 module Main where
 
-import qualified Data.Text as T
+import qualified Data.Text.IO as T
 
 import Options.Applicative ( execParser )
 
@@ -14,7 +14,10 @@
   , stderr
   )
 
-import Text.PDF.Info ( pdfInfo )
+import Text.PDF.Info
+  ( pdfInfo
+  , PDFInfoError(ProcessError, ProcessFailure)
+  )
 
 ------------------------------------------------------------------------------
 -- Local imports
@@ -32,12 +35,7 @@
   , outputDir
   )
 
-import Utilities
-  ( (+++)
-  , die
-  , isPDF
-  , unlessM
-  )
+import Utilities ( die )
 
 ------------------------------------------------------------------------------
 
@@ -48,8 +46,6 @@
   let file ∷ FilePath
       file = optInputFile opts
 
-  unlessM (isPDF file) $ die $ T.pack file +++ " is not a PDF file"
-
   info ← pdfInfo file
   case info of
     Right i → do
@@ -58,6 +54,9 @@
         then putStrLn $ "The full path name will be " ++ outputDir </> newFile
         else createFile file newFile
 
-    Left  err → do
-      hPrint stderr err
-      die "PDF file or its metadata information is damaged."
+    Left pdfinfoErr → do
+      case pdfinfoErr of
+        ProcessFailure err → T.hPutStr stderr err
+        ProcessError err   → hPrint stderr err
+        _                  → T.hPutStr stderr "TODO: Missing error message"
+      die "PDF file or its metadata information is damaged"
diff --git a/src/Substituions.hs b/src/Substituions.hs
--- a/src/Substituions.hs
+++ b/src/Substituions.hs
@@ -3,6 +3,7 @@
 module Substituions
   ( authorSubst
   , chSubst
+  , commonSubst
   , titleSubst
   ) where
 
@@ -34,7 +35,7 @@
   , ("&#243;",  "o")              -- LATIN SMALL LETTER O WITH ACUTE
   , ("&#246;",  "o")              -- LATIN SMALL LETTER O WITH DIAERESIS (ö)
   , ("&#250;",  "u")              -- LATIN SMALL LETTER U WITH ACUTE
-  , ("&#352",   "S")              -- LATIN CAPITAL LETTER S WITH CARON
+  , ("&#352;",  "S")              -- LATIN CAPITAL LETTER S WITH CARON
   , ("&#353",   "s")              -- LATIN SMALL LETTER S WITH CARON
   , ("&#955;",  "lambda")         -- GREEK SMALL LETTER LAMDA
   , ("&#8216;", "")               -- LEFT SINGLE QUOTATION MARK
@@ -94,9 +95,11 @@
   , ("&#x2018;",  "")               -- LEFT SINGLE QUOTATION MARK
   , ("&#x2019;",  "")               -- RIGHT SINGLE QUOTATION MARK
   , ("&#x201A;",  "")               -- SINGLE LOW-9 QUOTATION MAR
+  , ("&#x201B;",  "")               -- SINGLE HIGH-REVERSED-9 QUOTATION MARK
   , ("&#x201C;",  "")               -- LEFT DOUBLE QUOTATION MARK
   , ("&#x201D;",  "")               -- RIGHT DOUBLE QUOTATION MARK
   , ("&#x201E;",  "")               -- DOUBLE LOW-9 QUOTATION MARK
+  , ("&#x201F;",  "")               -- DOUBLE HIGH-REVERSED-9 QUOTATION MARK
   , ("&#x2020;",  "dagger")         -- DAGGER
   , ("&#x2021;",  "dagger-dagger")  -- DOUBLE DAGGER
   , ("&#x2022;",  "")               -- BULLET
@@ -109,12 +112,16 @@
 -- | Characters substituions in Unicode notation.
 chUnicodeSubst ∷ [(Text,Text)]
 chUnicodeSubst =
-  [ ("\r",          "")         -- U+000D CARRIAGE RETURN (CR)
+  [ ("\t",          "")         -- U+0009 CHARACTER TABULATION
+  , ("\n",          "")         -- U+000A LINE FEED (LF)
+  , ("\f",          "")         -- U+000C FORM FEED (FF)
+  , ("\r",          "")         -- U+000D CARRIAGE RETURN (CR)
   , (" ",           "-")        -- U+0020 SPACE
   , ("!",           "")         -- U+0021 EXCLAMATION MARK
   , ("\"",          "")         -- U+0022 QUOTATION MARK
   , ("#",           "")         -- U+0023 NUMBER SIGN
   , ("$",           "")         -- U+0024 DOLLAR SIGN
+  , ("%",           "")         -- U+0025 PERCENT SIGN
   , ("&",           "")         -- U+0026 AMPERSAND
   , ("'",           "")         -- U+0027 APOSTROPHE
   , ("(",           "")         -- U+0028 LEFT PARENTHESIS
@@ -122,12 +129,10 @@
   , ("*",           "")         -- U+002A ASTERISK
   , ("+",           "")         -- U+002B PLUS SIGN
   , (",",           "")         -- U+002C COMMA
-  , ("/",           "-")        -- U+002F SOLIDUS
-  , ("²",           "2")        -- U+00B2 SUPERSCRIPT TWO
-  , ("³",           "3")        -- U+00B3 SUPERSCRIPT THREE
-  , ("¹",           "1")        -- U+00B9 SUPERSCRIPT ONE
-  , (":",           ".")        -- U+003A COLON
-  , (";",           ".")        -- U+003B SEMICOLON
+  , (".",           "")         -- U+002D FULL STOP
+  , ("/",           "")         -- U+002F SOLIDUS
+  , (":",           "")         -- U+003A COLON
+  , (";",           "")         -- U+003B SEMICOLON
   , ("<",           "")         -- U+003C LESS-THAN SIGN
   , ("=",           "")         -- U+003D EQUALS SIGN
   , (">",           "")         -- U+003E GREATER-THAN SIGN
@@ -136,48 +141,110 @@
   , ("[",           "")         -- U+005B LEFT SQUARE BRACKET
   , ("\\",          "")         -- U+005C REVERSE SOLIDUS
   , ("]",           "")         -- U+005D RIGHT SQUARE BRACKET
+  , ("^",           "")         -- U+005E CIRCUMFLEX ACCENT
   , ("_",           "-")        -- U+005F LOW LINE
   , ("`",           "")         -- U+0060 GRAVE ACCENT
+  , ("{",           "")         -- U+007B LEFT CURLY BRACKET
   , ("|",           "")         -- U+007C VERTICAL LINE
+  , ("}",           "")         -- U+007B RIGHT CURLY BRACKET
+  , ("~",           "")         -- U+007E TILDE
   , ("¡",           "")         -- U+00A1 INVERTED EXCLAMATION MARK
   , ("¬",           "")         -- U+00AC NOT SIGN
+  , ("²",           "2")        -- U+00B2 SUPERSCRIPT TWO
+  , ("³",           "3")        -- U+00B3 SUPERSCRIPT THREE
+  , ("¹",           "1")        -- U+00B9 SUPERSCRIPT ONE
   , ("À",           "A")        -- U+00C0 LATIN CAPITAL LETTER A WITH GRAVE
   , ("Á",           "A")        -- U+00C1 LATIN CAPITAL LETTER A WITH ACUTE
+  , ("Â",           "A")        -- U+00C2 LATIN CAPITAL LETTER A WITH CIRCUMFLEX
   , ("Ã",           "A")        -- U+00C3 LATIN CAPITAL LETTER A WITH TILDE
-  , ("Æ",           "E")        -- U+00C6 LATIN CAPITAL LETTER AE
+  , ("Ä",           "A")        -- U+00C4 LATIN CAPITAL LETTER A WITH DIAERESIS
+  , ("Å",           "A")        -- U+00C5 LATIN CAPITAL LETTER A WITH RING ABOVE
+  , ("Æ",           "AE")       -- U+00C6 LATIN CAPITAL LETTER AE
+  , ("Ç",           "C")        -- U+00C7 LATIN CAPITAL LETTER C WITH CEDILLA
+  , ("È",           "E")        -- U+00C8 LATIN CAPITAL LETTER E WITH GRAVE
   , ("É",           "E")        -- U+00C9 LATIN CAPITAL LETTER E WITH ACUTE
+  , ("Ê",           "E")        -- U+00CA LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+  , ("Ë",           "E")        -- U+00CB LATIN CAPITAL LETTER E WITH DIAERESIS
   , ("Í",           "I")        -- U+00CD LATIN CAPITAL LETTER I WITH ACUTE
+  , ("Î",           "I")        -- U+00CE LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+  , ("Ï",           "I")        -- U+00CF LATIN CAPITAL LETTER I WITH DIAERESIS
   , ("Ñ",           "N")        -- U+00D1 LATIN CAPITAL LETTER N WITH TILDE
   , ("Ó",           "O")        -- U+00D3 LATIN CAPITAL LETTER O WITH ACUTE
+  , ("Ô",           "O")        -- U+00D4 LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+  , ("Õ",           "O")        -- U+00D5 LATIN CAPITAL LETTER O WITH TILDE
   , ("Ú",           "U")        -- U+00DA LATIN CAPITAL LETTER U WITH ACUTE
+  , ("Û",           "U")        -- U+00DB LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+  , ("Ü",           "U")        -- U+00DC LATIN CAPITAL LETTER U WITH DIAERESIS
   , ("Ö",           "O")        -- U+00D6 LATIN CAPITAL LETTER O WITH DIAERESIS
   , ("×",           "")         -- U+00D7 MULTIPLICATION SIGN
+  , ("Ø",           "O")        -- U+00D8 LATIN CAPITAL LETTER O WITH STROKE
+  , ("Ù",           "U")        -- U+00D9 LATIN CAPITAL LETTER U WITH GRAVE
+  , ("ß",           "ss")       -- U+00DF LATIN SMALL LETTER SHARP S
   , ("à",           "a")        -- U+00E0 LATIN SMALL LETTER A WITH GRAVE
   , ("á",           "a")        -- U+00E1 LATIN SMALL LETTER A WITH ACUTE
   , ("â",           "a")        -- U+00E2 LATIN SMALL LETTER A CIRCUMFLEX
   , ("ã",           "a")        -- U+00E3 LATIN SMALL LETTER A WITH TILDE
   , ("ä",           "a")        -- U+00E4 LATIN SMALL LETTER A WITH DIAERESIS
-  , ("æ",           "e")        -- U+00E6 LATIN SMALL LETTER AE
+  , ("å",           "a")        -- U+00E5 LATIN SMALL LETTER A WITH RING ABOVE
+  , ("æ",           "ae")       -- U+00E6 LATIN SMALL LETTER AE
   , ("ç",           "c")        -- U+00E7 LATIN SMALL LETTER C WITH CEDILLA
+  , ("è",           "e")        -- U+00E8 LATIN SMALL LETTER E WITH GRAVE
   , ("é",           "e")        -- U+00E9 LATIN SMALL LETTER E WITH ACUTE
+  , ("ê",           "e")        -- U+00EA LATIN SMALL LETTER E WITH CIRCUMFLEX
+  , ("ë",           "e")        -- U+00EB LATIN SMALL LETTER E WITH DIAERESIS
   , ("í",           "i")        -- U+00ED LATIN SMALL LETTER I WITH ACUTE
+  , ("î",           "i")        -- U+00EE LATIN SMALL LETTER I WITH CIRCUMFLEX
+  , ("ï",           "i")        -- U+00EF LATIN SMALL LETTER I WITH DIAERESIS
   , ("ñ",           "n")        -- U+00F1 LATIN SMALL LETTER N WITH TILDE
   , ("ò",           "o")        -- U+00F2 LATIN SMALL LETTER O WITH GRAVE
   , ("ó",           "o")        -- U+00F3 LATIN SMALL LETTER O WITH ACUTE
+  , ("ô",           "o")        -- U+00F4 LATIN SMALL LETTER O WITH CIRCUMFLEX
+  , ("õ",           "o")        -- U+00F5 LATIN SMALL LETTER O WITH TILDE
   , ("ö",           "o")        -- U+00F6 LATIN SMALL LETTER O WITH DIAERESIS
   , ("ø",           "o")        -- U+00F8 LATIN SMALL LETTER O WITH STROKE
+  , ("ù",           "u")        -- U+00F9 LATIN SMALL LETTER U WITH GRAVE
   , ("ú",           "u")        -- U+00FA LATIN SMALL LETTER U WITH ACUTE
+  , ("û",           "u")        -- U+00FB LATIN SMALL LETTER U WITH CIRCUMFLEX
   , ("ü",           "u")        -- U+00FC LATIN SMALL LETTER U WITH DIAERESIS
   , ("þ",           "t")        -- U+00FE LATIN SMALL LETTER THORN
   , ("ÿ",           "y")        -- U+00FF LATIN SMALL LETTER Y WITH DIAERESIS
+  , ("Ă",           "A")        -- U+0102 LATIN CAPITAL LETTER A WITH BREVE
+  , ("ă",           "a")        -- U+0103 LATIN SMALL LETTER A WITH
+  , ("Ą",           "A")        -- U+0104 LATIN CAPITAL LETTER A WITH OGONEK
+  , ("ą",           "a")        -- U+0105 LATIN SMALL LETTER A WITH OGONEK
+  , ("Ć",           "c")        -- U+0106 LATIN CAPITAL LETTER C WITH ACUTE
   , ("ć",           "c")        -- U+0107 LATIN SMALL LETTER C WITH ACUTE
   , ("č",           "c")        -- U+010D LATIN SMALL LETTER C WITH CARON
+  , ("Ę",           "e")        -- U+0118 LATIN CAPITAL LETTER E WITH OGONEK
+  , ("ę",           "e")        -- U+0119 LATIN SMALL LETTER E WITH OGONEK
   , ("Ł",           "L")        -- U+0141 LATIN CAPITAL LETTER L WITH STROKE
+  , ("ł",           "l")        -- U+0142 LATIN SMALL LETTER L WITH STROKE
+  , ("Ń",           "N")        -- U+0143 LATIN CAPITAL LETTER N WITH ACUTE
+  , ("ń",           "n")        -- U+0144 LATIN SMALL LETTER N WITH ACUTE
   , ("ņ",           "n")        -- U+0146 LATIN SMALL LETTER N WITH CEDILLA
+  , ("Ő",           "O")        -- U+0150 LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+  , ("ő",           "o")        -- U+0151 LATIN SMALL LETTER O WITH DOUBLE ACUTE
+  , ("Œ",           "OE")       -- U+0152 LATIN CAPITAL LIGATURE OE
+  , ("œ",           "oe")       -- U+0153 LATIN SMALL LIGATURE OE
   , ("ř",           "r")        -- U+0159 LATIN SMALL LETTER R WITH CARON
+  , ("Ś",           "S")        -- U+015A LATIN CAPITAL LETTER S WITH ACUTE
+  , ("ś",           "s")        -- U+015B LATIN SMALL LETTER S WITH ACUTE
+  , ("Š",           "S")        -- U+0160 LATIN CAPITAL LETTER S WITH CARON
   , ("š",           "s")        -- U+0161 LATIN SMALL LETTER S WITH CARON
   , ("ū",           "u")        -- U+016B LATIN SMALL LETTER U WITH MACRON
+  , ("Ű",           "U")        -- U+0170 LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+  , ("ű",           "u")        -- U+0171 LATIN SMALL LETTER U WITH DOUBLE ACUTE
   , ("Ÿ",           "Y")        -- U+0178 LATIN CAPITAL LETTER Y WITH DIAERESIS
+  , ("Ź",           "Z")        -- U+0179 LATIN CAPITAL LETTER Z WITH ACUTE
+  , ("ź",           "z")        -- U+017A LATIN SMALL LETTER Z WITH ACUTE
+  , ("Ż",           "Z")        -- U+017B LATIN CAPITAL LETTER Z WITH DOT ABOVE
+  , ("ż",           "z")        -- U+017C LATIN SMALL LETTER Z WITH DOT ABOVE
+  , ("Ž",           "z")        -- U+017D LATIN CAPITAL LETTER Z WITH CARON
+  , ("ž",           "z")        -- U+017E LATIN SMALL LETTER Z WITH CARON
+  , ("Ș",           "S")        -- U+0218 LATIN CAPITAL LETTER S WITH COMMA BELOW
+  , ("ș",           "s")        -- U+0219 LATIN SMALL LETTER S WITH COMMA BELOW
+  , ("Ț",           "T")        -- U+021A LATIN CAPITAL LETTER T WITH COMMA BELOW
+  , ("ț",           "t")        -- U+021B LATIN SMALL LETTER T WITH COMMA BELOW
   , ("Ω",           "Omega")    -- U+03A9 GREEK CAPITAL LETTER OMEGA
   , ("α",           "alpha")    -- U+03B1 GREEK SMALL LETTER ALPHA
   , ("β",           "beta")     -- U+03B2 GREEK SMALL LETTER BETA
@@ -204,12 +271,21 @@
   , ("χ",           "chi")      -- U+03C7 GREEK SMALL LETTER CHI
   , ("ψ",           "psi")      -- U+03C8 GREEK SMALL LETTER PSI
   , ("ω",           "omega")    -- U+03C9 GREEK SMALL LETTER OMEGA
+  , ("ẞ",           "SS")       -- U+1E9E LATIN CAPITAL LETTER SHARP S
   , ("–",           "-")        -- U+2013 EN DASH
   , ("—",           "-")        -- U+2014 EM DASH
   , ("‘",           "")         -- U+2018 LEFT SINGLE QUOTATION MARK
   , ("’",           "")         -- U+2019 RIGHT SINGLE QUOTATION MARK
+  , ("‚",           "")         -- U+201A SINGLE LOW-9 QUOTATION MARK
+  , ("‛",           "")         -- U+201B SINGLE HIGH-REVERSED-9 QUOTATION MARK
+  , ("“",           "")         -- U+201C LEFT DOUBLE QUOTATION MARK
+  , ("”",           "")         -- U+201D RIGHT DOUBLE QUOTATION MARK
+  , ("„",           "")         -- U+201E DOUBLE LOW-9 QUOTATION MARK
+  , ("‟",           "")         -- U+201F DOUBLE HIGH-REVERSED-9 QUOTATION MARK
   , ("‡",           "")         -- U+2021 DOUBLE DAGGER
   , ("™",           "")         -- U+2122 TRADE MARK SIGN
+  , ("ℵ",           "aleph")    -- U+2135 ALEF SYMBOL
+  , ("ℶ",           "beth")     -- U+2136 BET SYMBOL
   , ("�",          "")         -- U+FFFD REPLACEMENT CHARACTER
   ]
 
@@ -219,17 +295,26 @@
 chSubst =  chHexSubst ++ chNNSubst ++ chDecSubst ++ chUnicodeSubst
 
 ------------------------------------------------------------------------------
+-- Author and title substituions
+
+commonSubst ∷ [(Text, Text)]
+commonSubst =
+  [ ("Ã¡",      "a")  -- U+00C3 and U+00A1 (LATIN SMALL LETTER A WITH GRAVE)
+  , ("Ã©",      "e")  -- U+00C3 and U+00A9 (LATIN SMALL LETTER E WITH ACUTE)
+  , ("Ã\x00AD", "i")  -- U+00C3 and U+00AD (LATIN SMALL LETTER I GRAVE)
+  -- We erase `Ã¶` because it follows an `o` in the examples we know.
+  , ("Ã¶",      "")   -- U+00C3 and U+00B6 (LATIN SMALL LETTER O WITH DIAERESIS)
+  , ("Å›",      "s")  -- U+00C5 and U+203A (LATIN CAPITAL LETTER S WITH ACUTE)
+  ]
+
+------------------------------------------------------------------------------
 -- Author substituions
 
 authorSubst ∷ [(Text, Text)]
 authorSubst =
   [ (", ",   ",")
   , (" and", ",")
-  -- See Issue #1.
-  , ("Ã\x00AD", "i")  -- U+00C3 and U+00AD
-  -- See Issue #1.
-  , ("Ã¡",      "a")  -- U+00C3 and U+00A1
-  , ("Mcbride", "McBride")
+
   ]
 
 ------------------------------------------------------------------------------
@@ -258,7 +343,6 @@
   , ("<TEX>$\\gamma$</TEX>",                              "gamma")
   , ("<TEX>$\\epsilon$</TEX>",                            "epsilon")
   , ("<TEX>$\\eta$</TEX>",                                "eta")
-  -- See Issue #2.
   , ("<TEX>$\\lambda$</TEX>",                             "lambda")
   , ("<TEX>$\\pi$</TEX>",                                 "pi")
   , ("<TEX>$\\omega$</TEX>",                              "omega")
@@ -267,6 +351,4 @@
   , ("<TEX>{\\sc QuickSpec}</TEX>:",                      "QuickSpec")
   , ("<TEX>{\\sc QuodLibet}</TEX>!",                      "QuodLibet")
   , ("<TEX>{\\sc Vampire}</TEX>",                         "Vampire")
-  , ("Å›", "s")  -- U+00C5 and U+203A
-  , ("Ã¶", "")   -- U+00C3 and U+00B6
   ]
diff --git a/src/Utilities.hs b/src/Utilities.hs
--- a/src/Utilities.hs
+++ b/src/Utilities.hs
@@ -4,7 +4,6 @@
  ( (+++)
  , die
  , ifM
- , isPDF
  , progNameVersion
  , replace
  , unless_
@@ -20,19 +19,13 @@
 
 import Data.Version ( showVersion )
 
-import Control.Monad ( replicateM, unless, void )
+import Control.Monad ( unless, void )
 
 import Paths_pdfname ( version )
 
 import System.Environment ( getProgName )
 import System.Exit        ( exitFailure )
-
-import System.IO
-  ( IOMode(ReadMode)
-  , hGetChar
-  , stderr
-  , withBinaryFile
-  )
+import System.IO          ( stderr )
 
 ------------------------------------------------------------------------------
 -- Utilities from the Agda library
@@ -76,10 +69,3 @@
 -- TODO (2017-07-06): To use `getProgName`.
 progNameVersion ∷ String
 progNameVersion = "pdfname" ++ " version " ++ showVersion version
-
-isPDF ∷ FilePath → IO Bool
-isPDF f =
-  ifM ((==) "%PDF" <$> withBinaryFile f ReadMode (replicateM 4 . hGetChar))
-      (return True)
-      (return False)
-
