[latex3-commits] [latex3/latex3] gh1232-titlecase-2: Treat "titlecase" and "titlecase_first" as equivalent (74ff97c71)

github at latex-project.org github at latex-project.org
Fri Jul 7 00:23:25 CEST 2023


Repository : https://github.com/latex3/latex3
On branch  : gh1232-titlecase-2
Link       : https://github.com/latex3/latex3/commit/74ff97c71f33983da95cf6dc6e623931b8bab61d

>---------------------------------------------------------------

commit 74ff97c71f33983da95cf6dc6e623931b8bab61d
Author: Joseph Wright <joseph.wright at morningstar2.co.uk>
Date:   Thu Jul 6 23:23:25 2023 +0100

    Treat "titlecase" and "titlecase_first" as equivalent
    
    No doc changes at this stage as this is a 'stepping stone'
    commit: further changes are anticipated.


>---------------------------------------------------------------

74ff97c71f33983da95cf6dc6e623931b8bab61d
 l3kernel/l3text-case.dtx                | 56 ++++++-------------------------
 l3kernel/testfiles/m3text002.luatex.tlg | 58 ++++++++++++++++-----------------
 l3kernel/testfiles/m3text002.ptex.tlg   | 56 +++++++++++++++----------------
 l3kernel/testfiles/m3text002.tlg        | 58 ++++++++++++++++-----------------
 l3kernel/testfiles/m3text002.uptex.tlg  | 50 ++++++++++++++--------------
 l3kernel/testfiles/m3text002.xetex.tlg  | 58 ++++++++++++++++-----------------
 6 files changed, 150 insertions(+), 186 deletions(-)

