diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,11 @@
 # citeproc changelog
 
+## 0.3.0.7
+
+  * Remove check for ASCII in case transform code.
+    Previously we weren't doing case transform on words
+    containing non-ASCII characters.
+
 ## 0.3.0.6
 
   * Fix infinite loop in `fixPunct` (#49).  In a few rare cases
diff --git a/citeproc.cabal b/citeproc.cabal
--- a/citeproc.cabal
+++ b/citeproc.cabal
@@ -1,6 +1,6 @@
 cabal-version:       2.2
 name:                citeproc
-version:             0.3.0.6
+version:             0.3.0.7
 synopsis:            Generates citations and bibliography from CSL styles.
 description:         citeproc parses CSL style files and uses them to
                      generate a list of formatted citations and bibliography
diff --git a/man/citeproc.1 b/man/citeproc.1
--- a/man/citeproc.1
+++ b/man/citeproc.1
@@ -1,6 +1,6 @@
 .\" Automatically generated by Pandoc 2.11.4
 .\"
-.TH "citeproc" "1" "" "citeproc 0.3.0.6" ""
+.TH "citeproc" "1" "" "citeproc 0.3.0.7" ""
 .hy
 .SH NAME
 .PP
diff --git a/src/Citeproc/CaseTransform.hs b/src/Citeproc/CaseTransform.hs
--- a/src/Citeproc/CaseTransform.hs
+++ b/src/Citeproc/CaseTransform.hs
@@ -17,7 +17,7 @@
 where
 
 import Data.Ord ()
-import Data.Char (isUpper, isLower, isAscii)
+import Data.Char (isUpper, isLower)
 import Data.Text (Text)
 import qualified Data.Text as T
 import Citeproc.Types (Lang(..))
@@ -94,7 +94,6 @@
      | isMixedCase chunk = chunk
      | T.all isUpper chunk = chunk  -- spec doesn't say this but tests do
                                     -- textcase_TitleCapitalization.txt
-     | T.any (not . isAscii) chunk = chunk
      | st == StartSentence || st == Start =
        capitalizeText mblang $ Unicode.toLower mblang chunk
      | st == AfterWordEnd
diff --git a/src/Citeproc/CslJson.hs b/src/Citeproc/CslJson.hs
--- a/src/Citeproc/CslJson.hs
+++ b/src/Citeproc/CslJson.hs
@@ -545,11 +545,7 @@
   hasWordBreak = any (T.any isWordBreak)
   splitUp = T.groupBy sameType
   sameType c d =
-    -- note that non-English characters get treated differently
-    -- by titlecase transformation
-    (isAscii c && isAlphaNum c && isAscii d && isAlphaNum d) ||
-    (not (isAscii c) && isAlphaNum c && not (isAscii d) && isAlphaNum d) ||
-    (isSpace c && isSpace d)
+    (isAlphaNum c && isAlphaNum d) || (isSpace c && isSpace d)
 
 caseTransform :: Maybe Lang
               -> CaseTransformer
diff --git a/src/Citeproc/Pandoc.hs b/src/Citeproc/Pandoc.hs
--- a/src/Citeproc/Pandoc.hs
+++ b/src/Citeproc/Pandoc.hs
@@ -18,7 +18,7 @@
 import Control.Monad.Trans.State.Strict as S
 import Control.Monad (unless, when)
 import Data.Functor.Reverse
-import Data.Char (isSpace, isAscii, isPunctuation, isAlphaNum)
+import Data.Char (isSpace, isPunctuation, isAlphaNum)
 
 instance CiteprocOutput Inlines where
   toText                = stringify
@@ -280,8 +280,4 @@
   hasWordBreak = T.any isWordBreak
   splitUp = T.groupBy sameType
   sameType c d =
-    -- note that non-English characters get treated differently
-    -- by titlecase transformation
-    (isAscii c && isAlphaNum c && isAscii d && isAlphaNum d) ||
-    (not (isAscii c) && isAlphaNum c && not (isAscii d) && isAlphaNum d) ||
-    (isSpace c && isSpace d)
+    (isAlphaNum c && isAlphaNum d) || (isSpace c && isSpace d)