diff --git a/l3kernel/l3text-case.dtx b/l3kernel/l3text-case.dtx
index 8b55915ae..ddc595019 100644
--- a/l3kernel/l3text-case.dtx
+++ b/l3kernel/l3text-case.dtx
@@ -97,7 +97,7 @@
 \cs_new:Npn \text_titlecase:n #1
   { \@@_change_case:nnn { title } { } {#1} }
 \cs_new:Npn \text_titlecase_first:n #1
-  { \@@_change_case:nnn { titleonly } { } {#1} }
+  { \@@_change_case:nnn { title } { } {#1} }
 \cs_new:Npn \text_lowercase:nn #1#2
   { \@@_change_case:nnn { lower } {#1} {#2} }
 \cs_new:Npn \text_uppercase:nn #1#2
@@ -105,7 +105,7 @@
 \cs_new:Npn \text_titlecase:nn #1#2
   { \@@_change_case:nnn { title } {#1} {#2} }
 \cs_new:Npn \text_titlecase_first:nn #1#2
-  { \@@_change_case:nnn { titleonly } {#1} {#2} }
+  { \@@_change_case:nnn { title } {#1} {#2} }
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
@@ -159,40 +159,32 @@
 %   {
 %     \@@_change_case_switch_lower:nnNnnnn ,
 %     \@@_change_case_switch_upper:nnNnnnn ,
-%     \@@_change_case_switch_title:nnNnnnn ,
-%     \@@_change_case_switch_titleonly:nnNnnnn
+%     \@@_change_case_switch_title:nnNnnnn
 %   }
 % \begin{macro}[EXP]
 %   {
 %     \@@_change_case_letterlike_lower:nnN ,
 %     \@@_change_case_letterlike_upper:nnN ,
-%     \@@_change_case_letterlike_title:nnN ,
-%     \@@_change_case_letterlike_titleonly:nnN
+%     \@@_change_case_letterlike_title:nnN
 %   }
 % \begin{macro}[EXP]{\@@_change_case_letterlike:nnnnN}
 % \begin{macro}[EXP]
 %   {
 %     \@@_change_case_custom_lower:nnn ,
 %     \@@_change_case_custom_title:nnn ,
-%     \@@_change_case_custom_upper:nnn ,
-%     \@@_change_case_custom_titleonly:nnn
+%     \@@_change_case_custom_upper:nnn
 %   }
 % \begin{macro}[EXP]{\@@_change_case_custom:nnn}
 % \begin{macro}[EXP]
 %   {
 %     \@@_change_case_codepoint_lower:nnn ,
 %     \@@_change_case_codepoint_upper:nnn ,
-%     \@@_change_case_codepoint_title:nnn ,
-%     \@@_change_case_codepoint_titleonly:nnn
+%     \@@_change_case_codepoint_title:nnn
 %   }
 % \begin{macro}[EXP]{\@@_change_case_lower_sigma:nnnn}
 % \begin{macro}[EXP]{\@@_change_case_lower_sigma:nnnw}
 % \begin{macro}[EXP]{\@@_change_case_lower_sigma:nnnN}
-% \begin{macro}[EXP]
-%   {
-%     \@@_change_case_codepoint_title:nn     ,
-%     \@@_change_case_codepoint_titleonly:nn
-%   }
+% \begin{macro}[EXP]{\@@_change_case_codepoint_title:nn}
 % \begin{macro}[EXP]{\@@_change_case_codepoint_title:nnnn}
 % \begin{macro}[EXP]
 %   {\@@_change_case_codepoint:nnnn, \@@_change_case_codepoint_aux:nnnn}
@@ -205,10 +197,9 @@
 %   }
 % \begin{macro}[EXP]
 %   {
-%     \@@_change_case_next_lower:nn     ,
-%     \@@_change_case_next_upper:nn     ,
-%     \@@_change_case_next_title:nn     ,
-%     \@@_change_case_next_titleonly:nn ,
+%     \@@_change_case_next_lower:nn ,
+%     \@@_change_case_next_upper:nn ,
+%     \@@_change_case_next_title:nn ,
 %     \@@_change_case_next_end:nn
 %   }
 %   As for the expansion code, the business end of case changing is the
@@ -330,18 +321,6 @@
 \cs_new_eq:NN \@@_change_case_group_upper:nnn
   \@@_change_case_group_lower:nnn
 \cs_new:Npn \@@_change_case_group_title:nnn #1#2#3
-  {
-    \@@_change_case_store:o
-      {
-        \exp_after:wN
-          {
-            \exp:w
-            \@@_change_case_auxii:nnn {#3} {#1} {#2}
-          }
-      }
-    \@@_change_case_loop:nnw { lower } {#2}
-  }
-\cs_new:Npn \@@_change_case_group_titleonly:nnn #1#2#3
   {
     \@@_change_case_store:o
       {
@@ -534,11 +513,6 @@
     \@@_change_case_loop:nnw {#1} {#2}
   }
 \cs_new:Npn \@@_change_case_switch_title:nnNnnnn #1#2#3#4#5#6#7
-  {
-    \@@_change_case_store:n {#7}
-    \@@_change_case_loop:nnw {#1} {#2}
-  }
-\cs_new:Npn \@@_change_case_switch_titleonly:nnNnnnn #1#2#3#4#5#6#7
   {
     \@@_change_case_store:n {#7}
     \@@_change_case_break:w
@@ -555,8 +529,6 @@
 \cs_new_eq:NN \@@_change_case_letterlike_upper:nnN
   \@@_change_case_letterlike_lower:nnN
 \cs_new:Npn \@@_change_case_letterlike_title:nnN #1#2#3
-  { \@@_change_case_letterlike:nnnnN { upper } { lower } {#1} {#2} #3 }
-\cs_new:Npn \@@_change_case_letterlike_titleonly:nnN #1#2#3
   { \@@_change_case_letterlike:nnnnN { upper } { end } {#1} {#2} #3 }
 \cs_new:Npn \@@_change_case_letterlike:nnnnN #1#2#3#4#5
   {
@@ -596,8 +568,6 @@
           { \use:c { @@_change_case_codepoint_ #1 :nnn } {#1} {#2} {#3} }
       }
   }
-\cs_new_eq:NN \@@_change_case_custom_titleonly:nnn
-  \@@_change_case_custom_title:nnn
 \cs_new:Npn \@@_change_case_custom:nnnnn #1#2#3#4#5
   {
     \tl_if_exist:cTF { l_@@_ #1 case _ \tl_to_str:n {#3} _ #2 _tl }
@@ -697,11 +667,7 @@
       { \use:c { @@_change_case_codepoint_ #1 :nn } }
         {#2} {#3}
   }
-\cs_new_eq:NN \@@_change_case_codepoint_titleonly:nnn
-  \@@_change_case_codepoint_title:nnn
 \cs_new:Npn \@@_change_case_codepoint_title:nn #1#2
-  { \@@_change_case_codepoint_title:nnnn { title } { lower } {#1} {#2} }
-\cs_new:Npn \@@_change_case_codepoint_titleonly:nn #1#2
   { \@@_change_case_codepoint_title:nnnn { title } { end } {#1} {#2} }
 \cs_new:Npn \@@_change_case_codepoint_title:nnnn #1#2#3#4
   {
@@ -805,8 +771,6 @@
   \@@_change_case_next_lower:nn
 \cs_new_eq:NN \@@_change_case_next_title:nn
   \@@_change_case_next_lower:nn
-\cs_new_eq:NN \@@_change_case_next_titleonly:nn
-  \@@_change_case_next_lower:nn
 \cs_new:Npn \@@_change_case_next_end:nn #1#2
   { \@@_change_case_break:w }
 %    \end{macrocode}
diff --git a/l3kernel/testfiles/m3text002.luatex.tlg b/l3kernel/testfiles/m3text002.luatex.tlg
index ff99417fa..990af5a9a 100644
--- a/l3kernel/testfiles/m3text002.luatex.tlg
+++ b/l3kernel/testfiles/m3text002.luatex.tlg
@@ -30,15 +30,15 @@ TEST 4: Titlecase basics
 ============================================================
 Hello world
 Hello world
-Hello world
 HELLO WORLD
-" Hello world"
+HELLO WORLD
 " Hello world"
 " Hello world"
 " HELLO WORLD"
+" HELLO WORLD"
 {H}ello world
 {H}ello world
-{H}ello world
+{H}ELLO WORLD
 {H}ELLO WORLD
 {}hello world
 {}hello world
@@ -58,21 +58,21 @@ TEST 5: Titlecase skipping chars
 ============================================================
 TEST 6: Titlecase first
 ============================================================
-`Hic sunt leones'
 `Hic SUNT leones'
-`Hic sunt leones'
+`Hic SUNT leones'
+`HIC SUNT leones'
 `HIC SUNT leones'
-E pluribus unum
+E PLURIBUS UNUM
 E PLURIBUS UNUM
 ============================================================
 ============================================================
 TEST 7: Titlecase control
 ============================================================
-`hic sunt leones'
 `hic SUNT leones'
-`hic sunt leones'
+`hic SUNT leones'
 `HIC SUNT leones'
-E pluribus unum
+`HIC SUNT leones'
+E PLURIBUS UNUM
 E PLURIBUS UNUM
 ============================================================
 ============================================================
@@ -92,7 +92,7 @@ TEST 9: (u)pTeX-based tests
 ============================================================
 abc^^e8日本語
 ABC^^c8日本語
-Abc^^e8日本語
+ABC^^c8日本語
 ABC^^c8日本語
 一级标题
 一级标题
@@ -104,7 +104,7 @@ TEST 10: Unicode case changing
 ============================================================
 ^^e5^^e9^^ee^^f8ὥдαɛ
 ^^c5^^c9^^ce^^d8ὭДΑƐ
-^^c5^^e9^^ee^^f8ὥдαɛ
+^^c5^^e9^^ee^^f8ὭдαƐ
 ^^c5^^e9^^ee^^f8ὭдαƐ
 ============================================================
 ============================================================
@@ -120,11 +120,11 @@ TEST 12: The final sigma rule
 ============================================================
 ὀδυσσεύς (ὀδυσσεύς) ὀδυσσεύς, ὀδυσσεύς{} ὀδυσσεύς\noop 
 ὈΔΥΣΣΕΎΣ (ὈΔΥΣΣΕΎΣ) ὈΔΥΣΣΕΎΣ, ὈΔΥΣΣΕΎΣ{} ὈΔΥΣΣΕΎΣ\noop 
-Ὀδυσσεύς (ὀδυσσεύς) ὀδυσσεύς, ὀδυσσεύς{} ὀδυσσεύς\noop 
+ὈΔΥΣΣΕΎΣ (ὈΔΥΣΣΕΎΣ) ὈΔΥΣΣΕΎΣ, ὈΔΥΣΣΕΎΣ{} ὈΔΥΣΣΕΎΣ\noop 
 ὈΔΥΣΣΕΎΣ (ὈΔΥΣΣΕΎΣ) ὈΔΥΣΣΕΎΣ, ὈΔΥΣΣΕΎΣ{} ὈΔΥΣΣΕΎΣ\noop 
 ὀδυσσεύς
 ὈΔΥΣΣΕΎΣ
-Ὀδυσσεύς
+ὈΔΥΣΣΕΎΣ
 ὈΔΥΣΣΕΎΣ
 ============================================================
 ============================================================
@@ -132,7 +132,7 @@ TEST 13: Cyrillic
 ============================================================
 доклады академии наук
 ДОКЛАДЫ АКАДЕМИИ НАУК
-Доклады академии наук
+Доклады Академии наук
 Доклады Академии наук
 ============================================================
 ============================================================
@@ -193,8 +193,8 @@ TEST 17: Greek
 ΤΟ ΕΝΑ Ή ΤΟ ΑΛΛΟ.
 ΡΩΜΈΙΚΑ
 ΡΩΜΕΪΚΑ
-Ὀδυσσεύς
-Ὀδυσσεύς
+ὈΔΥΣΣΕΎΣ
+ὈΔΥΣΣΕΎΣ
 ΉΙ
 ῌ
 ΗΙ
@@ -243,10 +243,10 @@ ragıp hul^^fbsi ^^f6zdem
 ragip hul^^fbsi̇ ^^f6zdem
 RAGIP HUL^^dbSİ ^^d6ZDEM
 RAGIP HUL^^dbSI ^^d6ZDEM
-Ragıp hul^^fbsi ^^f6zdem
-Ragıp hul^^fbsi ^^f6zdem
-Ip hul^^fbsi ^^f6zdem
-Ip hul^^fbsi ^^f6zdem
+Ragıp Hul^^fbsi ^^d6zdem
+Ragıp Hul^^fbsi ^^d6zdem
+Ip Hul^^fbsi ^^d6zdem
+Ip Hul^^fbsi ^^d6zdem
 ============================================================
 ============================================================
 TEST 19: Lithuanian
@@ -255,9 +255,9 @@ i̇̀i̇́i̇̃i̇̀i̇́i̇̃j̇̀j̇́j̇̃į̇̀į̇́į̇̃
 ^^ec^^edĩìíĩj̀j́j̃į̀į́į̃
 ÌÌĨÌÍĨJ̀J́J̃Į̀Į́Į̃
 İ̀İ̀İ̃İ̀İ́İ̃J̇̀J̇́J̇̃Į̇̀Į̇́Į̇̃
-^^cci̇́i̇̃i̇̀i̇́i̇̃j̇̀j̇́j̇̃į̇̀į̇́į̇̃
+^^cc^^cdĨÌÍĨJ̀J́J̃Į̀Į́Į̃
 Ìi̇̀i̇̃i̇̀i̇́i̇̃j̇̀j̇́j̇̃į̇̀į̇́į̇̃
-^^cc^^edĩìíĩj̀j́j̃į̀į́į̃
+^^cc^^cdĨÌÍĨJ̀J́J̃Į̀Į́Į̃
 İ̀i̇̀i̇̃i̇̀i̇́i̇̃j̇̀j̇́j̇̃į̇̀į̇́į̇̃
 ============================================================
 ============================================================
@@ -280,7 +280,7 @@ Ijsselmeer
 IJsselmeer
 Ijsselmeer
 IJsselmeer
-Ijsselmeer
+IJsselmeer
 Im
 Im
 ============================================================
@@ -295,11 +295,11 @@ TEST 23: Case changing braced arguments
 ============================================================
 foo \emph {BAR} {baz}
 FOO \emph {BAR} {BAZ}
-Foo \emph {BAR} {baz}
+FOO \emph {BAR} {BAZ}
 FOO \emph {BAR} {BAZ}
 \emph {BAR} {baz}
 \emph {BAR} {BAZ}
-\emph {BAR} {Baz}
+\emph {BAR} {BAZ}
 \emph {BAR} {BAZ}
 ============================================================
 ============================================================
@@ -307,7 +307,7 @@ TEST 24: Expanding content
 ============================================================
 some text hello
 SOME TEXT HELLO
-Some text hello
+Some text Hello
 Some text Hello
 hello sometext
 HELLO SOMETEXT
@@ -315,7 +315,7 @@ Hello sometext
 Hello sometext
 some text hello
 SOME TEXT HELLO
-Some text hello
+Some text Hello
 Some text Hello
 hello sometext
 HELLO SOMETEXT
@@ -359,7 +359,7 @@ TEST 27: Letter-like commands
 ============================================================
 \aa \aa \ae \dh \ss \l \o 
 \AA \AA \AE \DH \SS \L \O 
-\AA \aa \ae \dh \ss \l \o 
+\AA \aa \ae \dh \ss \l \O 
 \AA \aa \ae \dh \ss \l \O 
 ============================================================
 ============================================================
@@ -398,7 +398,7 @@ Title
 Title
 WORDS lower
 words UPPER
-Words UPPER
+Words \text_case_switch:nnnn {normal}{lower}{UPPER}{Title}
 Words \text_case_switch:nnnn {normal}{lower}{UPPER}{Title}
 ============================================================
 ============================================================
diff --git a/l3kernel/testfiles/m3text002.ptex.tlg b/l3kernel/testfiles/m3text002.ptex.tlg
index 70da570cb..14c009a73 100644
--- a/l3kernel/testfiles/m3text002.ptex.tlg
+++ b/l3kernel/testfiles/m3text002.ptex.tlg
@@ -30,15 +30,15 @@ TEST 4: Titlecase basics
 ============================================================
 Hello world
 Hello world
-Hello world
 HELLO WORLD
-" Hello world"
+HELLO WORLD
 " Hello world"
 " Hello world"
 " HELLO WORLD"
+" HELLO WORLD"
 {H}ello world
 {H}ello world
-{H}ello world
+{H}ELLO WORLD
 {H}ELLO WORLD
 {}hello world
 {}hello world
@@ -58,21 +58,21 @@ TEST 5: Titlecase skipping chars
 ============================================================
 TEST 6: Titlecase first
 ============================================================
-`Hic sunt leones'
 `Hic SUNT leones'
-`Hic sunt leones'
+`Hic SUNT leones'
 `HIC SUNT leones'
-E pluribus unum
+`HIC SUNT leones'
+E PLURIBUS UNUM
 E PLURIBUS UNUM
 ============================================================
 ============================================================
 TEST 7: Titlecase control
 ============================================================
-`hic sunt leones'
 `hic SUNT leones'
-`hic sunt leones'
+`hic SUNT leones'
+`HIC SUNT leones'
 `HIC SUNT leones'
-E pluribus unum
+E PLURIBUS UNUM
 E PLURIBUS UNUM
 ============================================================
 ============================================================
@@ -92,7 +92,7 @@ TEST 9: (u)pTeX-based tests
 ============================================================
 abc^^c3^^a8日本語
 ABC^^c3^^88日本語
-Abc^^c3^^a8日本語
+ABC^^c3^^88日本語
 ABC^^c3^^88日本語
 一^^e7^^ba^^a7^^e6^^a0^^87^^e9^^a2^^98
 一^^e7^^ba^^a7^^e6^^a0^^87^^e9^^a2^^98
@@ -104,7 +104,7 @@ TEST 10: Unicode case changing
 ============================================================
 ^^c3^^a5^^c3^^a9^^c3^^ae^^c3^^b8^^e1^^bd^^a5дα^^c9^^9b
 ^^c3^^85^^c3^^89^^c3^^8e^^c3^^98^^e1^^bd^^adдα^^c6^^90
-^^c3^^85^^c3^^a9^^c3^^ae^^c3^^b8^^e1^^bd^^a5дα^^c9^^9b
+^^c3^^85^^c3^^a9^^c3^^ae^^c3^^b8^^e1^^bd^^adдα^^c6^^90
 ^^c3^^85^^c3^^a9^^c3^^ae^^c3^^b8^^e1^^bd^^adдα^^c6^^90
 ============================================================
 ============================================================
@@ -120,11 +120,11 @@ TEST 12: The final sigma rule
 ============================================================
 ^^e1^^bd^^80ΔΥΣΣΕ^^cf^^8dΣ (^^e1^^bd^^80ΔΥΣΣΕ^^cf^^8dΣ) ^^e1^^bd^^80ΔΥΣΣΕ^^cf^^8dΣ, ^^e1^^bd^^80ΔΥΣΣΕ^^cf^^8dΣ{} ^^e1^^bd^^80ΔΥΣΣΕ^^cf^^8dΣ\noop 
 ^^e1^^bd^^88ΔΥΣΣΕ^^ce^^8eΣ (^^e1^^bd^^88ΔΥΣΣΕ^^ce^^8eΣ) ^^e1^^bd^^88ΔΥΣΣΕ^^ce^^8eΣ, ^^e1^^bd^^88ΔΥΣΣΕ^^ce^^8eΣ{} ^^e1^^bd^^88ΔΥΣΣΕ^^ce^^8eΣ\noop 
-^^e1^^bd^^88ΔΥΣΣΕ^^cf^^8dΣ (^^e1^^bd^^80ΔΥΣΣΕ^^cf^^8dΣ) ^^e1^^bd^^80ΔΥΣΣΕ^^cf^^8dΣ, ^^e1^^bd^^80ΔΥΣΣΕ^^cf^^8dΣ{} ^^e1^^bd^^80ΔΥΣΣΕ^^cf^^8dΣ\noop 
+^^e1^^bd^^88ΔΥΣΣΕ^^ce^^8eΣ (^^e1^^bd^^88ΔΥΣΣΕ^^ce^^8eΣ) ^^e1^^bd^^88ΔΥΣΣΕ^^ce^^8eΣ, ^^e1^^bd^^88ΔΥΣΣΕ^^ce^^8eΣ{} ^^e1^^bd^^88ΔΥΣΣΕ^^ce^^8eΣ\noop 
 ^^e1^^bd^^88ΔΥΣΣΕ^^ce^^8eΣ (^^e1^^bd^^88ΔΥΣΣΕ^^ce^^8eΣ) ^^e1^^bd^^88ΔΥΣΣΕ^^ce^^8eΣ, ^^e1^^bd^^88ΔΥΣΣΕ^^ce^^8eΣ{} ^^e1^^bd^^88ΔΥΣΣΕ^^ce^^8eΣ\noop 
 ^^e1^^bd^^80ΔΥΣΣΕ^^cf^^8dΣ
 ^^e1^^bd^^88ΔΥΣΣΕ^^ce^^8eΣ
-^^e1^^bd^^88ΔΥΣΣΕ^^cf^^8dΣ
+^^e1^^bd^^88ΔΥΣΣΕ^^ce^^8eΣ
 ^^e1^^bd^^88ΔΥΣΣΕ^^ce^^8eΣ
 ============================================================
 ============================================================
@@ -193,8 +193,8 @@ TEST 17: Greek
 Το ^^ce^^95να ^^ce^^89 το ^^ce^^91λλο.
 ρωμ^^ce^^88ικα
 ρωμ^^ce^^95ικα
-^^e1^^bd^^88ΔΥΣΣΕ^^cf^^8dΣ
-^^e1^^bd^^88ΔΥΣΣΕ^^cf^^8dΣ
+^^e1^^bd^^88ΔΥΣΣΕ^^ce^^8eΣ
+^^e1^^bd^^88ΔΥΣΣΕ^^ce^^8eΣ
 ^^ce^^89^^ce^^99
 ^^e1^^bf^^8c
 ^^ce^^97^^ce^^99
@@ -243,10 +243,10 @@ rag^^c4^^b1p hul^^c3^^bbsi ^^c3^^b6zdem
 ragip hul^^c3^^bbsi^^cc^^87 ^^c3^^b6zdem
 RAGIP HUL^^c3^^9bS^^c4^^b0 ^^c3^^96ZDEM
 RAGIP HUL^^c3^^9bSI ^^c3^^96ZDEM
-Rag^^c4^^b1p hul^^c3^^bbsi ^^c3^^b6zdem
-Rag^^c4^^b1p hul^^c3^^bbsi ^^c3^^b6zdem
-Ip hul^^c3^^bbsi ^^c3^^b6zdem
-Ip hul^^c3^^bbsi ^^c3^^b6zdem
+Rag^^c4^^b1p Hul^^c3^^bbsi ^^c3^^96zdem
+Rag^^c4^^b1p Hul^^c3^^bbsi ^^c3^^96zdem
+Ip Hul^^c3^^bbsi ^^c3^^96zdem
+Ip Hul^^c3^^bbsi ^^c3^^96zdem
 ============================================================
 ============================================================
 TEST 19: Lithuanian
@@ -255,9 +255,9 @@ i^^cc^^87^^cc^^80i^^cc^^87^^cc^^81i^^cc^^87^^cc^^83i^^cc^^87^^cc^^80i^^cc^^87^^c
 ^^c3^^ac^^c3^^ad^^c4^^a9i^^cc^^80i^^cc^^81i^^cc^^83j^^cc^^80j^^cc^^81j^^cc^^83^^c4^^af^^cc^^80^^c4^^af^^cc^^81^^c4^^af^^cc^^83
 I^^cc^^80I^^cc^^80I^^cc^^83I^^cc^^80I^^cc^^81I^^cc^^83J^^cc^^80J^^cc^^81J^^cc^^83^^c4^^ae^^cc^^80^^c4^^ae^^cc^^81^^c4^^ae^^cc^^83
 I^^cc^^87^^cc^^80I^^cc^^87^^cc^^80I^^cc^^87^^cc^^83I^^cc^^87^^cc^^80I^^cc^^87^^cc^^81I^^cc^^87^^cc^^83J^^cc^^87^^cc^^80J^^cc^^87^^cc^^81J^^cc^^87^^cc^^83^^c4^^ae^^cc^^87^^cc^^80^^c4^^ae^^cc^^87^^cc^^81^^c4^^ae^^cc^^87^^cc^^83
-^^c3^^8ci^^cc^^87^^cc^^81i^^cc^^87^^cc^^83i^^cc^^87^^cc^^80i^^cc^^87^^cc^^81i^^cc^^87^^cc^^83j^^cc^^87^^cc^^80j^^cc^^87^^cc^^81j^^cc^^87^^cc^^83^^c4^^af^^cc^^87^^cc^^80^^c4^^af^^cc^^87^^cc^^81^^c4^^af^^cc^^87^^cc^^83
+^^c3^^8c^^c3^^8d^^c4^^a8I^^cc^^80I^^cc^^81I^^cc^^83J^^cc^^80J^^cc^^81J^^cc^^83^^c4^^ae^^cc^^80^^c4^^ae^^cc^^81^^c4^^ae^^cc^^83
 I^^cc^^80i^^cc^^87^^cc^^80i^^cc^^87^^cc^^83i^^cc^^87^^cc^^80i^^cc^^87^^cc^^81i^^cc^^87^^cc^^83j^^cc^^87^^cc^^80j^^cc^^87^^cc^^81j^^cc^^87^^cc^^83^^c4^^af^^cc^^87^^cc^^80^^c4^^af^^cc^^87^^cc^^81^^c4^^af^^cc^^87^^cc^^83
-^^c3^^8c^^c3^^ad^^c4^^a9i^^cc^^80i^^cc^^81i^^cc^^83j^^cc^^80j^^cc^^81j^^cc^^83^^c4^^af^^cc^^80^^c4^^af^^cc^^81^^c4^^af^^cc^^83
+^^c3^^8c^^c3^^8d^^c4^^a8I^^cc^^80I^^cc^^81I^^cc^^83J^^cc^^80J^^cc^^81J^^cc^^83^^c4^^ae^^cc^^80^^c4^^ae^^cc^^81^^c4^^ae^^cc^^83
 I^^cc^^87^^cc^^80i^^cc^^87^^cc^^80i^^cc^^87^^cc^^83i^^cc^^87^^cc^^80i^^cc^^87^^cc^^81i^^cc^^87^^cc^^83j^^cc^^87^^cc^^80j^^cc^^87^^cc^^81j^^cc^^87^^cc^^83^^c4^^af^^cc^^87^^cc^^80^^c4^^af^^cc^^87^^cc^^81^^c4^^af^^cc^^87^^cc^^83
 ============================================================
 ============================================================
@@ -280,7 +280,7 @@ Ijsselmeer
 IJsselmeer
 Ijsselmeer
 IJsselmeer
-Ijsselmeer
+IJsselmeer
 Im
 Im
 ============================================================
@@ -295,11 +295,11 @@ TEST 23: Case changing braced arguments
 ============================================================
 foo \emph {BAR} {baz}
 FOO \emph {BAR} {BAZ}
-Foo \emph {BAR} {baz}
+FOO \emph {BAR} {BAZ}
 FOO \emph {BAR} {BAZ}
 \emph {BAR} {baz}
 \emph {BAR} {BAZ}
-\emph {BAR} {Baz}
+\emph {BAR} {BAZ}
 \emph {BAR} {BAZ}
 ============================================================
 ============================================================
@@ -307,7 +307,7 @@ TEST 24: Expanding content
 ============================================================
 some text hello
 SOME TEXT HELLO
-Some text hello
+Some text Hello
 Some text Hello
 hello sometext
 HELLO SOMETEXT
@@ -315,7 +315,7 @@ Hello sometext
 Hello sometext
 some text hello
 SOME TEXT HELLO
-Some text hello
+Some text Hello
 Some text Hello
 hello sometext
 HELLO SOMETEXT
@@ -359,7 +359,7 @@ TEST 27: Letter-like commands
 ============================================================
 \aa \aa \ae \dh \ss \l \o 
 \AA \AA \AE \DH \SS \L \O 
-\AA \aa \ae \dh \ss \l \o 
+\AA \aa \ae \dh \ss \l \O 
 \AA \aa \ae \dh \ss \l \O 
 ============================================================
 ============================================================
@@ -398,7 +398,7 @@ Title
 Title
 WORDS lower
 words UPPER
-Words UPPER
+Words \text_case_switch:nnnn {normal}{lower}{UPPER}{Title}
 Words \text_case_switch:nnnn {normal}{lower}{UPPER}{Title}
 ============================================================
 ============================================================
diff --git a/l3kernel/testfiles/m3text002.tlg b/l3kernel/testfiles/m3text002.tlg
index 69703cd55..9df35fe57 100644
--- a/l3kernel/testfiles/m3text002.tlg
+++ b/l3kernel/testfiles/m3text002.tlg
@@ -30,15 +30,15 @@ TEST 4: Titlecase basics
 ============================================================
 Hello world
 Hello world
-Hello world
 HELLO WORLD
-" Hello world"
+HELLO WORLD
 " Hello world"
 " Hello world"
 " HELLO WORLD"
+" HELLO WORLD"
 {H}ello world
 {H}ello world
-{H}ello world
+{H}ELLO WORLD
 {H}ELLO WORLD
 {}hello world
 {}hello world
@@ -58,21 +58,21 @@ TEST 5: Titlecase skipping chars
 ============================================================
 TEST 6: Titlecase first
 ============================================================
-`Hic sunt leones'
 `Hic SUNT leones'
-`Hic sunt leones'
+`Hic SUNT leones'
+`HIC SUNT leones'
 `HIC SUNT leones'
-E pluribus unum
+E PLURIBUS UNUM
 E PLURIBUS UNUM
 ============================================================
 ============================================================
 TEST 7: Titlecase control
 ============================================================
-`hic sunt leones'
 `hic SUNT leones'
-`hic sunt leones'
+`hic SUNT leones'
 `HIC SUNT leones'
-E pluribus unum
+`HIC SUNT leones'
+E PLURIBUS UNUM
 E PLURIBUS UNUM
 ============================================================
 ============================================================
@@ -92,7 +92,7 @@ TEST 9: (u)pTeX-based tests
 ============================================================
 abc^^c3^^a8^^e6^^97^^a5^^e6^^9c^^ac^^e8^^aa^^9e
 ABC^^c3^^88^^e6^^97^^a5^^e6^^9c^^ac^^e8^^aa^^9e
-Abc^^c3^^a8^^e6^^97^^a5^^e6^^9c^^ac^^e8^^aa^^9e
+ABC^^c3^^88^^e6^^97^^a5^^e6^^9c^^ac^^e8^^aa^^9e
 ABC^^c3^^88^^e6^^97^^a5^^e6^^9c^^ac^^e8^^aa^^9e
 ^^e4^^b8^^80^^e7^^ba^^a7^^e6^^a0^^87^^e9^^a2^^98
 ^^e4^^b8^^80^^e7^^ba^^a7^^e6^^a0^^87^^e9^^a2^^98
@@ -104,7 +104,7 @@ TEST 10: Unicode case changing
 ============================================================
 ^^c3^^a5^^c3^^a9^^c3^^ae^^c3^^b8^^e1^^bd^^a5^^d0^^b4^^ce^^b1^^c9^^9b
 ^^c3^^85^^c3^^89^^c3^^8e^^c3^^98^^e1^^bd^^ad^^d0^^94^^ce^^91^^c6^^90
-^^c3^^85^^c3^^a9^^c3^^ae^^c3^^b8^^e1^^bd^^a5^^d0^^b4^^ce^^b1^^c9^^9b
+^^c3^^85^^c3^^a9^^c3^^ae^^c3^^b8^^e1^^bd^^ad^^d0^^b4^^ce^^b1^^c6^^90
 ^^c3^^85^^c3^^a9^^c3^^ae^^c3^^b8^^e1^^bd^^ad^^d0^^b4^^ce^^b1^^c6^^90
 ============================================================
 ============================================================
@@ -120,11 +120,11 @@ TEST 12: The final sigma rule
 ============================================================
 ^^e1^^bd^^80^^ce^^b4^^cf^^85^^cf^^83^^cf^^83^^ce^^b5^^cf^^8d^^cf^^82 (^^e1^^bd^^80^^ce^^b4^^cf^^85^^cf^^83^^cf^^83^^ce^^b5^^cf^^8d^^cf^^82) ^^e1^^bd^^80^^ce^^b4^^cf^^85^^cf^^83^^cf^^83^^ce^^b5^^cf^^8d^^cf^^82, ^^e1^^bd^^80^^ce^^b4^^cf^^85^^cf^^83^^cf^^83^^ce^^b5^^cf^^8d^^cf^^82{} ^^e1^^bd^^80^^ce^^b4^^cf^^85^^cf^^83^^cf^^83^^ce^^b5^^cf^^8d^^cf^^82\noop 
 ^^e1^^bd^^88^^ce^^94^^ce^^a5^^ce^^a3^^ce^^a3^^ce^^95^^ce^^8e^^ce^^a3 (^^e1^^bd^^88^^ce^^94^^ce^^a5^^ce^^a3^^ce^^a3^^ce^^95^^ce^^8e^^ce^^a3) ^^e1^^bd^^88^^ce^^94^^ce^^a5^^ce^^a3^^ce^^a3^^ce^^95^^ce^^8e^^ce^^a3, ^^e1^^bd^^88^^ce^^94^^ce^^a5^^ce^^a3^^ce^^a3^^ce^^95^^ce^^8e^^ce^^a3{} ^^e1^^bd^^88^^ce^^94^^ce^^a5^^ce^^a3^^ce^^a3^^ce^^95^^ce^^8e^^ce^^a3\noop 
-^^e1^^bd^^88^^ce^^b4^^cf^^85^^cf^^83^^cf^^83^^ce^^b5^^cf^^8d^^cf^^82 (^^e1^^bd^^80^^ce^^b4^^cf^^85^^cf^^83^^cf^^83^^ce^^b5^^cf^^8d^^cf^^82) ^^e1^^bd^^80^^ce^^b4^^cf^^85^^cf^^83^^cf^^83^^ce^^b5^^cf^^8d^^cf^^82, ^^e1^^bd^^80^^ce^^b4^^cf^^85^^cf^^83^^cf^^83^^ce^^b5^^cf^^8d^^cf^^82{} ^^e1^^bd^^80^^ce^^b4^^cf^^85^^cf^^83^^cf^^83^^ce^^b5^^cf^^8d^^cf^^82\noop 
+^^e1^^bd^^88^^ce^^94^^ce^^a5^^ce^^a3^^ce^^a3^^ce^^95^^ce^^8e^^ce^^a3 (^^e1^^bd^^88^^ce^^94^^ce^^a5^^ce^^a3^^ce^^a3^^ce^^95^^ce^^8e^^ce^^a3) ^^e1^^bd^^88^^ce^^94^^ce^^a5^^ce^^a3^^ce^^a3^^ce^^95^^ce^^8e^^ce^^a3, ^^e1^^bd^^88^^ce^^94^^ce^^a5^^ce^^a3^^ce^^a3^^ce^^95^^ce^^8e^^ce^^a3{} ^^e1^^bd^^88^^ce^^94^^ce^^a5^^ce^^a3^^ce^^a3^^ce^^95^^ce^^8e^^ce^^a3\noop 
 ^^e1^^bd^^88^^ce^^94^^ce^^a5^^ce^^a3^^ce^^a3^^ce^^95^^ce^^8e^^ce^^a3 (^^e1^^bd^^88^^ce^^94^^ce^^a5^^ce^^a3^^ce^^a3^^ce^^95^^ce^^8e^^ce^^a3) ^^e1^^bd^^88^^ce^^94^^ce^^a5^^ce^^a3^^ce^^a3^^ce^^95^^ce^^8e^^ce^^a3, ^^e1^^bd^^88^^ce^^94^^ce^^a5^^ce^^a3^^ce^^a3^^ce^^95^^ce^^8e^^ce^^a3{} ^^e1^^bd^^88^^ce^^94^^ce^^a5^^ce^^a3^^ce^^a3^^ce^^95^^ce^^8e^^ce^^a3\noop 
 ^^e1^^bd^^80^^ce^^b4^^cf^^85^^cf^^83^^cf^^83^^ce^^b5^^cf^^8d^^cf^^82
 ^^e1^^bd^^88^^ce^^94^^ce^^a5^^ce^^a3^^ce^^a3^^ce^^95^^ce^^8e^^ce^^a3
-^^e1^^bd^^88^^ce^^b4^^cf^^85^^cf^^83^^cf^^83^^ce^^b5^^cf^^8d^^cf^^82
+^^e1^^bd^^88^^ce^^94^^ce^^a5^^ce^^a3^^ce^^a3^^ce^^95^^ce^^8e^^ce^^a3
 ^^e1^^bd^^88^^ce^^94^^ce^^a5^^ce^^a3^^ce^^a3^^ce^^95^^ce^^8e^^ce^^a3
 ============================================================
 ============================================================
@@ -132,7 +132,7 @@ TEST 13: Cyrillic
 ============================================================
 ^^d0^^b4^^d0^^be^^d0^^ba^^d0^^bb^^d0^^b0^^d0^^b4^^d1^^8b ^^d0^^b0^^d0^^ba^^d0^^b0^^d0^^b4^^d0^^b5^^d0^^bc^^d0^^b8^^d0^^b8 ^^d0^^bd^^d0^^b0^^d1^^83^^d0^^ba
 ^^d0^^94^^d0^^9e^^d0^^9a^^d0^^9b^^d0^^90^^d0^^94^^d0^^ab ^^d0^^90^^d0^^9a^^d0^^90^^d0^^94^^d0^^95^^d0^^9c^^d0^^98^^d0^^98 ^^d0^^9d^^d0^^90^^d0^^a3^^d0^^9a
-^^d0^^94^^d0^^be^^d0^^ba^^d0^^bb^^d0^^b0^^d0^^b4^^d1^^8b ^^d0^^b0^^d0^^ba^^d0^^b0^^d0^^b4^^d0^^b5^^d0^^bc^^d0^^b8^^d0^^b8 ^^d0^^bd^^d0^^b0^^d1^^83^^d0^^ba
+^^d0^^94^^d0^^be^^d0^^ba^^d0^^bb^^d0^^b0^^d0^^b4^^d1^^8b ^^d0^^90^^d0^^ba^^d0^^b0^^d0^^b4^^d0^^b5^^d0^^bc^^d0^^b8^^d0^^b8 ^^d0^^bd^^d0^^b0^^d1^^83^^d0^^ba
 ^^d0^^94^^d0^^be^^d0^^ba^^d0^^bb^^d0^^b0^^d0^^b4^^d1^^8b ^^d0^^90^^d0^^ba^^d0^^b0^^d0^^b4^^d0^^b5^^d0^^bc^^d0^^b8^^d0^^b8 ^^d0^^bd^^d0^^b0^^d1^^83^^d0^^ba
 ============================================================
 ============================================================
@@ -193,8 +193,8 @@ TEST 17: Greek
 ^^ce^^a4^^ce^^9f ^^ce^^95^^ce^^9d^^ce^^91 ^^ce^^89 ^^ce^^a4^^ce^^9f ^^ce^^91^^ce^^9b^^ce^^9b^^ce^^9f.
 ^^ce^^a1^^ce^^a9^^ce^^9c^^ce^^88^^ce^^99^^ce^^9a^^ce^^91
 ^^ce^^a1^^ce^^a9^^ce^^9c^^ce^^95^^ce^^aa^^ce^^9a^^ce^^91
-^^e1^^bd^^88^^ce^^b4^^cf^^85^^cf^^83^^cf^^83^^ce^^b5^^cf^^8d^^cf^^82
-^^e1^^bd^^88^^ce^^b4^^cf^^85^^cf^^83^^cf^^83^^ce^^b5^^cf^^8d^^cf^^82
+^^e1^^bd^^88^^ce^^94^^ce^^a5^^ce^^a3^^ce^^a3^^ce^^95^^ce^^8e^^ce^^a3
+^^e1^^bd^^88^^ce^^94^^ce^^a5^^ce^^a3^^ce^^a3^^ce^^95^^ce^^8e^^ce^^a3
 ^^ce^^89^^ce^^99
 ^^e1^^bf^^8c
 ^^ce^^97^^ce^^99
@@ -243,10 +243,10 @@ rag^^c4^^b1p hul^^c3^^bbsi ^^c3^^b6zdem
 ragip hul^^c3^^bbsi^^cc^^87 ^^c3^^b6zdem
 RAGIP HUL^^c3^^9bS^^c4^^b0 ^^c3^^96ZDEM
 RAGIP HUL^^c3^^9bSI ^^c3^^96ZDEM
-Rag^^c4^^b1p hul^^c3^^bbsi ^^c3^^b6zdem
-Rag^^c4^^b1p hul^^c3^^bbsi ^^c3^^b6zdem
-Ip hul^^c3^^bbsi ^^c3^^b6zdem
-Ip hul^^c3^^bbsi ^^c3^^b6zdem
+Rag^^c4^^b1p Hul^^c3^^bbsi ^^c3^^96zdem
+Rag^^c4^^b1p Hul^^c3^^bbsi ^^c3^^96zdem
+Ip Hul^^c3^^bbsi ^^c3^^96zdem
+Ip Hul^^c3^^bbsi ^^c3^^96zdem
 ============================================================
 ============================================================
 TEST 19: Lithuanian
@@ -255,9 +255,9 @@ i^^cc^^87^^cc^^80i^^cc^^87^^cc^^81i^^cc^^87^^cc^^83i^^cc^^87^^cc^^80i^^cc^^87^^c
 ^^c3^^ac^^c3^^ad^^c4^^a9i^^cc^^80i^^cc^^81i^^cc^^83j^^cc^^80j^^cc^^81j^^cc^^83^^c4^^af^^cc^^80^^c4^^af^^cc^^81^^c4^^af^^cc^^83
 I^^cc^^80I^^cc^^80I^^cc^^83I^^cc^^80I^^cc^^81I^^cc^^83J^^cc^^80J^^cc^^81J^^cc^^83^^c4^^ae^^cc^^80^^c4^^ae^^cc^^81^^c4^^ae^^cc^^83
 I^^cc^^87^^cc^^80I^^cc^^87^^cc^^80I^^cc^^87^^cc^^83I^^cc^^87^^cc^^80I^^cc^^87^^cc^^81I^^cc^^87^^cc^^83J^^cc^^87^^cc^^80J^^cc^^87^^cc^^81J^^cc^^87^^cc^^83^^c4^^ae^^cc^^87^^cc^^80^^c4^^ae^^cc^^87^^cc^^81^^c4^^ae^^cc^^87^^cc^^83
-^^c3^^8ci^^cc^^87^^cc^^81i^^cc^^87^^cc^^83i^^cc^^87^^cc^^80i^^cc^^87^^cc^^81i^^cc^^87^^cc^^83j^^cc^^87^^cc^^80j^^cc^^87^^cc^^81j^^cc^^87^^cc^^83^^c4^^af^^cc^^87^^cc^^80^^c4^^af^^cc^^87^^cc^^81^^c4^^af^^cc^^87^^cc^^83
+^^c3^^8c^^c3^^8d^^c4^^a8I^^cc^^80I^^cc^^81I^^cc^^83J^^cc^^80J^^cc^^81J^^cc^^83^^c4^^ae^^cc^^80^^c4^^ae^^cc^^81^^c4^^ae^^cc^^83
 I^^cc^^80i^^cc^^87^^cc^^80i^^cc^^87^^cc^^83i^^cc^^87^^cc^^80i^^cc^^87^^cc^^81i^^cc^^87^^cc^^83j^^cc^^87^^cc^^80j^^cc^^87^^cc^^81j^^cc^^87^^cc^^83^^c4^^af^^cc^^87^^cc^^80^^c4^^af^^cc^^87^^cc^^81^^c4^^af^^cc^^87^^cc^^83
-^^c3^^8c^^c3^^ad^^c4^^a9i^^cc^^80i^^cc^^81i^^cc^^83j^^cc^^80j^^cc^^81j^^cc^^83^^c4^^af^^cc^^80^^c4^^af^^cc^^81^^c4^^af^^cc^^83
+^^c3^^8c^^c3^^8d^^c4^^a8I^^cc^^80I^^cc^^81I^^cc^^83J^^cc^^80J^^cc^^81J^^cc^^83^^c4^^ae^^cc^^80^^c4^^ae^^cc^^81^^c4^^ae^^cc^^83
 I^^cc^^87^^cc^^80i^^cc^^87^^cc^^80i^^cc^^87^^cc^^83i^^cc^^87^^cc^^80i^^cc^^87^^cc^^81i^^cc^^87^^cc^^83j^^cc^^87^^cc^^80j^^cc^^87^^cc^^81j^^cc^^87^^cc^^83^^c4^^af^^cc^^87^^cc^^80^^c4^^af^^cc^^87^^cc^^81^^c4^^af^^cc^^87^^cc^^83
 ============================================================
 ============================================================
@@ -280,7 +280,7 @@ Ijsselmeer
 IJsselmeer
 Ijsselmeer
 IJsselmeer
-Ijsselmeer
+IJsselmeer
 Im
 Im
 ============================================================
@@ -295,11 +295,11 @@ TEST 23: Case changing braced arguments
 ============================================================
 foo \emph {BAR} {baz}
 FOO \emph {BAR} {BAZ}
-Foo \emph {BAR} {baz}
+FOO \emph {BAR} {BAZ}
 FOO \emph {BAR} {BAZ}
 \emph {BAR} {baz}
 \emph {BAR} {BAZ}
-\emph {BAR} {Baz}
+\emph {BAR} {BAZ}
 \emph {BAR} {BAZ}
 ============================================================
 ============================================================
@@ -307,7 +307,7 @@ TEST 24: Expanding content
 ============================================================
 some text hello
 SOME TEXT HELLO
-Some text hello
+Some text Hello
 Some text Hello
 hello sometext
 HELLO SOMETEXT
@@ -315,7 +315,7 @@ Hello sometext
 Hello sometext
 some text hello
 SOME TEXT HELLO
-Some text hello
+Some text Hello
 Some text Hello
 hello sometext
 HELLO SOMETEXT
@@ -359,7 +359,7 @@ TEST 27: Letter-like commands
 ============================================================
 \aa \aa \ae \dh \ss \l \o 
 \AA \AA \AE \DH \SS \L \O 
-\AA \aa \ae \dh \ss \l \o 
+\AA \aa \ae \dh \ss \l \O 
 \AA \aa \ae \dh \ss \l \O 
 ============================================================
 ============================================================
@@ -398,7 +398,7 @@ Title
 Title
 WORDS lower
 words UPPER
-Words UPPER
+Words \text_case_switch:nnnn {normal}{lower}{UPPER}{Title}
 Words \text_case_switch:nnnn {normal}{lower}{UPPER}{Title}
 ============================================================
 ============================================================
diff --git a/l3kernel/testfiles/m3text002.uptex.tlg b/l3kernel/testfiles/m3text002.uptex.tlg
index ef93129e6..7d5fefd05 100644
--- a/l3kernel/testfiles/m3text002.uptex.tlg
+++ b/l3kernel/testfiles/m3text002.uptex.tlg
@@ -30,15 +30,15 @@ TEST 4: Titlecase basics
 ============================================================
 Hello world
 Hello world
-Hello world
 HELLO WORLD
-" Hello world"
+HELLO WORLD
 " Hello world"
 " Hello world"
 " HELLO WORLD"
+" HELLO WORLD"
 {H}ello world
 {H}ello world
-{H}ello world
+{H}ELLO WORLD
 {H}ELLO WORLD
 {}hello world
 {}hello world
@@ -58,21 +58,21 @@ TEST 5: Titlecase skipping chars
 ============================================================
 TEST 6: Titlecase first
 ============================================================
-`Hic sunt leones'
 `Hic SUNT leones'
-`Hic sunt leones'
+`Hic SUNT leones'
+`HIC SUNT leones'
 `HIC SUNT leones'
-E pluribus unum
+E PLURIBUS UNUM
 E PLURIBUS UNUM
 ============================================================
 ============================================================
 TEST 7: Titlecase control
 ============================================================
-`hic sunt leones'
 `hic SUNT leones'
-`hic sunt leones'
+`hic SUNT leones'
+`HIC SUNT leones'
 `HIC SUNT leones'
-E pluribus unum
+E PLURIBUS UNUM
 E PLURIBUS UNUM
 ============================================================
 ============================================================
@@ -92,7 +92,7 @@ TEST 9: (u)pTeX-based tests
 ============================================================
 abc^^c3^^a8日本語
 ABC^^c3^^88日本語
-Abc^^c3^^a8日本語
+ABC^^c3^^88日本語
 ABC^^c3^^88日本語
 一级标题
 一级标题
@@ -104,7 +104,7 @@ TEST 10: Unicode case changing
 ============================================================
 ^^c3^^a5^^c3^^a9^^c3^^ae^^c3^^b8^^e1^^bd^^a5дα^^c9^^9b
 ^^c3^^85^^c3^^89^^c3^^8e^^c3^^98Ὥ^^d0^^94^^ce^^91^^c6^^90
-^^c3^^85^^c3^^a9^^c3^^ae^^c3^^b8^^e1^^bd^^a5дα^^c9^^9b
+^^c3^^85^^c3^^a9^^c3^^ae^^c3^^b8Ὥдα^^c6^^90
 ^^c3^^85^^c3^^a9^^c3^^ae^^c3^^b8Ὥдα^^c6^^90
 ============================================================
 ============================================================
@@ -120,7 +120,7 @@ TEST 12: The final sigma rule
 ============================================================
 ^^e1^^bd^^80^^ce^^b4^^cf^^85^^cf^^82^^cf^^82^^ce^^b5^^cf^^8d^^cf^^82 (^^e1^^bd^^80^^ce^^b4^^cf^^85^^cf^^82^^cf^^82^^ce^^b5^^cf^^8d^^cf^^82) ^^e1^^bd^^80^^ce^^b4^^cf^^85^^cf^^82^^cf^^82^^ce^^b5^^cf^^8d^^cf^^82, ^^e1^^bd^^80^^ce^^b4^^cf^^85^^cf^^82^^cf^^82^^ce^^b5^^cf^^8d^^cf^^82{} ^^e1^^bd^^80^^ce^^b4^^cf^^85^^cf^^82^^cf^^82^^ce^^b5^^cf^^8d^^cf^^82\noop 
 ὈΔΥΣΣΕΎΣ (ὈΔΥΣΣΕΎΣ) ὈΔΥΣΣΕΎΣ, ὈΔΥΣΣΕΎΣ{} ὈΔΥΣΣΕΎΣ\noop 
-ὈΔΥΣΣΕΎΣ (ὈΔΥΣΣΕΎΣ) ὈΔΥΣΣΕΎΣ, ὈΔΥΣΣΕΎΣ{} ^^e1^^bd^^80^^ce^^b4^^cf^^85^^cf^^82^^cf^^82^^ce^^b5^^cf^^8d^^cf^^82\noop 
+ὈΔΥΣΣΕΎΣ (ὈΔΥΣΣΕΎΣ) ὈΔΥΣΣΕΎΣ, ὈΔΥΣΣΕΎΣ{} ὈΔΥΣΣΕΎΣ\noop 
 ὈΔΥΣΣΕΎΣ (ὈΔΥΣΣΕΎΣ) ὈΔΥΣΣΕΎΣ, ὈΔΥΣΣΕΎΣ{} ὈΔΥΣΣΕΎΣ\noop 
 ^^e1^^bd^^80^^ce^^b4^^cf^^85^^cf^^82^^cf^^82^^ce^^b5^^cf^^8d^^cf^^82
 ὈΔΥΣΣΕΎΣ
@@ -243,10 +243,10 @@ rag^^c4^^b1p hul^^c3^^bbsi ^^c3^^b6zdem
 ragip hul^^c3^^bbsi^^cc^^87 ^^c3^^b6zdem
 RAGIP HUL^^c3^^9bS^^c4^^b0 ^^c3^^96ZDEM
 RAGIP HUL^^c3^^9bSI ^^c3^^96ZDEM
-Rag^^c4^^b1p hul^^c3^^bbsi ^^c3^^b6zdem
-Rag^^c4^^b1p hul^^c3^^bbsi ^^c3^^b6zdem
-Ip hul^^c3^^bbsi ^^c3^^b6zdem
-Ip hul^^c3^^bbsi ^^c3^^b6zdem
+Rag^^c4^^b1p Hul^^c3^^bbsi ^^c3^^96zdem
+Rag^^c4^^b1p Hul^^c3^^bbsi ^^c3^^96zdem
+Ip Hul^^c3^^bbsi ^^c3^^96zdem
+Ip Hul^^c3^^bbsi ^^c3^^96zdem
 ============================================================
 ============================================================
 TEST 19: Lithuanian
@@ -255,9 +255,9 @@ i^^cc^^87^^cc^^80i^^cc^^87^^cc^^81i^^cc^^87^^cc^^83i^^cc^^87̀i^^cc^^87́i^^cc^^
 ^^c3^^ac^^c3^^ad^^c4^^a9ìíĩj̀j́j̃^^c4^^af̀^^c4^^af́^^c4^^af̃
 ÌÌĨÌÍĨJ̀J́J̃^^c4^^aè^^c4^^aé^^c4^^aẽ
 İ̀İ̀İ̃İ̀İ́İ̃J̇̀J̇́J̇̃^^c4^^aė̀^^c4^^aė́^^c4^^aė̃
-^^c3^^8ci^^cc^^87^^cc^^81i^^cc^^87^^cc^^83i^^cc^^87̀i^^cc^^87́i^^cc^^87̃j^^cc^^87̀j^^cc^^87́j^^cc^^87̃^^c4^^af^^cc^^87̀^^c4^^af^^cc^^87́^^c4^^af^^cc^^87̃
+^^c3^^8c^^c3^^8d^^c4^^a8ÌÍĨJ̀J́J̃^^c4^^aè^^c4^^aé^^c4^^aẽ
 Ìi̇̀i̇̃i̇̀i̇́i̇̃j̇̀j̇́j̇̃^^c4^^aḟ̀^^c4^^aḟ́^^c4^^aḟ̃
-^^c3^^8c^^c3^^ad^^c4^^a9ìíĩj̀j́j̃^^c4^^af̀^^c4^^af́^^c4^^af̃
+^^c3^^8c^^c3^^8d^^c4^^a8ÌÍĨJ̀J́J̃^^c4^^aè^^c4^^aé^^c4^^aẽ
 İ̀i̇̀i̇̃i̇̀i̇́i̇̃j̇̀j̇́j̇̃^^c4^^aḟ̀^^c4^^aḟ́^^c4^^aḟ̃
 ============================================================
 ============================================================
@@ -280,7 +280,7 @@ Ijsselmeer
 IJsselmeer
 Ijsselmeer
 IJsselmeer
-Ijsselmeer
+IJsselmeer
 Im
 Im
 ============================================================
@@ -295,11 +295,11 @@ TEST 23: Case changing braced arguments
 ============================================================
 foo \emph {BAR} {baz}
 FOO \emph {BAR} {BAZ}
-Foo \emph {BAR} {baz}
+FOO \emph {BAR} {BAZ}
 FOO \emph {BAR} {BAZ}
 \emph {BAR} {baz}
 \emph {BAR} {BAZ}
-\emph {BAR} {Baz}
+\emph {BAR} {BAZ}
 \emph {BAR} {BAZ}
 ============================================================
 ============================================================
@@ -307,7 +307,7 @@ TEST 24: Expanding content
 ============================================================
 some text hello
 SOME TEXT HELLO
-Some text hello
+Some text Hello
 Some text Hello
 hello sometext
 HELLO SOMETEXT
@@ -315,7 +315,7 @@ Hello sometext
 Hello sometext
 some text hello
 SOME TEXT HELLO
-Some text hello
+Some text Hello
 Some text Hello
 hello sometext
 HELLO SOMETEXT
@@ -359,7 +359,7 @@ TEST 27: Letter-like commands
 ============================================================
 \aa \aa \ae \dh \ss \l \o 
 \AA \AA \AE \DH \SS \L \O 
-\AA \aa \ae \dh \ss \l \o 
+\AA \aa \ae \dh \ss \l \O 
 \AA \aa \ae \dh \ss \l \O 
 ============================================================
 ============================================================
@@ -398,7 +398,7 @@ Title
 Title
 WORDS lower
 words UPPER
-Words UPPER
+Words \text_case_switch:nnnn {normal}{lower}{UPPER}{Title}
 Words \text_case_switch:nnnn {normal}{lower}{UPPER}{Title}
 ============================================================
 ============================================================
diff --git a/l3kernel/testfiles/m3text002.xetex.tlg b/l3kernel/testfiles/m3text002.xetex.tlg
index ff99417fa..990af5a9a 100644
--- a/l3kernel/testfiles/m3text002.xetex.tlg
+++ b/l3kernel/testfiles/m3text002.xetex.tlg
@@ -30,15 +30,15 @@ TEST 4: Titlecase basics
 ============================================================
 Hello world
 Hello world
-Hello world
 HELLO WORLD
-" Hello world"
+HELLO WORLD
 " Hello world"
 " Hello world"
 " HELLO WORLD"
+" HELLO WORLD"
 {H}ello world
 {H}ello world
-{H}ello world
+{H}ELLO WORLD
 {H}ELLO WORLD
 {}hello world
 {}hello world
@@ -58,21 +58,21 @@ TEST 5: Titlecase skipping chars
 ============================================================
 TEST 6: Titlecase first
 ============================================================
-`Hic sunt leones'
 `Hic SUNT leones'
-`Hic sunt leones'
+`Hic SUNT leones'
+`HIC SUNT leones'
 `HIC SUNT leones'
-E pluribus unum
+E PLURIBUS UNUM
 E PLURIBUS UNUM
 ============================================================
 ============================================================
 TEST 7: Titlecase control
 ============================================================
-`hic sunt leones'
 `hic SUNT leones'
-`hic sunt leones'
+`hic SUNT leones'
 `HIC SUNT leones'
-E pluribus unum
+`HIC SUNT leones'
+E PLURIBUS UNUM
 E PLURIBUS UNUM
 ============================================================
 ============================================================
@@ -92,7 +92,7 @@ TEST 9: (u)pTeX-based tests
 ============================================================
 abc^^e8日本語
 ABC^^c8日本語
-Abc^^e8日本語
+ABC^^c8日本語
 ABC^^c8日本語
 一级标题
 一级标题
@@ -104,7 +104,7 @@ TEST 10: Unicode case changing
 ============================================================
 ^^e5^^e9^^ee^^f8ὥдαɛ
 ^^c5^^c9^^ce^^d8ὭДΑƐ
-^^c5^^e9^^ee^^f8ὥдαɛ
+^^c5^^e9^^ee^^f8ὭдαƐ
 ^^c5^^e9^^ee^^f8ὭдαƐ
 ============================================================
 ============================================================
@@ -120,11 +120,11 @@ TEST 12: The final sigma rule
 ============================================================
 ὀδυσσεύς (ὀδυσσεύς) ὀδυσσεύς, ὀδυσσεύς{} ὀδυσσεύς\noop 
 ὈΔΥΣΣΕΎΣ (ὈΔΥΣΣΕΎΣ) ὈΔΥΣΣΕΎΣ, ὈΔΥΣΣΕΎΣ{} ὈΔΥΣΣΕΎΣ\noop 
-Ὀδυσσεύς (ὀδυσσεύς) ὀδυσσεύς, ὀδυσσεύς{} ὀδυσσεύς\noop 
+ὈΔΥΣΣΕΎΣ (ὈΔΥΣΣΕΎΣ) ὈΔΥΣΣΕΎΣ, ὈΔΥΣΣΕΎΣ{} ὈΔΥΣΣΕΎΣ\noop 
 ὈΔΥΣΣΕΎΣ (ὈΔΥΣΣΕΎΣ) ὈΔΥΣΣΕΎΣ, ὈΔΥΣΣΕΎΣ{} ὈΔΥΣΣΕΎΣ\noop 
 ὀδυσσεύς
 ὈΔΥΣΣΕΎΣ
-Ὀδυσσεύς
+ὈΔΥΣΣΕΎΣ
 ὈΔΥΣΣΕΎΣ
 ============================================================
 ============================================================
@@ -132,7 +132,7 @@ TEST 13: Cyrillic
 ============================================================
 доклады академии наук
 ДОКЛАДЫ АКАДЕМИИ НАУК
-Доклады академии наук
+Доклады Академии наук
 Доклады Академии наук
 ============================================================
 ============================================================
@@ -193,8 +193,8 @@ TEST 17: Greek
 ΤΟ ΕΝΑ Ή ΤΟ ΑΛΛΟ.
 ΡΩΜΈΙΚΑ
 ΡΩΜΕΪΚΑ
-Ὀδυσσεύς
-Ὀδυσσεύς
+ὈΔΥΣΣΕΎΣ
+ὈΔΥΣΣΕΎΣ
 ΉΙ
 ῌ
 ΗΙ
@@ -243,10 +243,10 @@ ragıp hul^^fbsi ^^f6zdem
 ragip hul^^fbsi̇ ^^f6zdem
 RAGIP HUL^^dbSİ ^^d6ZDEM
 RAGIP HUL^^dbSI ^^d6ZDEM
-Ragıp hul^^fbsi ^^f6zdem
-Ragıp hul^^fbsi ^^f6zdem
-Ip hul^^fbsi ^^f6zdem
-Ip hul^^fbsi ^^f6zdem
+Ragıp Hul^^fbsi ^^d6zdem
+Ragıp Hul^^fbsi ^^d6zdem
+Ip Hul^^fbsi ^^d6zdem
+Ip Hul^^fbsi ^^d6zdem
 ============================================================
 ============================================================
 TEST 19: Lithuanian
@@ -255,9 +255,9 @@ i̇̀i̇́i̇̃i̇̀i̇́i̇̃j̇̀j̇́j̇̃į̇̀į̇́į̇̃
 ^^ec^^edĩìíĩj̀j́j̃į̀į́į̃
 ÌÌĨÌÍĨJ̀J́J̃Į̀Į́Į̃
 İ̀İ̀İ̃İ̀İ́İ̃J̇̀J̇́J̇̃Į̇̀Į̇́Į̇̃
-^^cci̇́i̇̃i̇̀i̇́i̇̃j̇̀j̇́j̇̃į̇̀į̇́į̇̃
+^^cc^^cdĨÌÍĨJ̀J́J̃Į̀Į́Į̃
 Ìi̇̀i̇̃i̇̀i̇́i̇̃j̇̀j̇́j̇̃į̇̀į̇́į̇̃
-^^cc^^edĩìíĩj̀j́j̃į̀į́į̃
+^^cc^^cdĨÌÍĨJ̀J́J̃Į̀Į́Į̃
 İ̀i̇̀i̇̃i̇̀i̇́i̇̃j̇̀j̇́j̇̃į̇̀į̇́į̇̃
 ============================================================
 ============================================================
@@ -280,7 +280,7 @@ Ijsselmeer
 IJsselmeer
 Ijsselmeer
 IJsselmeer
-Ijsselmeer
+IJsselmeer
 Im
 Im
 ============================================================
@@ -295,11 +295,11 @@ TEST 23: Case changing braced arguments
 ============================================================
 foo \emph {BAR} {baz}
 FOO \emph {BAR} {BAZ}
-Foo \emph {BAR} {baz}
+FOO \emph {BAR} {BAZ}
 FOO \emph {BAR} {BAZ}
 \emph {BAR} {baz}
 \emph {BAR} {BAZ}
-\emph {BAR} {Baz}
+\emph {BAR} {BAZ}
 \emph {BAR} {BAZ}
 ============================================================
 ============================================================
@@ -307,7 +307,7 @@ TEST 24: Expanding content
 ============================================================
 some text hello
 SOME TEXT HELLO
-Some text hello
+Some text Hello
 Some text Hello
 hello sometext
 HELLO SOMETEXT
@@ -315,7 +315,7 @@ Hello sometext
 Hello sometext
 some text hello
 SOME TEXT HELLO
-Some text hello
+Some text Hello
 Some text Hello
 hello sometext
 HELLO SOMETEXT
@@ -359,7 +359,7 @@ TEST 27: Letter-like commands
 ============================================================
 \aa \aa \ae \dh \ss \l \o 
 \AA \AA \AE \DH \SS \L \O 
-\AA \aa \ae \dh \ss \l \o 
+\AA \aa \ae \dh \ss \l \O 
 \AA \aa \ae \dh \ss \l \O 
 ============================================================
 ============================================================
@@ -398,7 +398,7 @@ Title
 Title
 WORDS lower
 words UPPER
-Words UPPER
+Words \text_case_switch:nnnn {normal}{lower}{UPPER}{Title}
 Words \text_case_switch:nnnn {normal}{lower}{UPPER}{Title}
 ============================================================
 ============================================================





More information about the latex3-commits mailing list.